26 lines
1.4 KiB
Markdown
26 lines
1.4 KiB
Markdown
# 分散式系統基礎 (Distributed System Basics) 知識合約指南
|
||
|
||
## 概述
|
||
`distributed-system-basics` 是知識合約,用來理解與設計分散式系統的相關考量:At-least-once vs Exactly-once、Retry 行為、Duplicates、Idempotency、Timeout vs Failure、Partial Failure、Eventual Consistency 與 Ordering Guarantees。供 `design-architecture` 在處理分散式系統相關問題時參考。
|
||
|
||
## 核心原則
|
||
分散式系統中,網路呼叫會失敗、請求會重複、資料可能過時。設計時必須假設這些問題會發生,並系統性地處理它們。
|
||
|
||
## 設計重點
|
||
- **交付保證**:At-Most-Once、At-Least-Once、Exactly-Once 的選擇框架
|
||
- **Retry 行為**:何時重試、何時不重試、退避策略
|
||
- **Duplicates**:如何產生、如何處理(Idempotency keys、Deduplication)
|
||
- **Timeout vs Failure**:Timeout 表示未知狀態,不是失敗狀態
|
||
- **Partial Failure**:多步驟操作失敗時的處理策略
|
||
- **Eventual Consistency**:使用時機與一致性窗口
|
||
- **Ordering Guarantees**:Per-Partition vs Global vs None
|
||
|
||
## 知識合約職責
|
||
- 提供分散式系統設計的理論指引
|
||
- 說明各種模式的 Trade-offs 與適用場景
|
||
- 不直接產生實作程式碼或配置
|
||
|
||
## 不應做的事
|
||
- 不替系統選擇特定實現方式
|
||
- 不假設網路呼叫永遠成功
|
||
- 不忽略分散式帶來的複雜性 |