Tech

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

Other