消息队列
常用消息队列:
ActlveMQ
、RabbitMQ
、RocketMQ
、kafka
1、消息队列优缺点
优点:
解耦
:降低各个系统之间的耦合度,将数据消费的主动权交给各个系统;异步
:同时处理多个请求;削峰
:高并发时期,将数据积压在MQ里,单位时间内定量流出,高峰期过后慢慢将积压的数据放出来,减轻系统的压力。
缺点:
可用性降低
:依赖性变高,一旦MQ挂了之后,整个系统就崩溃了;复杂性提高
:存在重复消费、消息丢失、执行顺序错乱问题;一致性问题
:在一个多系统中,A系统产生消费信息并返回成功,用户会收到请求成功指令,之后的程序中如果BC系统正常执行,D系统发生异常,此时就产生了数据不一致问题。
2、为什么使用消息队列
解耦、异步、削峰。
工作原理图:
解耦:
异步:
不使用MQ的同步高延时场景:
使用MQ异步执行: