kafka,activemq,rabbitmq,rocketmq都有什么区别?

对于吞吐量来说kafka和rocketmq支持高吞吐,activemq和rabbitmq比他们低一个数量级。对于延迟量来说rabbitmq是最低的

1.从社区活跃度

按照目前网络上的资料,rabbitmq、activemq、zeromq三者中,综合来看,rabbitmq是首选

2.持久化消息比较

activemq和rabbitmq都支持。持久化消息主要是指我们机器在不可抗力因素等情况下挂掉了,消息不会丢失的机制

3.综合技术实现

可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统等等

rabbitmq/kafka最好,activemq次子,zeromq最差。当然zeromq也可以做到,不过自己必须手动写代码实现,代码量不少。尤其是可靠性中的:持久化、投递确认、发布者证实和高可用性

4.高并发

rabbitmq最高,原因是它的实现语言是天生具备高并发高可用的erlang语言。

5.比较关注的比较,rabbitmq和kafka

rabbitmq比kafka成熟,在可用性上,稳定性上,可靠性上,rabbitmq胜于kafka(理论上)。另外,kafka的定位主要在日志等方面,因为kafka设计的初衷就是处理日志的,可以看做是一个日志(消息)系统一个重要组件,针对性很强,所有如果业务方面还是建议选择rabbitmq。还有就是,kafka的性能(吞吐量、TPS)比rabbitmq要高出来很多

设置mq的思路

比如说这个消息队列系统,我们从以下几个角度来考虑一下:

首先这个 mq 得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下kafka 的设计理念,broker -> topic -> partition,每个 partition 放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给 topic增加 partition,然后做数据迁移,增加机器,不就可以存放更多数据,提供更高的吞吐量了?

其次你得考虑一下这个 mq 的数据要不要落地磁盘吧?那肯定要了,落磁盘才能保证别进程挂了数据就丢了。那落磁盘的时候怎么落啊?顺序写,这样就没有磁盘随机读写的寻址开销,磁盘顺序读写的性能是很高的,这就是 kafka 的思路。

其次你考虑一下你的 mq 的可用性啊?这个事儿,具体参考之前可用性那个环节讲解的 kafka 的高可用保障机制。多副本 -> leader &follower -> broker 挂了重新选举 leader 即可对外服务。能不能支持数据 0 丢失啊?可以的,参考我们之前说的那个 kafka 数据零丢失方案

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qinꦿ.๓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值