全区全服模式下的分布式解决方案

大纲

  • 全区全服架构基础
  • 全民飞机大战PK系统的分布式设计方案

全区全服架构

全区全服架构是通过一组相同的游戏逻辑进程提供对外服务。客户端通过负载均衡策略如TGW接入后台 任一游戏逻辑进程, 对于玩家而言,这一过程是透明的,玩家并不会感觉到这次连接和上次连接的进程有什么不同,所有的玩家相当于在同一个大区里面进行游戏。另外,玩家自身其实并不关心自己在哪台服务器上。

全区全服的特点主要有:承载能力强,资源利用率高,扩容方便,容灾能力强,运营维护方便。

由于采用了负载均衡策略,所有的游戏逻辑进程可以均衡地分摊整个游戏的压力。扩容方便表现在只需要简单地增加游戏逻辑进程的数量就可以达到扩容目的,甚至可以进行不停机的在线扩容。如果有少量游戏逻辑进程出现问题的话,通过客户端的自动重连机制,玩家可以无感知地切换到正常的进程上继续游戏。由于进程种类比较少,部署拓扑网络比较简单。

PK系统

PK系统

PK系统主要分为两种:好友PK和世界PK。PK倾向于一种友好比赛的性质,好友PK通过选择一个好友,而世界PK则是通过系统匹配一个合适的对手。然后双方同时进入游戏,最后根据比赛的结果来决定胜负。

世界PK匹配系统的设计

常规PK匹配系统的设计方案

常规PK匹配系统的设计方案

在这个方案中需要设计一个专门用于PK的服务器,所有PK操作通过游戏逻辑进程到PK服务器进行操作。

常规PK匹配系统设计方案的缺点

  • 独立的PK服务器进程,异步过程多且复杂。
  • PK服务器需要考虑负载分担、容灾和备份。当有多台PK服务器且人数不足的情况下,可能会导致体验的下降。
  • 独立进程下对角色PK数据的管理复杂,需要考虑CACHE机制。还需要考虑缓存的更新、淘汰 ,以及多个PK进程之间的数据冲突。
  • 开发和部署比较复杂

分布式PK系统设计方案

分布式PK系统设计方案
  1. 事件PK报名数据是直接存储在游戏逻辑进程内的,这一点和传统方式是不同的。
  2. 世界PK的匹配算法是分布运行在逻辑进程和PK服务器上的。
  3. PK服务器除了执行匹配算法之外没有其它任何的逻辑。而和PK相关的其它逻辑都在游戏进程之内完成。
  4. PK服务器不存储数据,所以也没有状态。
  5. 游戏逻辑进程对于PK服务器是没有依赖性的,所以对于故障也不敏感。

分布式世界PK的匹配算法

分布式世界PK的匹配算法

匹配算法分为两个部分,分别运行在游戏逻辑进程和PK服务器进程内,运行在游戏逻辑进程内的算法部分,执行一个本地对于报名数据的快速匹配,这一过程会短路掉大部分的PK请求。而运行在PK服务器内的算法会定期向各个游戏进程请求报名数据。根据特定的筛选规则,游戏逻辑进程间会将暂时没有匹配成功的数据筛选一部分上传到PK服务器。在PK服务器搜索这些数据之后会执行一个相同的匹配算法,并且将结果返回给游戏逻辑进程。而其后所有的操作都会在游戏逻辑进程内部进行。仔细思考会发现,这个匹配算法是一种二级执行,第一级是游戏逻辑进程内的匹配,在第一级匹配随着参与人数的增长,第一级匹配效率会越来越高,所以到了第二级匹配的人数会比较固定,不会随着负载的增加而增加。

另一个特点是PK服务器提供的时候一种主动式的服务,因此游戏逻辑进程对它是没有依赖性的,而PK服务器本身也不存储数据和状态,所以它对故障是不敏感的。即使出现了故障之后也很容易恢复。

周期本地匹配和云端匹配关系对比

上图横坐标是参与PK人数的增长,纵坐标是PK服务器上匹配的数据。随着参与PK人数的增加,PK服务器内进行匹配的人不会一直增加,会趋向于一个恒定的值。

分布式PK系统的特点

  • 匹配算法的二级分层设计,将主要负载控制在游戏逻辑进程内。
  • 充分利用游戏逻辑进程的天然分布式,达到负载均衡的目的。
  • 通过报名数据的智能分级和筛选,达到匹配效果的最大化。
  • PK服务器进程的无状态设计,对故障不敏感,对其他进程无依赖。
  • PK服务器进程的主动式服务设计,采用了逆向的思维方式,换个角度去思考问题,达到了意想不到的效果。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342