架构演进
介绍
- 同步调用变成异步调用
- 生产数据与消费数据分离
- 协调不同处理速度
生产者
- 系统运转的动力
- 为下一个环节产生待处理的工作/数据
- 与消费者的关系
- 重点在如何将数据发送到容器
- 对消费者无依赖
- 不关注消费者的how/when
- 发送顺序
消费者
容器
平衡
与EDA对比
消费策略
优点
低耦合
分布式部署
平衡系统差速
削峰填谷
设计生产者消费者系统
数据单元
- 定义
- 生产者放入/发送到容器的单体
- 容器内存储的单体
- 消费者消费的单体
- 从业务逻辑推导
- 数据单元具备业务含义
- 数据单元的颗粒度适中
- 完整性保证:传输过程中的数据单元不可缺失
- 无依赖
- 数据单元是独立的
- 两个数据单元之间互无影响
设计生产者
生产者成功确认
序列化
异常处理
消费模式
- 推(push)
- 由container发起,将数据单元推送给consumer
- Consumer可以尽快获取数据
- 拉(pull)
- 由consumer发起
- Long polling
- 获取数据有滞后
- 分发
-
Queue
- Point to point
- 1 -> 1
- 不可重复消费
-
Pub/Sub
- Topic
- 1 -> N
- 重复消费
-
消费确认和策略