Node.js 实现可扩展聊天服务器的策略
我希望实现某种聊天服务器。我希望它能够扩展。这似乎是一个大问题,所以我想我希望答案是方向指示,某种探索性的 最终用户客户端是web或电话客户端。我认为某种websocket实现,比如Socket.IO是不错的 在服务器端,我希望使用Node.js。我希望该体系结构具有可扩展性,这样用户数量就不会受到限制(好吧,在合理的范围内,预计不会有大的成功机会,如果是的话,让更聪明、经验丰富的人参与其中的机会是合理的,而不是目前只对我进行编码)每个聊天室的用户数量希望不会受到限制,或者一些固定的大数字。这意味着我需要使用在Node中编写的几个服务器进行水平扩展 假设某个负载平衡器(希望将来不会出现单点故障,但我不知道如何实现这一点,或者可能只是转移到AWS)正在将SocketIO连接从终端客户端发送到聊天服务器。连接到不同服务器的不同用户可能在同一个房间中,因此需要将消息发送到其他服务器 我如何切实可行地实现这样的东西?希望不要太复杂 问题: (1) 如果所有服务器都需要处理所有消息,因为用户可以通过任何一台服务器登录,那么这是否可以扩展? (2) 我是否需要某种消息队列,以便服务器之间进行通信?Rabbitmq的Pub sub是否可用于此目的?或者如果是zeromq,我将如何使用pub sub进行扩展?Zeromq指南解释了如何使用REQ/REP类型的应用程序扩展到多个服务器。但不是酒吧。 (3) 还是从XMPP开始Node.js 实现可扩展聊天服务器的策略,node.js,architecture,message-queue,Node.js,Architecture,Message Queue,我希望实现某种聊天服务器。我希望它能够扩展。这似乎是一个大问题,所以我想我希望答案是方向指示,某种探索性的 最终用户客户端是web或电话客户端。我认为某种websocket实现,比如Socket.IO是不错的 在服务器端,我希望使用Node.js。我希望该体系结构具有可扩展性,这样用户数量就不会受到限制(好吧,在合理的范围内,预计不会有大的成功机会,如果是的话,让更聪明、经验丰富的人参与其中的机会是合理的,而不是目前只对我进行编码)每个聊天室的用户数量希望不会受到限制,或者一些固定的大数字。这意
我希望它能尽可能简单地工作。Socket.io网站上有一个很好的解释。看看
我认为您的目标应该是可以实现的,只需使用给定的模块和配置机制,几乎不涉及编码。因此,在这种情况下,redis就像一个MQ。您是否知道,如果我希望聊天消息转储到MongoDB,我将如何实现?如果我有一个Node.js服务器,它订阅所有内容并将其记录到MongoDB,那么它似乎不可伸缩。但如果我有两个,我会记录它…两次?我不是这方面的专家,但afaik MongoDB支持节点之间的复制。。。Redis的速度非常快,也许您可以将其用作“主存储”,并异步保存到MongoDB实例?