对常见名词的总结
业务逻辑
- 统称,功能性逻辑
状态机
- 状态之间的切换流转,以及约束
设计模式
- 设计最佳实践,会深入到代码层面
工作流
- 分成:顺序工作流,状态工作流
- 外部参数,外部事件作为数据交换
saga
- 事务模型,又叫做长时间运行的事务(Long-running-transaction)
规则引擎
- 状态机的增强版,一堆堆的规则、但是不体现step步骤关联性
分布式事务
- JTA 2阶段提交
- TCC TRY/CONFIRM/CANCEL
- saga 见上
领域事件
- 带业务色彩的事件(领域层面)
消息机制
- 消息的发送接收(框架层面)
状态机、工作流、SAGA 区别:
- 状态机:更偏向瞬时的(尽管没有限制说必须瞬时,但是一般用在瞬时)
- 工作流:没有状态,也能成为工作流,工作流里的step(步骤)很重要,就是工作流更注重步骤的体现(即便没有状态机也可以,有也可以)
- SAGA:长事务模型,底层为状态机工作流,其实是建立在上述两者之上的
JTA、TCC、SAGA 区别:
- JTA:java事务API,有多种不同的实现,一般为两阶段提交,特点:底层持久层必须支持事务特性、改造工作量小
- TCC:try、confirm、cancel模型,每一个业务接口需要多写2个接口,代码量大,特点:底层不支持事务特性也可以、改造工作量大
- SAGA:多用于三方系统接口多的事务流程,需要给每个业务点多写1个错误时触发的函数。特点:改造工作量中等,不确保事务隔离特性
领域事件、消息机制 区别:
- 领域事件:带明确业务行为的事件,如:订单已创建事件等、更有利于领域逻辑的传递
- 消息机制:更偏framework层面,message、event、consumer这种