# 分散式系統基礎 (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 與適用場景 - 不直接產生實作程式碼或配置 ## 不應做的事 - 不替系統選擇特定實現方式 - 不假設網路呼叫永遠成功 - 不忽略分散式帶來的複雜性