当前位置: 首页 > 知识库问答 >
问题:

实现可伸缩聊天服务器的策略

锺离飞飙
2023-03-14

假设某个负载均衡器(希望将来不会出现一个故障点,但我不知道如何实现这一点,或者可能只是转移到AWS)正在将SocketIO连接从终端客户机分配到聊天服务器。不同的用户连接到不同的服务器可能在同一个房间,因此需要将消息发送到其他服务器。

我如何可行地实现这样的东西?希望不要太复杂。

问题:(1)如果所有服务器都需要处理所有的消息,因为用户可以通过任何服务器登录,这是否可以扩展?(2)服务器之间是否需要某种消息队列来进行对话?来自Rabbitmq的Pub-sub对此可用吗?或者如果zeromq,我将如何与酒吧潜艇缩放?Zeromq指南解释了如何将请求/代表类型的应用程序扩展到多个服务器。但不是酒吧潜艇。(3)还是应该从XMPP开始?

共有1个答案

黄永怡
2023-03-14

在socket.io站点上有一个很好的解释。看一看

  • http://socket.io/docs/using-multiple-nodes/

它建议使用Nginx作为HTTP负载平衡器,Node.js集群(带有粘性会话)和Redis作为消息后端。

 类似资料:
  • 问题内容: 我正在寻求实现某种聊天服务器。我希望它可以扩展。这似乎是一个很大的问题,所以我想我希望答案是方向指针,有点探索性。 最终用户客户端是Web或电话客户端。我认为某种Websocket实现,例如Socket.IO很好。 在服务器端,我希望使用Node.js。我希望该体系结构具有可伸缩性,以使用户数量不受限制(嗯,在一定范围内,预计不会有很大的成功机会,如果是这样,则由更聪明,经验丰富的人来

  • 本文向大家介绍Node.js实现简单聊天服务器,包括了Node.js实现简单聊天服务器的使用技巧和注意事项,需要的朋友参考一下 使用Nodejs是如此简单的实现了一个简单的聊天服务器 实现代码如下: 使用过程就是: 启动js 连接方式:telnet

  • 主要内容:服务端程序,客户端程序本节将带领大家结合咱们前面所学的知识开发一个聊天的示例程序,它可以在几个用户之间相互广播文本消息。 服务端程序 服务端程序中包含 4 个 goroutine,分别是一个主 goroutine 和广播(broadcaster)goroutine,每一个连接里面又包含一个连接处理(handleConn)goroutine 和一个客户写入(clientwriter)goroutine。 广播器(broa

  • 本文向大家介绍go语言实现聊天服务器的示例代码,包括了go语言实现聊天服务器的示例代码的使用技巧和注意事项,需要的朋友参考一下 看了两天 go 语言,是时候练练手了。 go 的 routine(例程) 和 chan(通道) 简直是神器,实现多线程(在 go 里准确的来说是 多例程)简直不要太轻松。 于是动手码了一个傻瓜版的黑框聊天器。 server 端: 监听 TCP 连接;支持自定义客户端命令;

  • 在本教程之后,我遇到了Trie数据结构。因为最近我一直在用PHP编程,所以我试图用它来解决讲座中的问题。我能够获得正确的答案,但只适用于较小的输入(输入#10是一个2,82 MB的文件)。显然,我的算法缩放不好。它还超过了PHP默认的128 MB内存限制。 Trie中存储了一个根节点。每个节点都有一个“子”成员。我使用标准PHP数组来存储子对象。子键表示一个字符(目前我正在为每个字符创建一个新节点

  • 本文向大家介绍Java多线程实现聊天客户端和服务器,包括了Java多线程实现聊天客户端和服务器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java聊天室代码,供大家参考,具体内容如下 主要涉及知识 ·Java中GUI程序的编写,包括事件监听机制。 ·Java的网络通信编程,ServerSocket,Socket类的使用。 ·Java中多线程的编程,Thread类,Runnable