母亲节 mq

消息队列(mq)是什么?是生产者先将消息投递一个叫队列的容器中,然后再从这个容器中取出消息,最后再转发给消费者 。
消息队列是 Microsoft 的消息处理技术,它在任何安装 Microsoft Windows 的计算机组合中,为任何应用程序提供消息处理和消息队列功能,无论这些计算机是否在同一个网络上或者是否同时联机 。
消息队列网络是能够相互间来回发送消息的任何一组计算机 。网络中的不同计算机在确保消息顺利处理的过程中扮演不同的角色 。它们中有些提供路由信息以确定如何发送消息,有些保存整个网络的重要信息,而有些只是发送和接收消息 。
消息队列的类型介绍:
消息队列目前主要有两种类型:POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用 。每个消息队列都有一个队列头,用结构struct msg_queue来描述 。队列头中包含了该消息队列的大量信息 。包括消息队列键值、用户ID、组ID、消息队列中消息数目等等 。
消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级 。对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息 。消息队列是随内核持续的 。
mq是什么意思?消息队列(MQ),是一种应用程序对应用程序的通信方法 。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们 。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术 。排队指的是应用程序通过队列来通信 。队列的使用除去了接收和发送应用程序同时执行的要求 。
关于MQ:
全称Mental Intelligence Quotient,“心商” 。MQ(心商)就是维持心理健康、缓解心理压力、保持良好心理状况和活力的能力 。就是保持良好心态,调节心理压力,以保证良好的心理状况和活动的能力 。
影响心商的因素很多,包括思维、心态、性格等方面,它们对心商的培养都起着至关重要的作用 。人的综合心理素质可采用“心商”参量来描述,其大小取决于人的综合心理年龄与其实际年龄的比值 。其中,心商可用智商、情商与意商的加权平均值来确定,其加权数主要取决于事实关系、价值关系与实践关系分别在人的生活和工作中所占据的比重 。
MQ简单了解1,为什么要用mq?
2,引入mq会多哪些问题?
3,如何解决这些问题?
---
一:传统模式有哪些痛点
(1)有些复杂的业务系统,一次用户请求可能会同步调用N个系统的接口,需要等待所有的接口都返回了,才能真正的获取执行结果 。这种同步接口调用的方式总耗时比较长,非常影响用户的体验,特别是在网络不稳定的情况下,极容易出现接口超时问题 。
(2)系统之间耦合性太高,如果调用的任何一个子系统出现异常,整个请求都会异常,对系统的稳定性非常不利 。
(3)对于类似于秒杀场景的峰值爆炸的场景,系统的稳定性堪忧;
二:为什么要用mq?
(1)异步:同步接口调用导致响应时间长的问题,使用mq之后,将同步调用改成异步,能够显著减少系统响应时间 。避免耗时时间长,影响用户体验的事情发生
(2)解耦:子系统间耦合性太大的问题,使用mq之后,我们只需要依赖于mq,避免了各个子系统间的强依赖问题 。这样就把之前复杂的业务子系统的依赖关系,转换为只依赖于mq的简单依赖,从而显著的降低了系统间的耦合度 。
(3)削峰:由于突然出现的请求峰值,导致系统不稳定的问题 。使用mq后,能够起到消峰的作用 。
订单系统接收到用户请求之后,将请求直接发送到mq,然后订单消费者从mq中消费消息,做写库操作 。如果出现请求峰值的情况,由于消费者的消费能力有限,会按照自己的节奏来消费消息,多的请求不处理,保留在mq的队列中,不会对系统的稳定性造成影响 。
三:引入mq会出现哪些问题:
1,重复消息问题
重复消费问题可以说是mq中普遍存在的问题,不管你用哪种mq都无法避免 。
有哪些场景会出现重复的消息呢?
消息生产者产生了重复的消息
kafka和rocketmq的offset被回调了
消息消费者确认失败
消息消费者确认时超时了
业务系统主动发起重试
如果重复消息不做正确的处理,会对业务造成很大的影响,产生重复的数据,或者导致数据异常;

秒懂生活扩展阅读