44 lines
1.6 KiB
Markdown
44 lines
1.6 KiB
Markdown
---
|
||
title: "Choreography"
|
||
type: concept
|
||
tags:
|
||
- EDA
|
||
- Architecture
|
||
- Microservices
|
||
last_updated: 2026-04-14
|
||
---
|
||
|
||
## Aliases
|
||
- Choreography Pattern
|
||
- 编舞模式
|
||
- 去中心化事件协调
|
||
|
||
## Definition
|
||
编舞模式(Choreography)是一种微服务间通过事件进行自发协调的模式,各服务自主响应事件并发布新事件,无需中央协调器。服务通过事件总线了解全局状态和下一步操作。
|
||
|
||
## Characteristics
|
||
- **Decentralized**:无中央协调器,各服务平等
|
||
- **Autonomous**:每个服务自主决定如何响应事件
|
||
- **Loosely Coupled**:服务之间完全解耦,通过事件总线交互
|
||
- **Resilient**:局部故障不影响其他服务
|
||
- **Harder to Track**:整体业务流程不直观,调试复杂
|
||
|
||
## Example
|
||
1. 订单服务发布 `OrderCreated` 事件
|
||
2. 库存服务订阅并发布 `InventoryReserved` 事件
|
||
3. 支付服务订阅并发布 `PaymentProcessed` 事件
|
||
4. 通知服务订阅并发送确认通知
|
||
|
||
## Comparison with Orchestration
|
||
| 维度 | Choreography(编舞) | Orchestration(编排) |
|
||
|------|---------------------|---------------------|
|
||
| 控制 | 去中心化 | 集中式 |
|
||
| 协调器 | 无 | 有(Step Functions) |
|
||
| 复杂度 | 局部低,整体高 | 局部高,整体低 |
|
||
| 可观测性 | 较难追踪 | 易于追踪 |
|
||
| 适用场景 | 简单、独立的服务 | 复杂、有明确业务流程 |
|
||
|
||
## Sources
|
||
- [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091]]
|
||
- [[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]]
|