消息队列使用优缺点和各种MQ适用场景

目录

1 简述MQ

2 为什么使用消息队列啊?

2.1 解耦

2.2 异步

2.3 削峰

3 消息队列缺点

4 kafka、rabbitmq、rocketmq优点和缺点

5 总结


1 简述MQ

MQ:MessageQueue,消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理。QQ和微信就是典型的MQ。

2 为什么使用消息队列啊?

比较核心的有3个:解耦、异步、削峰

2.1 解耦

解耦前:

解耦后:

1.如果有一个新系统接入,需要A系统数据,A系统就要去写代码给新系统提供对应的数据.如果有MQ,新系统直接去消费即可,不需要A修改代码

2.就算调用对方接口,还需要考虑是否对方能收到,是否需要重试,引入mq就可以解决

2.2 异步

使用异步后添加三个mq进行处理消息

1.异步提升并发量

2.提升效率,不必要考虑对方是否接收消息成功与否

2.3 削峰

采用MQ削锋可以积压消息不至于卡死,等高峰期过了之后慢慢处理

 

1.积压到mq,慢慢来消费不至于让系统一下子被打死

3 消息队列缺点

优点上面已经说了,就是在特殊场景下有其对应的好处,解耦、异步、削峰

缺点呢?显而易见的

1.系统可用性降低(MQ挂了):MQ挂了,整套系统崩溃了。

2.系统复杂性提高:重复消费、消息丢失、消息传递的顺序性

3.一致性问题:A系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD三个系统那里,BD两个系统写库成功了,结果C系统写库失败了,数据就不一致了。

所以消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种额外的技术方案和架构来规避掉,系统复杂度提升了一个数量级,也许是复杂了10倍。但是关键时刻,用,还是得用的。

4 kafka、rabbitmq、rocketmq优点和缺点

5 总结

大概对比一下几大主流MQ的优缺点。ActiveMQ因为吞吐量低,也没有什么突出的优势,用的人也少了。RabbitMQ主要特点是消息延迟低,并发能力强,而且安全可靠,所以并发量不是很大的金融行业据说用的多,互联网公司可能用的少,因为他的开发语言是Erlang,可能懂得人不多,出问题不好定位。而RocketMQ是阿里开源的MQ,并发高,功能多,用的好像挺多。Kafka主要用在大数据领域。这些话呢,也主要是网上看的,并没有实际调研过,有确切的数据,不过理论上是可信的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赵广陆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值