Tech
- 分散式系統的彈性 Resiliency in Distributed Systems
- Faults(錯誤) v.s. Failures(故障)
- 錯誤只是一部分系統元件的異常狀態,通常只影響到與他有關聯或相依的其他子系統;故障則是整個系統失效無法運作
- 架構設計時加入彈性,避免系統從部分錯誤演變成整體故障
- 在分散式系統中,網路是不可靠的;相依性永遠有機會失效;且使用者行為是無法預期的
- Resiliency Patterns
- Timeouts(時效性):不要等回應等太久,避免連鎖性故障(Cascading Failures),並需要進行故障隔離。Timeouts 的時間長短必須根據相依元件的 SLA 來制定
- Retries(重試):不立即重試,將錯誤的呼叫放入 retry queue 中,等適合的時機再重試,並以冪等(Idempotency)方式重試
- Circuit Breakers(斷路器):當系統已經不健康,避免更多的請求呼叫
- Fallbacks(退路):優雅的降級,避免重要的元件故障,在 Integration points 考慮 fallbacks 機制
Integration points are points at which documents within your process move from one system or application to another.
- Resiliency Testing(系統彈性的測試):找到各種可能故障的模式,並找猴子大軍進行 Monkey Test
Create a Test Harness to break callers
完全不懂這句話的意思
Other
comments powered by