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