几种消息队列中间件的对比

  1. 为什么使用消息队列?
    解耦、异步、削峰
  2. 消息队列的优点和缺点?
    缺点:
    ● 系统可用性降低-如mq挂掉,下游系统都可能会出现故障
    ● 系统复杂性变高
    ● 一致性问题
  3. kafka、activemq、rabbitmq、rocketmq都有什么区别以及适合哪些场景?
特性ActiveMQRabbitMQRocketMQKafka
单机吞吐量万级万级10万级10万级,一般配合大数据进行实时数据计算日志采集
topic数量对吞吐量的影响topic可以达到几百、几千级别,几十到几百个吞吐量会大幅度下降,同等机器下尽量保证topic数量不要过多
时效性ms级微秒级,延迟最低ms级ms以内
可用性高,基于主从架构同activemq分布式架构分布式,一个数据多个副本
消息可靠性有较低的概率丢失经过参数优化可以做到0丢失同rocketmq
功能支持mq功能完备基于erlang开发,并发能力极强功能完善,扩展性好功能简单
优劣势非常成熟,功能成熟,偶尔会有较低概率丢失消息,社区以及应用越来越少,官方维护也在减少erlang开发,性能好,延迟低,mq功能完备,社区活跃吞吐量相对比较低,erlang语言问题java源码,阿里,性能好,扩展方便,可以支撑大规模topic数量,社区活跃度相对较低消息容易重复
  1. 高可用如何保证
    rabbitmq:镜像集群模式-创建queue的数据会在所有节点上存在
    kafka:(broker,topic,partition)副本机制
    rocketmq:master(brokerid=0),slave集群
  2. 幂等性
    利用数据库主键,redis设置key
  3. 可靠性传输
    rabbitmq:事务机制(基于同步机制会导致吞吐量降低),channel confirm模式,rabbitmq开启持久化功能(设置channel持久化、发送消息时设置消息持久化),消费者消费autoAck机制
    kafka:消费端关闭自动提交offset改为手动提交,topic设置replication.factor值大于1,kafka服务端设置min.insync.replicas大于1,producer端设置acks=all,设置retries=Max无限次重试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

苜蓿花乐园

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

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

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

打赏作者

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

抵扣说明:

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

余额充值