目录
Spring Cloud Alibaba 中的RocketMQ
Spring cloud alibaba RocketMQ实例
MQ可以做什么?
业务异步解耦
解耦微服务
流量削峰填谷
消息分发
分布式事务的数据一致性
主流的 MQ : RocketMQ、kafka、RabbitMQ
RocketMQ基础知识
java、分布式消息中间件。
支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。
支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型。
支持拉pull和推push两种消息模式。
PS:Push其底层是一个pull模式,它由一个业务代码从MQ中pull消息,再由业务代码push给特定的应用/消费者。
支持多种消息协议,如:JMS\MQTT等。
提供docker镜像用于隔离测试和云集群部署。
RocketMQ核心组成
NameServer、Broker、Producer以及Consumer四部分。
NameServer
RocketMQ 的服务注册中心,是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。
作用:
用来保存 Broker 相关元信息并给 Producer 和 Consumer 查找Broker 信息。
每个 Broker 在启动的时候会到 NameServer 注册,Producer 在发送消息前会根据 Topic 到NameServer 获取到 Broker 的路由信息,进而和Broker取得连接。Consumer 也会定时获取 Topic 的路由信息。
主要包含两个功能:
1、Broker 管理,接收来自 Broker 集群的注册请求,提供心跳机制检测 Broker 是否存活;
2、路由管理,每个 NameServer 持有全部有关 Broker 集群和客户端请求队列的路由信息;
Broker
消息服务器,负责存储消息、转发消息。
PS:元数据,包括消费者组、消费进度偏移量、队列消息等。
Broker 有 Master 和 Slave 两种类型,Master