vault backup: 2026-04-30 09:08:09

This commit is contained in:
2026-04-30 09:08:09 +08:00
parent 3edbc6fa39
commit 750920d135
+67 -6
View File
@@ -169,6 +169,49 @@ message Item {
} }
``` ```
### 典型请求链路
一次下单操作会串联多个服务和两种通信模式:
```mermaid
sequenceDiagram
participant C as Client
participant GW as API Gateway
participant O as Order Service
participant I as Inventory Service
participant P as Payment Service
participant MQ as Message Queue
C->>GW: POST /orders (HTTP/JSON)
GW->>O: CreateOrder (gRPC)
rect rgb(200, 220, 250)
Note over O,P: 同步 RPC 链
O->>I: CheckStock (gRPC)
I-->>O: {ok: true, quantity: 1}
O->>P: Charge (gRPC)
P-->>O: {success: true}
end
O-->>GW: {orderId: "ORD-001"}
GW-->>C: 200 OK
rect rgb(255, 240, 220)
Note over O,MQ: 异步事件解耦
O->>MQ: Publish OrderCreated Event
MQ->>N: Consume → SendSms
Note right of N: 通知类场景,不阻塞主流程
end
```
> [!keypoint] 关键洞察
>
> - 同步链路(蓝色):**gRPC 直连**,延迟低,适合核心事务(查库存 → 扣款)
> - 异步链路(橙色):**消息队列**,解耦非关键路径(发短信、发积分),即使失败也不影响下单主干
> - API Gateway 负责统一鉴权和限流,下游服务之间通过 gRPC 高效通信
>
> 这就是「同步 RPC 保性能,异步 MQ 保解耦」的组合拳。
### 同步 vs 异步 ### 同步 vs 异步
> [!question] 关键时刻的判断 > [!question] 关键时刻的判断
@@ -232,12 +275,30 @@ func retryWithBackoff(ctx context.Context, maxRetries int, fn func() error) erro
当下游服务频繁失败时,快速失败避免线程堆积雪崩: 当下游服务频繁失败时,快速失败避免线程堆积雪崩:
```mermaid ```mermaid
stateDiagram-v2 flowchart TD
[*] --> Closed: "正常状态" CB{{🔘 CIRCUIT BREAKER}}
Closed --> Open: "失败率超过阈值"
Open --> HalfOpen: "等待探测间隔" subgraph CL ["CLOSED — 正常"]
HalfOpen --> Closed: "探测成功" C["请求放行<br/>⏱ 实时统计成功率<br/>⚠️ 连续失败 → 熔断"]
HalfOpen --> Open: "探测失败" end
subgraph OP ["OPEN — 熔断"]
O["🚫 请求短路<br/>💥 直接返回降级响应<br/>🛡 不调下游,防雪崩"]
end
subgraph HO ["HALF-OPEN — 半开"]
H["🔍 放行少量探测请求<br/>✅ 成功 → 恢复全量流量<br/>❌ 失败 → 重新熔断"]
end
CB --> CL
CL -.->|失败 > N| OP
OP -.->|等待超时| HO
HO -->|探测成功| CL
HO -->|探测失败| OP
style CL fill:#e6f9e6,stroke:#4caf50,stroke-width:3px,color:#000
style OP fill:#ffebee,stroke:#ef5350,stroke-width:3px,color:#000
style HO fill:#fff8e1,stroke:#ffa726,stroke-width:3px,color:#000
``` ```
```go ```go