在我的应用程序中,我有一个全局状态,我通过 membase 将其分发到不同服务器上的不同节点。
节点本身的客户端需要在全局状态发生更改时得到通知,但我看到的唯一方法是从 membase 轮询状态并在更改时将其发送给客户端。因此,当发生更改时,我只有在客户端和服务器之间有流量,但我在服务器和 membase 之间会有持续的流量,这不是节点非阻塞 IO 的意义。
有没有更好的办法?
实现这一点的最佳方法是利用 Redis 的 pub-sub 功能。您使用通道发送消息,并且您的所有节点都连接到该通道。当收到新消息时,所有节点都可以做出反应。
阅读更多关于 Redis 的 Node 发布-订阅功能:
http://howtonode.org/redis-pubsub
nodeJS 中的 Pub/sub 实现
http://laktek.com/2010/05/25/real-time-collaborative-editing-with-websockets-node-js-redis/