加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

常用动静中间件17个维度全方位比拟

发布时间:2019-09-19 04:58:15 所属栏目:建站 来源:搬砖的码哥
导读:本文先容了Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ 17 个方面综合比拟作为动静行列行使时的差别。 一 资料文档 Kafka:中。有kafka作者本身写的书,网上资料也有一些。rabbitmq:多。有一些不错的书,网上资料多。zeromq:少。没有专门写zeromq的书

未确认的动静不会有逾期时刻,假如一向没有确认,而且没有断开毗连,rabbitmq会一向守候,rabbitmq应承一条动静处理赏罚的时刻可以好久好久。

  • zeromq:支持
  • rocketmq:支持
  • activemq:支持

十五 动静回溯

  • Kafka:支持指定分区offset位置的回溯
  • rabbitmq:不支持
  • zeromq:不支持
  • rocketmq:支持指按时刻点的回溯
  • activemq:不支持

十六 动静重试

Kafka:不支持,可是可以实现。

kafka支持指定分区offset位置的回溯,可以实现动静重试。

rabbitmq:不支持,可是可以操作动静确认机制实现。

rabbitmq吸取方确认机制,配置autoAck为false。

当autoAck为false的时辰,rabbitmq行列会分成两部门,一部门是守候投递给consumer的动静,一部门是已经投递可是充公到确认的动静。假如一向没有收到确认信号,而且consumer已经断开毗连,rabbitmq会布置这个动静从头进入行列,投递给原本的斲丧者可能下一个斲丧者。

zeromq:不支持

rocketmq:支持。

动静斲丧失败的大部门场景下,当即重试99%城市失败,以是rocketmq的计策是在斲丧失败时按时重试,每次时距离断沟通。

1、发送端的 send 要领自己支持内部重试,重试逻辑如下:

a)至多重试3次;

b)假如发送失败,则轮转到下一个broker;

c)这个要领的总耗时不高出sendMsgTimeout 配置的值,默认 10s,高出时刻不在重试。

2、吸取端。

Consumer 斲丧动静失败后,要提供一种重试机制,令动静再斲丧一次。Consumer 斲丧动静失败凡是可以分为以下两种环境:

因为动静自己的缘故起因,譬喻反序列化失败,动静数据自己无法处理赏罚(譬喻话费充值,当前动静的手机号被

注销,无法充值)等。按时重试机制,好比过 10s 秒后再重试。

因为依靠的下流应用处事不行用,譬喻 db 毗连不行用,外体系收集不行达等。

纵然跳过当前失败的动静,斲丧其他动静同样也会报错。这种环境可以 sleep 30s,再斲丧下一条动静,减轻 Broker 重试动静的压力。

activemq:不支持

十七 并发度

Kafka:高

一个线程一个斲丧者,kafka限定斲丧者的个数要小于便是分区数,假如要进步并行度,可以在斲丧者中再开启多线程,可能增进consumer实例数目。

rabbitmq:极高

自己是用Erlang说话写的,并发机能高。

可在斲丧者中开启多线程,最常用的做法是一个channel对应一个斲丧者,每一个线程独霸一个channel,多个线程复用connection的tcp毗连,镌汰机能开销。

当rabbitmq行列拥有多个斲丧者的时辰,行列收到的动静将以轮询的分发方法发送给斲丧者。每条动静只会发送给订阅列内外的一个斲丧者,不会一再。

这种方法很是得当扩展,并且是专门为并发措施计划的。

假如某些斲丧者的使命较量沉重,那么可以配置basicQos限定信道上斲丧者能保持的最大未确认动静的数目,在到达上限时,rabbitmq不再向这个斲丧者发送任何动静。

zeromq:高

rocketmq:高

1、rocketmq限定斲丧者的个数少于便是行列数,可是可以在斲丧者中再开启多线程,这一点和kafka是同等的,进步并行度的要领沟通。

修改斲丧并行度要领

a) 统一个 ConsumerGroup 下,通过增进 Consumer 实例数目来进步并行度,高出订阅行列数的 Consumer实例无效。

b) 进步单个 Consumer 的斲丧并行线程,通过修改参数consumeThreadMin、consumeThreadMax

2、统一个收集毗连connection,客户端多个线程可以同时发送哀求,毗连会被复用,镌汰机能开销。

activemq:高

单个ActiveMQ的吸取和斲丧动静的速率在1万笔/秒(耐久化 一样平常为1-2万, 非耐久化 2 万以上),在出产情形中陈设10个Activemq就能到达10万笔/秒以上的机能,陈设越多的activemq broker 在MQ上latency也就越低,体系吞吐量也就越高。

版权阐明:本文来自知乎,更多相干答复:http://t.cn/RVDWcfe,版权归原创者全部。除非无法确认,我们城市标明作者及出处,若有侵权烦请奉告,我们会当即删除并暗示歉意,感谢。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读