免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2566 | 回复: 3

[技术动态] 分布式游戏服务器用户连接信息如何管理 [复制链接]

论坛徽章:
0
发表于 2015-11-27 18:02 |显示全部楼层
一般游戏服务器都是长连接服务器和业务逻辑服务器分离的吧
业务逻辑服务器要给一个玩家发送消息的时候,要知道这个用户连接到了哪个connector,一般有两种方法
1. 通过hash算法,客户端连接的时候也通过这个hash算法
2. 用一个register server或者router server来保存用户的连接信息,后端服务器要发送消息给玩家的时候就查询下这个服务

这两种方式各有优劣
前者优点是实现简单,性能高,不用任何网络请求,只要本地计算就可以定位一个用户。缺点是不够灵活,用户只能连接固定的ip,而且一旦一个connector挂了,这个服务器上的所有客户端同时涌上来了,相当于制造ddos啊,另外,动态扩容也不好办,要踢掉一部分用户
第二种呢,实现上比较复杂,比如register server怎么实现高可用,register server重启之后需要重新重新注册所有玩家信息,这个过程会不会太久,这段期间,后端服务器是暂时无法定位玩家了。如果采用集群,分片+备份,这又太复杂了吧。

其实我没做过游戏服务器,之前开发过消息推送服务器,一开始是采用了第二种方案,有一个中心的register server,后来改成第一种方案了。

不知道大家有没有更好的办法,分享下经验

论坛徽章:
137
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5719周年集字徽章-庆
日期:2019-08-27 13:28:5615-16赛季CBA联赛之福建
日期:2019-09-10 11:43:2519周年集字徽章-周
日期:2019-12-12 10:54:07
发表于 2015-11-27 19:39 来自手机 |显示全部楼层
性能优化不是重点,重要的是有人玩

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2015-11-27 20:42 |显示全部楼层
本帖最后由 cokeboL 于 2015-11-27 20:43 编辑

一般游戏服务器好像不需要长连接服务器和业务逻辑服务器分离的吧。。那样浪费转发和维护
至于连接哪个逻辑服务器,方法就看项目了,逻辑服务器的复杂度,需要多少进程或者多少组硬件及之上的进程组搞定。。
简单hash,按区域、网络供应商类型、网速等分配
还有就是一般的游戏都分服或者叫分区,给你个列表,进哪个区,自己选
至于想找哪个玩家,全局的服务器肯定是有的,可能包括网关,管理服务器,转发服务器之类的,内部转发的压力通常不大,只要
转发给所有逻辑服务器,各自的逻辑服务器看这个玩家是不是在自己这就好了
至于持久化了的玩家数据,admin服务器上直接访问数据库之类就好了
至于ddos那玩意,服务器提供商一般都提供了,比如阿里云,你只要交保护费就省心了

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2015-11-27 20:44 |显示全部楼层
btw,golang写着很舒坦的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP