搜尋文件

輸入關鍵字,搜尋標題與正文。

    知識主題

    分散式系統

    從一次遠端操作的不確定結果出發,逐步理解多份資料的一致性、共同決定的形成,以及跨服務工作的正確性邊界。

    8 篇文件

    主題說明與延伸閱讀

    從一次遠端操作的不確定結果出發,逐步理解多份資料的一致性、共同決定的形成,以及跨服務工作的正確性邊界。 主線以文章匯出服務貫穿,先說明問題與所需保證,再引入機制與取捨,不預設採用微服務或特定雲端產品。

    目前狀態:完整主線規劃 18 篇,已撰寫第一與第二階段共 8 篇,其餘 10 篇待撰寫。 查證日期:2026-11-04。已寫文章依原始論文、Linux man-pages、gRPC 與 AWS 官方工程文件整理;查證範圍與來源見各篇。案例均為概念推演,未執行分散式部署、壓力或故障注入實驗。

    先備知識與閱讀方式

    讀者需能理解一次請求與回應、基本網路通訊及資料庫交易;不要求先學完其他主題,也不要求先讀演算法論文。遇到對應概念時,可回查 API、電腦網路與關聯式資料庫。

    每一階段承接前一階段留下的問題。建議第一次依主線閱讀;已有背景的讀者可直接查閱當篇的模型、例子與限制。本系列主要處理程序停止與恢復、通訊異常、並行操作與過載;拜占庭容錯、區塊鏈與特定產品部署不在目前主線。

    第一階段:一次操作為什麼難以確認(已撰寫)

    表格・3 欄 4 列
    順序與文章要解決的問題接到下一篇的問題
    01 分散式系統、部分失敗與故障模型逾時為何無法證明失敗?模型、安全性與活性如何限制保證?結果未知時,如何安全重送?
    02 從重送請求到冪等副作用如何把操作識別、去重紀錄與業務寫入放進一致的原子邊界?即使效果不重複,重試會不會壓垮服務?
    03 過載、時間預算與背壓如何共同控制流入、執行、排隊與重試成本?計時與事件排序是否能用同一種時間戳?
    04 時鐘、事件順序與因果關係實體時間、單調時鐘、Lamport clock 與向量時鐘各自能證明什麼?建立工作之後,另一個副本的查詢必須看見它嗎?

    完成這一階段後,應能區分傳送、執行、提交、回應與觀測,並指出重試和時鐘無法自行補上的保證。

    第二階段:多份狀態能承諾什麼(已撰寫)

    表格・3 欄 4 列
    順序與文章要解決的問題接到下一篇的問題
    05 一致性模型與操作歷程「讀到最新」該如何精確定義?線性、循序、因果與會話保證有何差異?寫入何時才算被副本確認?切換時會丟資料嗎?
    06 複寫、確認與故障切換同步、非同步與半同步複寫能防止資料遺失嗎?裂腦如何發生?在無主架構中,多數派交集能否保證強一致?
    07 Quorum、版本與衝突修復為何 W + R > N 不自動等於線性一致?版本向量與讀修復如何處理並行分歧?當網路完全斷開無法同步時,系統被迫做出什麼抉擇?
    08 網路分割與 CAP 的適用邊界分割期間為何必須在線性一致(CP)與可用性(AP)二選一?PACELC 平時權衡什麼?當節點必須對唯一的狀態機日誌達成協議時,共識如何可能?

    完成這一階段後,能精準定義多副本讀寫契約,說明多數派交集的極限,並在網路分割情境中指出具體的違約操作。

    第三階段:共同決定與安全的所有權(待撰寫)

    09–12 用上一階段的契約解釋協調為何必要,然後處理持有者停止與恢復的風險:

    1. 共識、安全性與不可能性邊界:共識條件、狀態機複寫與 FLP 的時序前提。
    2. Raft 與複寫日誌:任期、選舉、提交與套用,並說明讀取及客戶端重試的額外條件。
    3. 租約、分散式鎖與 fencing:舊持有者恢復後為何仍可能寫入,以及受保護資源如何拒絕過期持有者。
    4. 分片、路由與資料搬遷:資料放置、熱點、再平衡及搬遷期間的寫入所有權;區分資料分片與網路分割。

    第四階段:跨越單一原子邊界(待撰寫)

    13–16 從單一交易與協調的邊界出發,研究跨服務的提交、補償、投遞與合併:

    1. 原子提交與兩階段提交:prepare、持久決策、in-doubt 與阻塞;區分原子提交、共識與隔離。
    2. Saga 與業務補償:局部交易、編排與協同、補償失敗與人工介入;不能把補償當成完整 rollback。
    3. 投遞語意、Outbox 與 Inbox:資料庫與事件雙寫、relay 重送、消費去重,以及 exactly-once 的具體範圍。
    4. 收斂、合併與 CRDT:哪些資料可以安全合併,以及哪些業務不變式仍需要協調。

    第五階段:用證據檢驗完整設計(待撰寫)

    17–18 回收前面所有承諾,從故障歷程檢驗端到端設計:

    1. 分散式觀測、故障注入與歷程驗證:追蹤識別、trace、log、metric、歷程 checker 與可重現故障;區分測試和證明。
    2. 整合案例:可靠的文章匯出服務:從最小可行版本逐步增加機制,列出不變式、狀態轉移、故障矩陣、恢復與仍需人工處理的情況。

    與既有主題的分工

    • API 共通知識:負責呼叫者看見的輸入、輸出、錯誤與重送契約;本主題補履行契約所需的狀態與協調。
    • 關聯式資料庫:負責 SQL、約束與單資料庫交易;本主題說明跨節點與跨服務時保證如何改變。
    • 電腦網路:負責封包與傳輸協定;本主題研究應用狀態,不能把連線可靠等同業務效果只做一次。
    • AWS:提供服務專屬能力與限制;本主題先建立通用模型,不以產品名稱替代保證。
    • Web 應用資安:處理攻擊、信任與權限;容錯與一致性不能替代這些防護。

    後續方向

    先完成上述主線,再依需要延伸更完整的 Paxos/BFT、跨區部署、流處理、事件治理與進階形式驗證。這些方向不代表目前已有文章或實驗結果。