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

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

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

 

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

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

 

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

3个评论

  • 何小成 2015-08-29 1楼
    Mark学习
  • rajRKO 2017-06-21 2楼
    Everyone use mobile phones or PCs in the day to day life. So we all know the importance of the applications that take hold of these devices. play store download for Windows PC is always considered as some tedious task but never any more. This article Google Play Store Download For Windows PC.
  • glasirius 2018-09-05 3楼
    学习了