最近用 socket.io 做游戏服务端,按照官方的方案: https://socket.io/docs/using-multiple-nodes 做了负载均衡,主要思想就是用 Nginx 做 ip_hash。但是现在问题来了: 假如我有 S1,S2,S3 这 3 台服务器来做 socket 服务器,还有一台服务器 A 上面装了 Nginx 用来负载前面的 S1,S2,S3。这样用户一上来先连到 A,然后通过 A 分发到后面的 S1,S2,S3,但是这样 A 这台服务器就会产生单点故障,如何解决呢?
因为之前的业务基本上都是用 AWS 的 ELB,所以不存在这个问题,但是 ELB 不支持 TCP 的粘性会话,所以这里想用 Nginx 来解决。 不知道各位大大有没有更好的解决方案。
还有一个问题就是因为游戏是开房间机制的,几个用户在同一个房间内游戏(游戏时间很短,就几分钟),在游戏的过程中有一些服务端主动发起的倒计时什么的,如果我用了负载均衡(即多个 socket )如何保证多个服务器不会重复下发同样的指令呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.