主要观点:所有软件过程都依赖于消息传递,在不同架构和系统中以多种方式处理。分布式系统中主要有同步、异步到队列和异步到订阅者三种消息传递模式,且实际中常组合使用。有 orchestration(集中控制)和 choreography(独立参与者决定如何执行)两种方法来处理分布式过程的复杂性,它们在实现细节上可能相似但有重要区别,在软件和业务上下文中都有应用。
关键信息:
- 硬件中消息可存于内存寄存器,软件中根据语言和操作模型处理。
- 在线系统中分布式过程常见,有多个消息伙伴。
- 有限状态机是 orchestration 常用理论模型,AWS Step Functions 和 Apache NiFi 用于相关操作。
- 细胞自动机是 choreography 的最细粒度形式,Conway’s Game of Life 是典型例子。
- 出版-订阅系统常用于定义 orchestration 和 choreography 的边界。
- Bellroy 网站服务主要是 choreography,订单处理主要是 orchestration,内部流程主要是 choreography。
重要细节:
- 同步模式下发送方发送消息并等待接收方完全响应。
- 异步到队列模式下发送方发送消息进入队列后被处理。
- 异步到订阅者模式下发布者发送消息并转发给多个订阅者。
- orchestration 适合集中指导已知系统的动作,不适合处理未知系统的反应。
- choreography 适合处理任意系统的反应但通常比 orchestration 慢。
- 在纯粹的 orchestrated 系统中,替换元素需更新系统;纯粹的 choreographed 系统中若无实际工作则不执行。
- Bellroy 网站加载元素时各服务器独立响应,订单处理有明确步骤,内部流程包括多种活动。
- choreography 设计效率高但执行复杂,orchestration 是微观管理过程,两者结合可提供高效服务。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。