RabbitMQ系列之初识MQ

MQ的基本概念

MQ概念

MQ全程Message Queue(消息队列),是在消息的传输过程中保存消息的容器,多用于分布式系统之间进行通信。

分布式系统两种通信方式:直接远程调用、借助第三方(MQ)完成间接通信

消息的发送方称为生产者,接收方称为消费者

MQ的优势和劣势

优势

  • 应用解耦

    A系统只关注往MQ中发送消息,不关注后续链路处理,如果后续链路中的B系统挂了也不影响A系统的正常工作,当B系统重新启动后会去MQ消费之前发送的消息,提升系统容错性和可维护性

  • 异步提速

    由于各子系统解耦,所以A系统不需要等待B系统的响应回写之后再做后续操作,只要往MQ中发送消息成功就可以继续执行后续操作,整个过程耗时减短,提升用户体验和系统吞吐量

  • 削峰填谷

    例如A系统支持最大吞吐为1000,当某时刻过来5000请求势必导致A系统宕机,解决办法就是在请求A系统之前加入MQ即5000请求首先将消息发送到MQ(消息队列吞吐量比应用系统大很多),这样高峰期产生数据被积压在MQ中,对A系统来说高峰期被“削”掉了,只需要在之后的按1000的消费速度去消费这些消息即可,提升系统稳定性

劣势

  • 系统可用性降低

    系统引入的外部依赖越多,系统的稳定性就越差,一旦MQ宕机,就会对业务造成影响

    问题:如何保证MQ的高可用?

  • 系统复杂度提高

    MQ的加入大大增加了系统的复杂度

    问题:如何保证消息没有被重复消费?

    怎么处理消息丢失情况?

    怎么保证消息传递的顺序性?

  • 一致性问题

    A系统发送消息,通过MQ给B、C系统,如果B系统处理成功,C系统处理失败

    问题:如何保证消息数据处理的一致性?

既然MQ有优势也有劣势,那么MQ的引入满足什么条件呢?

  • 生产者不需要从消费者处获取反馈。引入消息队列之前的直接调用,其接口的返回值应该是空,这种情况下即使下层动作还没做,上层可以当成动作做完了继续往后走,即所谓异步
  • 容许短暂的不一致性
  • 效益大于维护成本,即解耦、提速、削峰这些方面带来的收益要超过加入MQ带来的系统维护成本

常见的MQ产品

在这里插入图片描述

在实际生产中可根据项目着重点,择优选择

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值