常用于游戏服务端中的分布式登录网关如何动态扩容的疑问?

zhllxt 2018-01-16 10:12:09



常见的游戏服务端架构如上图所示,Client首先连接LoginServer,然后由LoginServer找出一个空闲的Gate交给Client,然后Client再重新连接到该Gate,进而实现与GameServer的通信。这样的话,Gate和GameServer都可以动态扩容。

我的疑问是:LoginServer如何扩容呢?我查过一些开源的游戏引擎,虽然说是Gate可以动态扩容,但我看代码,完全没有看出来是怎么扩容的,还是普通的tcp socket连接到LoginServer?









...全文
685 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2018-01-18
  • 打赏
  • 举报
回复
一个是DNS做负载,可以把请求转到不同的LoginServer,其次还有硬件负载均衡设备,它们处理并发能力很强,可以把请求转给不同的LoginServer。
danscort2000 2018-01-18
  • 打赏
  • 举报
回复
引用 8 楼 zhllxt 的回复:
[quote=引用 6 楼 danscort2000 的回复:] 这个设计有问题, 你这个设计里,最前台的居然是LoginServer LoginServer不应该负责用户的登录, 这是最关键的 而只应该负责根据用户的ip给出负载最小的Gate 登录应该由game server前端或者独立的登录服务器来负责
这个我懂的,只是把网上的图直接拿来用了。我明白“应该负责根据用户的ip给出负载最小的Gate”。我只是拿这个做个比方,其实我困惑的还是100亿个Client所能访问到的第一层到底是不是只能是一个Server,到底能不能做到多个Server负载均衡这样子。 [/quote] 第一层一般都使用DNS来做负载均衡 , 此外还可以配合客户端进行特定随机,例如同时部署 dns1.xxx.com dns2.xxx.com ......客户端按照当前时间尾数奇偶等来分别使用dns1或者dns2....进行分流 总之第一层都是一个短连接,不会执行有阻塞之类操作 ,比如CDN就是这么干的.
满衣兄 2018-01-17
  • 打赏
  • 举报
回复
引用 2 楼 zhllxt 的回复:
[quote=引用 1 楼 yfqvip 的回复:] 多个loginserver通过dns智能解析就可以了,loginserver是短连接,所以不需要很多,两三个应该就够了
dns 解析的核心原理我不是太清楚,基本原理能明白,毕竟编程了这么多年。 loginserver是短连接,所以不需要很多,两三个应该就够了。这个也能理解。 但是我只是考虑一种场景,不用智能DNS的话,该怎么从技术层面解决:假定loginserver的每秒并发有1000万,那么一个loginserver肯定不行,需要多个loginserver,但是Client只会连接一个IP(或网址也行),那么这个loginserver如何动态扩容。 智能DNS我搜索了一下,大致明白他的意思了。但是我想的是,如果用智能DNS解析的话,其实这个智能DNS解析服务器就相当于我的loginserver了,如果每秒并发有1000万的话,这个1000万实际上到了这个DNS解析服务器的并发了,那么这个DNS解析服务器又如何从技术层面解决这个问题呢? [/quote] 并发一千万肯定需要专门的技术和硬件策略应对。但你假设的这个前提不成立,如果你假设一千亿的并发那谁也没办法做。还是根据实际情况考虑,不要想着设计一个系统多大的并发都能适应,总有个范围的。
zhllxt 2018-01-17
  • 打赏
  • 举报
回复
引用 6 楼 danscort2000 的回复:
这个设计有问题, 你这个设计里,最前台的居然是LoginServer LoginServer不应该负责用户的登录, 这是最关键的 而只应该负责根据用户的ip给出负载最小的Gate 登录应该由game server前端或者独立的登录服务器来负责
这个我懂的,只是把网上的图直接拿来用了。我明白“应该负责根据用户的ip给出负载最小的Gate”。我只是拿这个做个比方,其实我困惑的还是100亿个Client所能访问到的第一层到底是不是只能是一个Server,到底能不能做到多个Server负载均衡这样子。
zhllxt 2018-01-17
  • 打赏
  • 举报
回复
如果100亿个Client并发访问到的第一层只能是一个Server的话(即使这个Server什么都不做,仅仅是做一下简单的查找空闲的二层Server,100亿并发他也是吃不消的),那么这个问题就是无解的了,我只是想知道市面上或者比如大公司BAT这些他们会不会有解决办法?
danscort2000 2018-01-17
  • 打赏
  • 举报
回复
另一个方式就是把 用户登录功能 做最前台 在用户登录后,用一个特殊的数字串, 去请求独立调度服务器给出 最合适的 game gate 也就是分两步走 总之 必须把Login 和 请求服务器gate ip port两个服务分别独立出来
danscort2000 2018-01-17
  • 打赏
  • 举报
回复
这个设计有问题, 你这个设计里,最前台的居然是LoginServer LoginServer不应该负责用户的登录, 这是最关键的 而只应该负责根据用户的ip给出负载最小的Gate 登录应该由game server前端或者独立的登录服务器来负责
zhllxt 2018-01-17
  • 打赏
  • 举报
回复
引用 4 楼 yfqvip 的回复:
并发一千万肯定需要专门的技术和硬件策略应对。但你假设的这个前提不成立,如果你假设一千亿的并发那谁也没办法做。还是根据实际情况考虑,不要想着设计一个系统多大的并发都能适应,总有个范围的。
感谢老表,你的意思是说“假设有一千亿的并发”,在现今技术下,谁也解决不了,这就是个无解的题目。是这个意思吗?我只是想知道到底有没有这种可能:比如说大公司BAT他们有没有这种技术,无论多少Client并发,Client连接的IP就只有一个,他们就是能做到Client直连的第一层(也就是我上面所说的loginserver,第二层用多机负载均衡这个不考虑)就能多机负载均衡?
zhllxt 2018-01-16
  • 打赏
  • 举报
回复
引用 1 楼 yfqvip 的回复:
多个loginserver通过dns智能解析就可以了,loginserver是短连接,所以不需要很多,两三个应该就够了
dns 解析的核心原理我不是太清楚,基本原理能明白,毕竟编程了这么多年。 loginserver是短连接,所以不需要很多,两三个应该就够了。这个也能理解。 但是我只是考虑一种场景,不用智能DNS的话,该怎么从技术层面解决:假定loginserver的每秒并发有1000万,那么一个loginserver肯定不行,需要多个loginserver,但是Client只会连接一个IP(或网址也行),那么这个loginserver如何动态扩容。 智能DNS我搜索了一下,大致明白他的意思了。但是我想的是,如果用智能DNS解析的话,其实这个智能DNS解析服务器就相当于我的loginserver了,如果每秒并发有1000万的话,这个1000万实际上到了这个DNS解析服务器的并发了,那么这个DNS解析服务器又如何从技术层面解决这个问题呢?
满衣兄 2018-01-16
  • 打赏
  • 举报
回复
多个loginserver通过dns智能解析就可以了,loginserver是短连接,所以不需要很多,两三个应该就够了
smwhotjay 2018-01-16
  • 打赏
  • 举报
回复
多个loginserver又会引出同时登录的问题啥的。真要扩展多个也不难。难在不出bug的架构

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧