如果我要设计一个巨大的分布式系统,其吞吐量应该与系统中的订阅者数量和通道数量成线性关系,哪个更好?
1)Redis Cluster(仅适用于Redis 3.0 alpha,如果它是集群模式,你可以在一个节点上发布并在另一个完全不同的节点上订阅,消息会传播并到达你)。Publish 的复杂度是O(N+M),其中 N 是订阅客户端的数量,M 是系统中订阅模式的数量,但是在 Redis 集群中它如何扩展?我接受有根据的猜测。
2) ZeroMQ从 3.x 开始,它进行服务器端过滤,所以它也有一些时间复杂度,但我在文档中没有看到任何关于它的内容。如果我想扩展它,我可以让许多服务器发布到任何频道,每个订阅者将连接到所有服务器,并订阅所需的频道。这看起来不错。
那么,对于大型发布者系统的横向扩展,哪一个更适合呢?我应该研究哪些其他解决方案?请记住,我想最小化延迟和吞吐量,但能够水平扩展。