DDD Domain Driven Design
CQRS表示Command Query Responsibility Segregation,即命令和查询责任分离,是由Greg Young提出的一种将系统的读(查询)、写(命令)操作分离为两种独立子系统的架构模式。在一些应用场景下,这种分离是很有价值的,但要注意,CQRS对大多数系统而言,让系统变得更加复杂。
ES Event Sourcing
- publish/subscribe
- sending/receiving
- broadcast
- 一个 aggregate 里,利用 mq 将 eventStore + publish 两件事合成一个原子操作
- 所有的 store 转为幂等操作,即 upsert
- 跨 aggregate, 采用 saga
- saga 补偿理解:作为一个额外系统对业务数据不一致,进行类似取消的操作。
- Aggregate in-memory 的设计
- 分布式 command, 一个事务只修改一个 aggregate
- Saga 设计 (独立服务)
nodejs-microservices-event-sourcing-cqrs
cqrs-explained-node-js-at-scale
Flux与Redux背后的设计思想(二):CQRS, Event Sourcing, DDD