Distributed system 是一組透過 network 協調並提供 service 的 process。Cloud 則把這種系統包裝成 pooled resource、virtualization、self-service allocation、elastic capacity 與 usage-based cost。
離開單機後有什麼不同
單機 process 通常能分清 local call 與 crash;跨 network 時,沉默有多種原因:peer 掛了、message 延遲,或 reply 丟失。
client ── request ──> server
X reply lost
operation 是否執行?只看 timeout 無法知道。
這種 partial failure 產生 retry、duplicate effect、coordination、stale state 與 failure detection 等核心問題。
白話來說: 在 distributed system 裡,「沒有回覆」不等於「什麼都沒發生」。
Cloud 為什麼有用
Cloud 讓 resource 可程式化。團隊不必先按 peak load 購買,而能依需求取得或釋放 compute、storage、network。價值不必然是單位成本更低,而是 provisioning 快、infrastructure 共享、可 elasticity,並把 capital expense 轉為 operating expense。
Elasticity 仍需要 application 配合。State 綁在單一 node、database 已飽和,或工作不能 partition 時,多加 instance 不會有用。
Grid、cluster、cloud
- Cluster: 通常由單一行政 domain 管理、互相協調的 machines。
- Grid: 跨組織聯邦資源,常用於大型 scientific job。
- Cloud: 透過 automated interface 與 operating contract 提供 pooled resource/service。
界線可以重疊;更有用的問題是 application 繼承了哪些 failure、ownership、provisioning 與 pricing assumption。
Safety 與 liveness
- Safety: 壞事永遠不發生,例如兩個 client 不會同時持有同一 exclusive lock。
- Liveness: 好事最後會發生,例如 valid request 最終完成。
Retry 可能改善 liveness,卻透過 duplicate write 破壞 safety;coordination 保護 safety,也可能在 partition 時降低 liveness。
複習卡
- Network 帶來 partial failure 與不確定 outcome。
- Cloud 增加 programmable pooling、elasticity 與經濟模型。
- Elastic infrastructure 不會自動讓不可 partition 的 application scale。
- State assumption 比產品名稱重要。
- Safety 防止壞狀態;liveness 保證最終進展。