为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?...

  • 为什么使用消息队列?
  • 消息队列有什么优点和缺点?
  • Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?

  • 为什么使用消息队列

消息队列的使用场景总结起来常见的有三个:解耦、异步、削峰。

  • 解耦

例如 系统1发送数据给系统2,系统3,系统4,通过接口来调用,现在系统5需要数据,系统4不需要数据了。此刻我们就需要去a系统中重新编写和删除相应接口,耦合严重。

6244653-c140966f47f872c0.png
耦合的系统

此刻还要关注一些问题,调用接口的系统挂了怎么办,要不要重发,怎么存储消息,这是个问题。
但是我们应用一个MQ,系统将数据发送到MQ中,让其他系统自己去调用消费,此时系统不在考虑给哪个系统发送数据,不需要维护这个代码,不需要考虑是否失败超时等情况。

6244653-cd53badd68ffa739.png
mq

总结:通过 MQ,Pub/Sub 发布订阅消息这么一个模型,系统彻底解耦了。

  • 异步

A系统给每个系统发送接口数据都需要要损耗时间


6244653-d1ff8da6ec8a4af6.png
同步

系统在短时间内发送多个接口数据给MQ队列,其他系统直接去队列中消费消息,损耗时间极短,可以理解为将串行,变为并行发送的数据。


6244653-dec69e875c79be19.png
异步
  • 削峰
    在系统访问高峰期的时候大量并行请求落到数据库中,可能直接导致mysql崩溃。


    6244653-794c485df7eb7dbd.png
    访问数据库

例如此刻有5k请求,数据库只能承受2k,我们可以将5k请求放到MQ中,然后系统每次拉取2k请求的数据,虽然请求大的时候会积压数据,但是避免的mysql奔溃,保持系统正常使用


6244653-ede448e16d192139.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值