Harvest, Yield, and Scalable Tolerant Systems
TL;DR
- 衡量系統各個部分的重要性,來做到graceful degradation
- 將整個系統拆分成功能不互相重疊的subsystems,針對各個功能做consistency和availability的衡量,並且可以把輔助性的功能(log、metrics)抽出來並部署到所有subsystem(sidecar pattern)
Goal
提出設計reliable、robust distributed system的方法(strategies)。
Term definition
Yield: 完成請求的probability (availability) Harvest: response的資料完整性 (consistency),考量到distributed system,資料update以後拿到舊資料的比例也算在yield的一部分。
Strategies
Trading Harvest for Yield - Probabilistic Availability
在情況允許的情況下,犧牲harvest來提高yield(CA)。
Application Decomposition and Orthogonal Mechanisms
將系統拆分成彼此orthogonal的subsystems,就可以針對不同的subsystems決定要CP還是CA,也可以把stateless和stateful的部分拆開,或是把輔助性的功能獨立出來,做成sidecar pattern。