Node.js是多台机器上的tcp套接字服务器

Emm*_*l P 5 redis node.js

我有一个node.js tcp服务器,用作iPhone聊天客户端的后端.由于我的实现包括私人群聊,我在内存中存储用户列表及其所属的聊天室,以便适当地路由消息.这一切都很好,假设我的聊天服务器总是在一台机器上,但是当我需要横向扩展时,我需要一种向连接到不同服务器的客户端广播消息的好方法.我不想开始在节点服务器之间进行进程间通信,而是希望与redis共享状态.

我有一些想法,但我想知道是否有人有一个很好的解决方案吗?这里要清楚的是一个例子:

用户1连接到房间X上的服务器1,用户2连接到房间X上的服务器2.用户1发送消息,我需要将其传递给用户2,但由于我使用内存数据结构,服务器不应该分享国家.我希望我的节点服务器尽可能保持愚蠢,这样我就可以添加/删除我的系统需求.

谢谢 :)

pro*_*php 0

Redis 应该在不久的将来内置集群支持,同时您可以使用一致的哈希算法将密钥均匀地分布在多个服务器上。有人有一个适用于 Node.js 的哈希模块,该模块是专门为实现 Node.js 的 Redis 集群模块的一致性哈希而编写的。您可能需要关闭“房间”名称,以确保房间的所有数据点都位于同一主机上。通过这种类型的设置,使用哪个服务器的所有逻辑都保留在客户端上,因此您的 Redis 集群基本上可以保持不变,并且您可以轻松添加或删除主机。

更新

我找到了我正在讨论的 Redis 的一致性哈希实现,它当然提供了代码,并且还以易于理解的方式解释了分片。

http://ngchi.wordpress.com/2010/08/23/towards-auto-sharding-in-your-node-js-app/