?
三十一、服務網格:東西向流量治理與故障注入
?
?服務網格架構分層
mermaid
graph BT
? ? subgraph Control Plane
? ? ? ? APilot --> BEnvoy Sidecar
? ? ? ? CMixer --> B
? ? ? ? DCitadel --> B
? ? end
? ? subgraph Data Plane
? ? ? ? B --> E服務A
? ? ? ? B --> F服務B
? ? ? ? B --> G服務C
? ? end
?
?核心能力矩陣
?功能維度 Istio實現方案 Linkerd方案 技術選型點?
?流量路由 VirtualService+DestinationRule ServiceProfile 細粒度權重控制?
?可觀測性 Prometheus+Grafana+Jaeger Prometheus+TraceID 指標采集開銷對比?
?安全通信 mTLS雙向認證+RBAC 自動mTLS 證書輪轉機制?
?故障注入 HTTPFaultInjection Chaos Mesh集成 灰度故障注入能力?
?
?流量染色與金絲雀發布
java
// Istio VirtualService配置示例
VirtualService userVs = new VirtualServiceBuilder()
? ? .withHost("user-service")
? ? .addHttpRoute(new HTTPRoute()
? ? ? ? .withMatch(new HTTPMatchRequest()
? ? ? ? ? ? .setHeaders(Collections.singletonMap("x-version", "v2")))
? ? ? ? .setRoute(Collections.singletonList(
? ? ? ? ? ? new HTTPRouteDestination()
? ? ? ? ? ? .setSubset("v2")
? ? ? ? ? ? .setWeight(30))))
? ? .addHttpRoute(new HTTPRoute()
? ? ? ? .setRoute(Collections.singletonList(
? ? ? ? ? ? new HTTPRouteDestination()
? ? ? ? ? ? .setSubset("v1")
? ? ? ? ? ? .setWeight(70))))
? ? .build();
?
?
?三十二、分布式事務:Saga模式與TCC模式對比
?
?Saga事務執行流程
mermaid
sequenceDiagram
? ? participant Order
? ? participant Inventory
? ? participant Payment
? ??
? ? Order->>Inventory: 預扣庫存(Try)
? ? Inventory-->>Order: 庫存鎖定
? ? Order->>Payment: 預授權支付(Try)
? ? Payment-->>Order: 支付凍結
? ? Note right of Order: 正常流程提交
? ? Order->>Inventory: 提交庫存
? ? Inventory-->>Order: 扣減完成
? ? Order->>Payment: 提交支付
? ? Payment-->>Order: 支付完成
? ??
? ? rect rgba(255,0,0,0.1)
? ? Note left of Order: 異常補償流程
? ? Order->>Payment: 取消支付(Cancel)
? ? Payment-->>Order: 釋放凍結
? ? Order->>Inventory: 回滾庫存(Cancel)
? ? Inventory-->>Order: 庫存恢復
? ? end
?
?Seata AT模式核心機制
java
@GlobalTransactional
public void createOrder(Order order) {
? ? // 本地事務
? ? inventoryDao.deductStock(order.getProductId());
? ? paymentDao.freezeBalance(order.getUserId(), order.getAmount());
? ??
? ? // 記錄全局事務日志(TC協調)
? ? GlobalTransaction tx = GlobalTransactionManager.begin();
? ? BranchTransaction tx1 = BranchTransactionManager.register(
? ? ? ? "inventory",?
? ? ? ? "deductStock",?
? ? ? ? order.getId()
? ? );
? ? BranchTransaction tx2 = BranchTransactionManager.register(
? ? ? ? "payment",?
? ? ? ? "freezeBalance",?
? ? ? ? order.getId()
? ? );
}
?
?事務模式對比分析
?模式 數據一致性 補償復雜度 適用場景?
?Saga 最終一致 高(需逆向操作) 長事務跨多個微服務?
?TCC 最終一致 中(需Try/Confirm/Cancel) 高并發強隔離場景?
?XA 強一致 低(數據庫原生支持) 金融核心交易系統?
?
?
?三十三、混沌工程:故障注入策略與容錯驗證
?
混沌工程成熟度模型
mermaid
graph LR
? ? A穩定態假設 --> B故障注入
? ? B --> C故障傳播分析
? ? C --> D自愈能力驗證
? ? D --> E架構韌性優化
?
混沌實驗設計模板
yaml
?ChaosBlade網絡故障注入配置
apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
? name: network-latency
spec:
? experiments:
? - scope: pod
? ? target: network
? ? action: delay
? ? desc: "模擬服務間網絡延遲"
? ? matchers:
? ? - name: names
? ? ? value:
? ? ? - "order-service-.*"
? ? - name: namespace
? ? ? value: "production"
? ? - name: delay
? ? ? value: "300ms"
? ? - name: correlation
? ? ? value: "100%"
?
?容錯能力評估指標
?指標類別 監控項 健康閾值?
?故障檢測速度 熔斷觸發時間 < 500ms?
?服務降級效果 錯誤率波動幅度 < 5%?
?自愈恢復能力 平均恢復時間(MTTR) < 30s?
?資源隔離性 跨服務錯誤傳播率 0%?
?
?