如果我要设计一个巨大的分布式系统,其吞吐量应随系统中的订阅者数量和通道数量线性扩展,哪个会更好?
1) Redis集群(仅适用于Redis 3.0 alpha,如果是集群模式,您可以在一个节点上发布并在另一个完全不同的节点上订阅,消息将传播并到达您)。发布的复杂度为O(N+M),其中 N 是订阅客户端的数量,M 是系统中订阅模式的数量,但是在 Redis 集群中它如何扩展?我接受对此的有根据的猜测。
2) ZeroMQ从 3.x 开始,它进行服务器端过滤,因此它也有一些时间复杂度,但我在文档中没有看到任何有关它的内容。如果我想扩展它,我可以将大量服务器发布到任何频道,每个订阅者将连接到所有服务器,并订阅所需的频道。看起来不错。
那么,对于大型发布商系统的水平扩展来说,哪一个更好呢?我还应该研究哪些其他解决方案?请记住,我希望最大限度地减少延迟和吞吐量,但能够水平扩展。
我猜你想最小化延迟。通道数量无关。关键因素是发布者数量和订阅者数量、消息大小、每个发布者每秒的消息数量、每个订阅者接收的消息数量。 ZeroMQ 每秒可以从一个节点到另一个节点发送数百万条小消息;你的瓶颈将是网络,而不是软件。因此,大多数高容量的 pubsub 架构都使用 ZeroMQ 支持的 PGM 多播之类的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)