消息中间件介绍以及常见消息中间件对比

本文探讨了消息队列在系统解耦、削峰填谷和增强可拓展性方面的作用,详细分析了其可能带来的系统复杂度提升及注意事项,并对比了几种主流消息中间件如ActiveMQ、RabbitMQ、RocketMQ和Kafka的特性与适用场景。

一、为什么要使用消息队列

1. 解耦及异步

使用消息队列可以将同步调用变为异步调用,同时降低系统模块之间的耦合度

解耦
2. 削峰

当系统压力过大时,将操作缓存在消息队列中,后面不断读取消息进行操作,达到削峰的目的

削峰
3. 复用(可拓展性)

如果系统A要发送消息给多个系统,此时每增加一个子系统,系统A的代码就需要修改,使用消息队列之后,系统A将消息发送到消息队列,其他系统读取消息即可。新增系统时只需到消息队列和宗读取消息即可

复用

二、需要注意事项

1. 注意提高可用性

当MQ服务器宕机时,备用方案。

2. 系统复杂度提高
  1. 消息重复消费问题
  2. 消息丢失问题
  3. 消息传递顺序问题
3. 一致性问题

当多系统处理同一条消息时,同步调用可直接返回失败,使用消息队列的异步调用该如何处理

三、 常见消息中间件对比

ActiveMQRabbitMQRocketMQKafka
实现语言javaerlangjavascala
吞吐量万级万级十万级十万级
时效ms微秒msms
可用性高(主从)高(主从)非常高(分布式)非常高(分布式)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值