go语言websocket,如何实现100万连接,并且部署在多台服务器,用户的channel还可以互相通信?

作者站长头像
站长
· 阅读数 7

我用go语言写了个websocket,但如何实现100万连接,并且部署在多台服务器,连接与连接之间可以互相通信

回复
1个回答
avatar
test
2024-06-24

是100万个连接,他们会被分配到多台服务器上,然后要求连上服务器的不同连接之间可以相互通信,你这是在做即时通讯吧。

那就在服务器之间,加一个连接,让三个服务器之间能交换数据,共享它们的连接信息。

比如A客户端连接在服务器S1 上,B客户端连接在服务器S2上。A给B发送消息的时候,如果S1发现它的连接列表里面没有B的连接,那就去其他服务器上查询,如果查询到有,S1就把消息发送给S2,然后S2发送给B。(基本上涉及到集群的都是类似这种方式),好像带集群功能的应用大多都是这样实现的。

还有其他的方法,客户端在连接的时候,就根据算法,算出来要去连接哪一台服务器。后面其他客户端如果要发消息给某个客户端,就能根据一样的算法,算出这个客户端连接那个服务器,也能达到一样的效果。(感觉这个方法比较挫) ,有点像redis的集群。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容