架构演进




介绍

- 同步调用变成异步调用
- 生产数据与消费数据分离
- 协调不同处理速度
生产者
- 系统运转的动力
- 为下一个环节产生待处理的工作/数据
- 与消费者的关系
- 重点在如何将数据发送到容器
- 对消费者无依赖
- 不关注消费者的how/when
- 发送顺序
消费者

容器

平衡

与EDA对比

消费策略

优点
低耦合

分布式部署

平衡系统差速

削峰填谷


设计生产者消费者系统
数据单元
- 定义
- 生产者放入/发送到容器的单体
- 容器内存储的单体
- 消费者消费的单体
- 从业务逻辑推导
- 数据单元具备业务含义
- 数据单元的颗粒度适中
- 完整性保证:传输过程中的数据单元不可缺失
- 无依赖
- 数据单元是独立的
- 两个数据单元之间互无影响
设计生产者
生产者成功确认

序列化

异常处理

消费模式
- 推(push)
- 由container发起,将数据单元推送给consumer
- Consumer可以尽快获取数据
- 拉(pull)
- 由consumer发起
- Long polling
- 获取数据有滞后
- 分发
-
Queue
- Point to point
- 1 -> 1
- 不可重复消费

-
Pub/Sub
- Topic
- 1 -> N
- 重复消费

-
消费确认和策略


容器集群

数据存储和调度

消费保证
At least once

Exactly once

经典实现
Blocking Queue

Active MQ

Kafka

ERP审批流程

消息广播:Spring events



















