这是我参与「第五届青训营」笔记创作活动的第11天。
消息中间件(队列)
在分布式系统中完成消息的发送和接收的基础软件。消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。
发布订阅模式
定义对象之间的一对多依赖关系,以便在一个对象更改状态时,自动通知并更新其所有依赖关系。
事件驱动架构-EDA
事件驱动体系结构是一种体系结构样式,将系统的传入请求收集到一个或多个中心事件队列中。事件从事件队列转发到要处理事件的后端服务。
作用
- 异步
- 解耦
- 削峰
RocketMQ
- 阿里开源
- Java语言编写
- 分布式,高可靠
- 丰富的队列功能
- 大规模消息积压
- 社区活跃,成熟度高
Broker Server: 消息中转角色,负责存储消息,转发消息
Name Server :路由消息的提供者,多个实例相互独立
Producer Group:同一类Producer的集合,Producer发送同一类消息且发送逻辑一致
Consumer Group:同一类Consumer的集合,Consumer消费同一类消息且消费逻辑一致
Topic:表示一类消息的集合,是RocketQ进行消息订阅的基本单位
Clustering: 相同consumer Group的每个Consumer实例平均分摊信息
Broadcasting : 相同Consumer Group的每个Consumer实例都接收到全量信息。
Pull:主动调用Consumer的拉消息方法从Broker服务器拉消息、主动权由应用控制
Push: 基于Pull模式长轮询机制实现,不是真正的Push
特性: 死信队列 顺序消息 事务消息 定时消息 冋溯消息