微服務化最大的兩個問題是可用性的問題和資料一致性的問題。
我們把專案從一個單體拆分為微服務,專案複雜度上升,出問題的機率自然提高了。
並且從數學與統計角度而言,由於服務數量變多了,假設單個服務的故障率不變,那麼整體微服務系統的故障率則會提高。
如果我們不做任何預防手段,微服務中若有一個服務當機,可能會連鎖反應導致整個服務不可用。
所以我們採用“隔離”的手段,讓影響範圍可控。事實上“隔離”這種手段在工程學中很常見,比如造船行業對船艙進水風險的隔離方法:將船艙分塊隔離起來,一部分船艙進水不會導致整條船完蛋。
隔離,本質上是對系統或資源進行分隔,從而實現當系統發生故障時能限定傳播範圍和影響範圍,即發生故障後只有出問題的服務不可用,保證其他的服務仍然可用。
隔離的技巧可以分為 3 大類,7 個套路:
- 服務隔離:動靜分離、讀寫分離
- 輕重隔離:核心業務分離、快慢隔離、熱點隔離
- 物理隔離:執行緒(程式)隔離、機房隔離
這 7 個套路具體有哪些案例,我寫了一點心得,分享給大家:微服務高可用秘訣 – 隔離
本作品採用《CC 協議》,轉載必須註明作者和本文連結