一、MQ(Message Queue)
(1)Message Queue:消息队列/消息中间件。
消息:微信、邮件等消息。
中间件:send->MQ->recive
MQ种类:kafka、RabbitMQ、RocketMQ、ActiveMQ
(2)技术维度:
1.API发送和接受
2.MQ的高可用性
3.MQ的集群和容错配置
4.MQ的持久化(如Redis,有AOF和RDB)
5.延时发送/定时投递
6.签收机制Spring整合
7.。。。。
(3)应用
1.场景:好比就医看病,不用排长队,只用挂号完等着轮到自己 就ok。
2.能做到什么?解决了耦合调用的问题-解耦,排队看病不看好不走,异步就可以等着我有药方了能看好了再处理-异步,抵御洪峰流量达到保护主业务的目的-消峰。
(4)存在的问题
1,系统之间接口耦合比较严重,下游修改,上游也要修改。
2,面对大流量并发时,容易被冲垮---如秒杀活动。
3,等待同步存在性能问题
4,以上问题如何解决?
二、理论知识
面向消息的中间件(message-oriented middleware MOM)能够很好地解决以上问题。
1.定义:是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
通过提供消息传递和消息排队模型在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等功能。
2.大致过程描述:
发送者把消息发送给消息服务器,消息服务器将消息存放在若干队列/主题中,在合适的时候,消息服务器会将消息转发给接受者。在这个过程中,发送和接收是异步的。也就是发送无需等待,而且发送者和接收者的生命周期也没有必然关系;
尤其在发布pub/订阅sub模式下(微信公众号),也可以完成一对多的通信,即让一个消息有多个接收者。