redis支持pub-sub
zmq也支持通过消息代理的 pub-sub
在它们之间进行选择的架构优点/缺点是什么?
我的目标是超出应该完成的明显的用例特定性能基准测试(这是一个很好的例子)。
假设使用 Python 等高级语言。
redis支持pub-sub
zmq也支持通过消息代理的 pub-sub
在它们之间进行选择的架构优点/缺点是什么?
我的目标是超出应该完成的明显的用例特定性能基准测试(这是一个很好的例子)。
假设使用 Python 等高级语言。
我使用 python 使用过 ZeroMQ 和 Redis。我会说 ZeroMQ 更健壮,它提供了真正简单的负载平衡,而且比 pub-sub 更多,比如请求回复等。但是如果你只是在pub-sub之后,redis就简单多了。
如果 redis 服务器崩溃或停止工作,所有客户端也将停止工作,使用 ZeroMQ,即使没有服务器,客户端也可以工作。
这两种服务都可用于任何编程语言、ruby、python、C、C++ 等。
总之,redis简单很多,很可靠。ZeroMQ 非常可靠但更复杂。
如果我只做 pub sub,我会选择 redis,否则我会选择 ZeroMQ。如果我能预见大量的流量,我会选择 ZeroMQ
ZeroMq 优点/缺点
NEWS
订阅匹配NEWS*
消息 Redis 的优点/缺点
news.*
支持我自己一直在研究这个,因为我需要决定是使用 Redis pubsub 还是 ZMQ pubsub 作为分布式系统的通信层。我认为 Redis 和 ZMQ 在应用程序的设置方式上有所不同。
ZMQ pubsub 天生就直接连接,即没有中间人。
您可以创建类似中间人的实例,例如转发器设备
对于 Redis pubsub,订阅者和发布者都需要连接到 Redis。
ZMQ 中缺少中间人意味着订阅者需要以某种方式知道连接到发布者以获取消息。在我的系统中,应用程序生成需要向订阅者发送信息的发布者,如果没有订阅者在我的应用程序启动之前连接的转发器设备,就无法做到这一点。
延迟在我的系统中很重要,因为我希望远程盒子尽可能快地完成任务。
Zmq (direct pubsub)
avg: 0.000235867897669
max: 0.0337719917297
min: 0.000141143798828
Zmq (w/ forwarder)
Avg: 0.00237249334653
max: 0.00536799430847
min: 0.000249862670898
Redis (8gb ram)
avg: 0.000687216520309
max: 0.0483138561249
min: 0.000313997268677
Redis (32gb ram)
avg: 0.000272458394368
max: 0.00277805328369
min: 0.000216960906982
这就是我的决定。使用每个产品制作最少的测试用例。看看哪个更容易构建并且效果更好。将每个测试用例推得更远一点,然后因为工作量太大而丢弃一行。