MQ(Message queuing)由来:
Message queuing的需求由来已久,在19世纪80年代金融交易中,美国高盛等公司采用Teknekron公司的产品,当时的Message queuing软件叫做(the information bus(TIB)),后来TIB被电信和通讯等公司采用,然后路透社收购了Teknekron公司,再然后 IBM 公司开发了 MQSeries,并且微软也开发了 Microsoft Message Queue(MSMQ),但是这些商业 MQ 供应商的问题是厂商锁定及使用价格高昂,于是 2001 年,Java Message queuing 试图解决锁定和交互性的问题,但对应用来说反而更加麻烦了,于是2004年,摩根大通和iMatrix开始着手Advanced Message Queuing Protocol (AMQP)开放标准的开发,2006 年,AMQP 规范发布,2007年,Rabbit 技术公司基于 AMQP 标准开发的 RabbitMQ 1.0 发布。
MQ(Message queuing)定义:
消息队列的目的是为了实现各个 APP 之间的通讯,APP 基于 MQ 实现消息的发送和接收实现应用程序之间的通讯,这样多个应用程序可以运行在不同的主机上,通过 MQ 就可以实现夸网络通信,因此 MQ 实现了业务的解耦和异步机制。
MQ(Message queuing)的使用场合:
消息队列作为高并发系统的核心组件之一,能够帮助业务系统结构提升开发效率和系统稳定性,
消息队列主要具有以下特点:
削峰填谷:主要解决瞬间写压力大于应用服务器能力导致消息丢失、系统崩溃等问题;
系统解耦:解决不同重要程度、不同能力级别系统之间依赖导致一死全死;
提升性能:当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统;
蓄流压测:线上有些链路不要压测,可以通过积压一定量消息再放开来压测;