可扩展的Pub / Sub引擎实时

时间:2011-09-19 23:30:58

标签: scalability real-time redis publish-subscribe sharding

我正在寻找一个pub / sub引擎,具有以下要求:

  1. 非常低的延迟< 0.5秒
  2. 可扩展
  3. Shardable(基于地理位置定位)
  4. 我希望能够拥有多个发布/订阅服务器,并能够从任何服务器发布或订阅频道,无论服务器是否声明了频道。

    例如:

    如果用户A 连接到服务器 SRV1 用户B 连接到服务器 SRV2 ,如果用户B 订阅“ MyChannel ”并用户A 在频道“ MyChannel ”上发布内容,用户B < / strong>即使没有连接到同一台服务器也会收到消息。

    我不知道Redis是否能够做到这一点。我没有找到关于这个主题的任何信息。 欢迎任何帮助。

4 个答案:

答案 0 :(得分:4)

我们现在一直在使用ZeroMQ和它的发布/订阅功能,我们对我们所看到的内容非常满意。

还值得研究下一个version即将发生的事情(通过向上游推送订阅请求来减少网络带宽)

答案 1 :(得分:2)

我建议你看看Data Distribution Service for Real Time Systems (DDS)标准。它专门设计为可扩展的pub / sub中间件,适用于实时和非实时系统。

它有一些成熟的实现,所有这些都有它自己的优势点,但通常实现是可扩展的,低延迟。

这些是我建议你看的实现(如果你需要它们在WAN环境中工作,我猜前两个对它有很大的支持):

答案 2 :(得分:1)

看来你正在寻找某种消息。使用RabbitMQshovel插件尝试federation

答案 3 :(得分:1)

nanomsgZeroMQ的继承者,由同一作者撰写,并且有许多语言绑定。

它是用C语言编写的,并使用零拷贝机制。如果你正在寻找特殊的延迟,并且愿意沾沾自喜(如果你的目标是极端的话你就应该这样做),我会推荐其中的一个。

如果您正在寻找卓越的吞吐量,请使用Kafka

请注意,这些解决方案都没有实现开箱即用的地理位置,Redis 3.2将有一些东西:http://antirez.com/news/89

如果您正在寻找一个简单,“足够好”的解决方案,我会选择Redis(请务必先阅读this blog post from aphyr)。