1:概述
消息队列,分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削峰等问题。可实现高性能,高可用,可伸缩的最终一致性架构,是大型分布式系统不可或缺的基本组件【中间件】。
注意:消息队列容易与Java内部的MessageQueue搞混,我们一般所谓的消息队列,多指消息中间件,分布式消息队列。
2:目前主流的信息队列
Kafka
RabbitMQ
RocketMQ,老版本叫MetaQ
ActiveMQ,日落西山
Ones【阿里】
自研的MQ
3:消息队列的组成
Producer 消息的生产者
Consumer 消息的消费者
Message Broker:主要职责存储消息,转发消息。转发消息又分:Pull类型,Push类型
Pull:是指 Consumer 主动从 Message Broker 获取消息
Push:是指 Message Broker 主动将 Consumer 感兴趣的消息推送给 Consumer
4:消息队列的五大场景
应用解耦
异步处理
削峰填谷
日志处理
消息通讯【很少,IM】
5:消息队列优缺点
优点:应用解耦、异步提速、削峰填谷
缺点:
系统可用性降低:一荣俱荣,一损俱损,外部依赖越多,服务越是容易挂掉。
系统复杂度提升:1.消息怎么保证不重复消费。2.消息怎么保证不丢失。3.需要怎么保证顺序
性会出现一致性【没有共识】问题:弱一致、强可用。引入MQ需要保证数据的最终一致性,且
系统能够容忍短暂的不一致性。