不同类型游戏后台架构的思考

发表于2015-04-29
评论3 2.2k浏览

想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏程序行业精英群

711501594

目前接触的游戏主要有两类:分区分服,全区全服。

 

分区分服:如果从后台架构上做区分,分区分服特点:

1.          每个服都有各自独立的DB;

2.          数据不互通(除非业务做跨服数据的玩法);

 

不同业务有着不同分区分服方式:

分区

1.          对网络有特别要求的游戏,可能会是针对国内运营商网络环境进行分区,有电信区,网通区等等,比如LOL,QQ飞车;

2.          针对游戏世界观分区,比如部落守卫战;

3.          上公司平台的游戏,还会针对不同平台进行分区,比如QZone,QQGame大区等等;

分服

个人接触的分配方式原则:

1.          单服承载上限;

2.          从运营角度考虑,每个服的注册玩家,活跃玩家,这点在目前很多页游上尤其明显,经常使用滚服的模式来让RMB玩家在开服阶段确立优势,所有这些游戏开服频率非常高,当然合服频率也非常高;

分区分服的架构成熟简单,一般是个三层架构,如图,是一个典型的MMORPG的三层分区分服架构:

http://km.oa.com/files/post_photo/011/191011/1ce81f85231270af8ec21ad50a05d043.jpg

第一层:Cluster层,一些全局模块或者World层级的消息转发;

第二层:World层,一个服的集合,这里有服务器的DB存储以及全服的公告模块;

第三层:Zone层,一条线,这里负责玩家接入以及业务逻辑处理;

 

全区全服

1.          从DB层看,所有玩家数据在同一个DB;

2.          所有玩家竞争共享相同资源。

如下图,是一个典型的全区全服的SNS的后台架构图

http://top.oa.com/captures/2014-02/1392618839_67.jpg

架构上分为两层:

第一层,DB层,负责DB存储;

第二层,逻辑层,负责游戏逻辑;

 

为什么要做架构的区分?

1.          游戏类型的不同,导致需要在DB层做区分:全区全服只有一个DB,但是分区分服的每个服都有独立的DB;

2.          游戏类型的不同,导致数据互通性不同:逻辑服务器页游必要做区分,比如各个平台需要独立运营,独立结算,开服活动只能针对特定服等等;

3.          单服承载的玩家数量级不同,导致架构上调整:全区全服所有玩家在一个服,分区分服玩家分摊在各个不同服,单服玩家数量不在一个级别,导致架构上的考量不同。

 

架构做了区分,在实际开发中需要注意什么?

架构上区分,导致后台面临的压力不同:

1.          DB层:分区分服DB承载单服压力,一般游戏单服PCU是千级,甚至百级,DB读写压力小,采用MySQL基本满足要求;全区全服DB承载所有玩家,PCU达到百万级别,读写压力大,单一的MySQL不能满足读写压力,需要因为读写并发高的DB组件,比如互娱的Tcaplus,TEG的CMem等等。

2.          平滑扩容:全区全服的扩容是因为整个游戏后台,在外网停机扩容中,需要考虑扩容对整个后台的影响,而分区分服因为面临扩容机会少,有开服情况,也是独立的新建整个服,对其他服基本无影响;

3.          容灾方面:全区全服在某个服务器进程出现问题时,该模块的压力可能会偏向同等功能的其他进程,需要处理雪崩情况,避免影响全服。而分区分服因为天然的服与服之间的隔离性,在这一块压力小很多;

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

游戏学院公众号二维码
腾讯游戏学院
微信公众号

提供更专业的游戏知识学习平台