大纲

  • 全区全服架构基础
  • 全民飞机大战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服务器进程的主动式服务设计,采用了逆向的思维方式,换个角度去思考问题,达到了意想不到的效果。

全区全服模式下的分布式解决方案相关推荐

  1. 游戏全区全服和分区分服 QQ斗地主的设计

    游戏全区全服和分区分服  QQ斗地主的设计 https://cloud.tencent.com/community/article/164816001481011910?fromSource=gwzc ...

  2. 龙之谷服务器更新文件,全区全服 维护结束 更新至Ver.417

    本帖最后由 一尾双鱼 于 20-5-22 17:50 编辑 各位亲爱的谷迷: <龙之谷>于 2020/05/21 早上07:00 开始对 全区全服 进行 更新至Ver.417. 目前服务器 ...

  3. 浅谈全区全服架构的SNS游戏后台

    首先说下分区分服和全区全服的概念,查了一下资料,没有找到合适的定义.说下自己的理解:所有游戏服务器都有玩家数据库,如果以数据库为单位划分Set,单Set如果能承载超过10万的同时在线,可以认为是全区全 ...

  4. 怪物猎人ol服务器维护,《怪物猎人OL》5月11日1:30全区全服维护内容公告

    亲爱的猎人: 我们将于5月11日1:30对所有大区全部服务器进行例行更新维护,本次维护预计时间6.5小时.还请猎人们提早下线,避免不必要的损失.我们将视实际情况提前或延迟开服,感谢大家的支持! 维护时 ...

  5. 龙之谷服务器仓库在哪个位置,全区全服版本更新至Ver.190

    各位亲爱的玩家: <龙之谷>全区全服已维护完毕,版本更新至 Ver.190.由于 华东电信四区  和 南方电信一区 已提前更新至Ver.190,故这两个大区仅为例行维护.也已维护完毕.请玩 ...

  6. 游戏思考15:全区全服和分区分服的思考

    文章目录 一.全区全服特点 1)架构图 2)特点 3)关于拆分多进程业务的作用 二.分区分服特点 1)架构图 2)特点 三.两者的对比选择 1)尽量选择`全区全服`的设计方式,优点如下: 2)两者在架 ...

  7. 神无月服务器今日维修,2.12神无月全区全服服务器(除了已更新的服务器)更新公告...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2.12神无月全区全服服务器(除了已更新的服务器)将于2.12日00:15进行版本更新.更新内容如下 [新角色] 新角色将于2月15日10点正式亮相,目前 ...

  8. yy部分地区服务器升级维护,3月5日全区全服更新公告 - YY大皇帝 YY大皇帝独家官网 YY大皇帝新手卡...

    亲爱的各位玩家: 羊年开工第一周,我们又继续回来为大家带来最新的游戏内容啦!在3月5日0点,我们将会对全区全服进行一次更新维护,希望各位玩家能喜欢我们奉上的新内容,也衷心希望大家继续给<大皇帝& ...

  9. cf12月9日服务器维护时间,cf12月9、10日全区全服维护更新公告_穿越火线更新公告_7k7k穿越火线...

    cf12月9.10日维护更新公告 更新日期:2016-01-02     来源:7k7k     作者:7k7k挽歌 12月9.10日全区全服维护更新公告(已完成) 2015-12-08 23:34: ...

最新文章

  1. Linux下stat + 文件名后, Access,Modify,Change的含义
  2. 2021HDU多校第一场 zoto(莫队+分块)
  3. ZOJ 1410 题解
  4. 星地融合→→→6G移动通信关键技术的未来
  5. 定义加密函数程序python_一个python自定义的加密解密函数
  6. 如何修改7 服务器配置,centos7修改服务器配置
  7. 组合赋权法之python
  8. 【目标检测】Anchor-Free算法--CenterNet详解
  9. elasticsearch的简介_以及实现原理---全文检索引擎ElasticSearch工作笔记001
  10. 和 8 个程序员聊了一下午,集齐了这些经验!
  11. 实现三栏布局的几种方法
  12. Qt Supported Databases
  13. 迅捷cad_迅捷数组
  14. EOS 钱包开发(JAVA)
  15. Ubuntu20.04 安装向日葵SunloginClient并解决报错缺少依赖问题
  16. 为什么全局钩子必须写到dll里面?
  17. 大疆2018网申之机器学习算法工程师笔试题B卷
  18. 【安装cad后不小心卸了,再次重新安装时显示已安装。这个怎么破?】
  19. vue实现某一区域滚动,头部底部固定,中间滚动
  20. 收集一些可以发外链的网站

热门文章

  1. Android实习第一周总结,浅谈工作与学校的区别,以及工作心得,学习到的东西。
  2. 【動態規劃】最大加權矩形
  3. 利用反射整合ViewBinding和ViewHolder
  4. 谷歌本月重启办公室上班;小米成中国第一大手机厂商;英特尔处理器被曝存关键漏洞 | EA周报
  5. Matlab:贝塞尔高斯光束自由传输matlab仿真
  6. Netty权威指南带目录完整版.pdf
  7. 婚恋交友系统源码开发容易忽视的定位功能
  8. 欧姆定律(电压、电流、电阻)
  9. 【附源码】Java计算机毕业设计某城市参军和退役军人信息管理系统(程序+LW+部署)
  10. html图片转成pdf,如何将图片、html等格式转成pdf(示例代码)