【发布时间】:2012-08-22 06:33:59
【问题描述】:
我正在考虑一个系统,它会通知多个消费者发生在一组对象上的事件。每个订阅者都应该能够订阅发生在零个或多个对象上的事件,多个订阅者应该能够接收有关发生在单个对象上的事件的信息。
我认为某些消息队列系统在这种情况下是合适的,但我不确定如何处理我将拥有数百万个对象的事实 - 为每个对象使用单独的主题听起来不太好 [还是很好?]。
您能否建议我应该采取的方法,甚至是一些合理的开源消息队列系统?
更多细节:
- 将有成千上万的订阅者 [意味着数量不多],
- 每个订阅者将订阅数十或数百个对象,
- 将有大约 5-2000 万个对象,
- 事件本身不必携带任何消息。只需知道该对象已更改的信息就足够了,
- 绝大多数对象将永远不会被订阅,
- 事件以每秒几百个的最大速率发生,
- 理想情况下服务器应该在linux下运行,能够通过http long-poll与生态系统的其他部分集成[使用node js?码头下的延续?]。
提前感谢您的反馈,对于有些含糊的问题,我们深表歉意!
【问题讨论】:
-
这是一个根本上难以以可扩展的方式解决的问题,正如 Twitter 一直存在的问题所证明的那样。您可以使用标准的主题订阅者模型,并使用一个技巧来限制主题的数量:例如,主题 ID 可以是消息 ID 模 1000。然后主题的侦听器将只过滤他们感兴趣的消息关于。 (只是一个想法)
-
@Aapo Kyrola - 感谢您的提示。你能把你的评论作为答案吗?或许你可以推荐特定的消息队列服务器?
-
你看过aws.amazon.com/sqs吗?以及他们可以提供的所有工具(通知等)
-
@Resh32 - 感谢您的提示,但我正在寻找可以在内部使用的解决方案。
-
我最近读到了一篇关于 twitter 上的人们如何使用 Scala 的有趣文章:artima.com/scalazine/articles/twitter_on_scala.html
标签: message-queue ibm-mq mq