老婆问什么是消息队列MQ

目录

MQ是什么

MQ能做什么

异步

解耦

削峰

有什么问题

怎么用


老婆是非计算机专业毕业,也是机缘巧合进入了IT行业,做一些项目助理或者客户需求沟通的工作。虽然不需要负责具体的技术工作,但平时和各类技术文档、技术人员打交道比较多,多少耳濡目染同时也需要理解一些技术知识。所以茶余饭后也会经常聊起,为了展示自己的专业能力,知道的就得跟她掰扯明白,不知道的也得感觉去百度搞明白了再回来掰扯。这不这次就说到了MQ。

MQ是什么

问:技术文档里经常提到消息队列MQ,到底是个什么呢?是不是指的就是消息通讯,比如像QQ弹出的提醒消息通知那种?

答:你说的这个场景可能也会涉及到消息队列,但是MQ通常并不用在同客户端的通讯上。简单理解来说,消息就是信息数据,队列就是进出,那消息队列主要就是数据的产生和处理的过程咯,也就是一个数据通讯的中间件。常使用在系统内部或者系统之间的通讯上。

问:我们常说的接口API不也是用来做数据交互的吗?

答:对。但是api是指双方约定的一种交互协议方式。MQ作为中间件是要提供通讯机制给双方的,在消息队列里,产生数据的叫生产者,处理数据的则被称为消费者。可能从应用场景来说会更好理解点。

MQ能做什么

问:那么为什么要用MQ,它有什么用处呢

答:说起MQ,就会提到异步、削峰、解耦,这也是消息队列最主要的应用场景。这几个词都听说过吧?

问:多少看到过,一个个讲讲吧。

异步

答:先说异步,相对的就是同步,怎么说呢。比如你去某颜悦色买奶茶,付款之后在那等着给你做好打包拿走就是同步,而现在店家会给你一个号牌,付钱之后你可以去干别的事情,等奶茶做好了过来拿,这种方式就类似异步了。

问:对对,等待的时间我可以去逛街买包包或者再买点其他小吃

答:对软件系统而言也是,比如在网上买东西,实际上电商的处理流程是非常多的,如果全部同步处理可能会需要比较长的时间,如果采用异步,在核心逻辑处理(比如支付)之后系统就会提示订单下达成功,实际上可能系统后续会进行异步处理库存调配、积分优惠、通知商家、对接核账等等一系列事情。

上面这些异步的动作都可以通过消息队列的机制(产生消息-处理消息)来实现。

很明显,异步的好处会减少等待时间、提升客户体验、提高处理效率。

 问:理解了,看起来这样的话奶茶店可以卖更多的奶茶,系统也可以处理更多事情啦。

解耦

答:接下来说说解耦。解耦的意思是降低或者解除关联性,这个和微服务的解耦类似。

比如上面说的奶茶店,订单支付后,通过消息通知各个环节进行准备制作,这个中间过程各自是不需要关心别人是否做完,进行得怎么样,只需要接到通知开始,然后完成之后反馈即可。

问:听起来和异步、多线程差不多嘛?

答:使用消息队列进行解耦的好处是,上游只需要把消息推送到队列,下游也只需要负责接收消息处理,是不是边界责任就清晰了,而某个消息处理异常了,也不会影响别人该做的事情。

问:嗯,这样各种专注各自的事情,管好自己系统,也能更好把工作完善到极致。

削峰

答:最后是削峰。这个词可能出现比较少,因为只有达到一定规模或者流量的场景才需要考虑。按字面理解的话就是高峰时期的限流。

问:就像节假日景区限流,或者奶茶点的排长队了

答:差不多。对部分软件系统而言,系统的流量可能是波动的,尤其是电商或者类似12306这种系统,大促或者节假日流量会是平常的数百甚至千倍,显然系统不会因此一直保持高峰时期的处理能力。

这个时候,MQ的机制就会发挥保护系统的作用。如果系统对高峰请求也都进行实时处理,必然会超过负荷导致宕机不可用,通过消息队列并且设置一定的消费策略,就可以按系统最大能承受的压力进行业务的处理的,通过牺牲一定的等待时间来保证系统的稳定性和处理效率。

有什么问题

问:消息队列这么强大,那我们所有的系统都可以推荐使用这种机制啦

答:不一定,任何技术都是有好处也会带来新的问题。消息队列的特性导致使用它会带来系统复杂性的提升。比如消息的丢失、重复消费、各个消费者之间的数据一致性问题,这些都是额外需要花费设计或者运维能力去做的。

问:那没有应用场景需求的项目,或者技术资源不够强大的团队就要慎重考虑了。

怎么用

问:MQ的使用是免费还是收费的?如果我们要使用有什么样的选择?

答:目前在市面上比较主流的消息队列中间件主要有:Kafka、ActiveMQ、RabbitMQ、RocketMQ 等几种。这些大多是开源的,各自有不同的特点优点,比如kafka单机吞吐量高,RabbitMQ延时相对较低等。技术团队可以根据自身的业务要求和技术擅长进行选型。

问:既然有开源免费的,为啥还看到阿里云、腾讯云等一些平台提供了收费的MQ呢?

答:如果你有钱或者技术资源不够,那么使用云厂商提供的MQ是更好的选择。服务商会根据你的需求分析选型、调配所需的硬件资源,并且一般会提供集群等高可用方案,还有基于云厂商强大的技术能力对各类MQ进行封装优化,使用起来肯定比自己搞坑要少得多。

而之前也说了MQ会带来更多的复杂性,出了问题也可以帮助你解决,免去很多后顾之忧啊。

另外按使用流量进行商业付费的MQ也更贴合有些波动的业务系统,看起来更划算。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值