目前接触的游戏主要有两类:分区分服,全区全服。
分区分服:如果从后台架构上做区分,分区分服特点:
1.每个服都有各自独立的DB;
2.数据不互通(除非业务做跨服数据的玩法);
不同业务有着不同分区分服方式:
分区:
1.对网络有特别要求的游戏,可能会是针对国内运营商网络环境进行分区,有电信区,网通区等等,比如LOL,QQ飞车;
2.针对游戏世界观分区,比如部落守卫战;
3.上公司平台的游戏,还会针对不同平台进行分区,比如QZone,QQGame大区等等;
分服:
个人接触的分配方式原则:
1.单服承载上限;
2.从运营角度考虑,每个服的注册玩家,活跃玩家,这点在目前很多页游上尤其明显,经常使用滚服的模式来让RMB玩家在开服阶段确立优势,所有这些游戏开服频率非常高,当然合服频率也非常高;
分区分服的架构成熟简单,一般是个三层架构,如图,是一个典型的MMORPG的三层分区分服架构:

第一层:Cluster层,一些全局模块或者World层级的消息转发;
第二层:World层,一个服的集合,这里有服务器的DB存储以及全服的公告模块;
第三层:Zone层,一条线,这里负责玩家接入以及业务逻辑处理;
全区全服:
1.从DB层看,所有玩家数据在同一个DB;
2.所有玩家竞争共享相同资源。
如下图,是一个典型的全区全服的SNS的后台架构图

架构上分为两层:
第一层,DB层,负责DB存储;
第二层,逻辑层,负责游戏逻辑;
为什么要做架构的区分?
1.游戏类型的不同,导致需要在DB层做区分:全区全服只有一个DB,但是分区分服的每个服都有独立的DB;
2.游戏类型的不同,导致数据互通性不同:逻辑服务器页游必要做区分,比如各个平台需要独立运营,独立结算,开服活动只能针对特定服等等;
3.单服承载的玩家数量级不同,导致架构上调整:全区全服所有玩家在一个服,分区分服玩家分摊在各个不同服,单服玩家数量不在一个级别,导致架构上的考量不同。
架构上区分,导致后台面临的压力不同:
1.DB层:分区分服DB承载单服压力,一般游戏单服PCU是千级,甚至百级,DB读写压力小,采用MySQL基本满足要求;全区全服DB承载所有玩家,PCU达到百万级别,读写压力大,单一的MySQL不能满足读写压力,需要因为读写并发高的DB组件,比如互娱的Tcaplus,TEG的CMem等等。
2.平滑扩容:全区全服的扩容是因为整个游戏后台,在外网不停机扩容中,需要考虑扩容对整个后台的影响,而分区分服因为面临扩容机会少,有开服情况,也是独立的新建整个服,对其他服基本无影响;
3.容灾方面:全区全服在某个服务器进程出现问题时,该模块的压力可能会偏向同等功能的其他进程,需要处理雪崩情况,避免影响全服。而分区分服因为天然的服与服之间的隔离性,在这一块压力小很多;
网友评论