分佈式架構的架構穩定性
接上一期架構性能,本期講架構穩定性
1.服務拆分
服務拆分主要有兩個目的:一是爲了隔離故障,二是爲了重用服務模塊。但服務拆分完之後,會引入服務調用間的依賴問題。
2.服務冗餘
服務冗餘是爲了去除單點故障,並可以支持服務的彈性伸縮,以及故障遷移。然而,對於一些有狀態的服務來說,冗餘這些有狀態的服務帶來了更高的複雜性。其中一個是彈性伸縮時,需要考慮數據的複製或是重新分片,遷移的時候還要遷移數據到其它機器上。
3.限流降級
當系統實在扛不住壓力時,只能通過限流或者功能降級的方式來停掉一部分服務,或是拒絕一部分用戶,以確保整個架構不會掛掉。這些技術屬於保護措施。
4.高可用架構
通常來說高可用架構是從冗餘架構的角度來保障可用性。比如,多租戶隔離,災備多活,或是數據可以在其中複製保持一致性的集羣。總之,就是爲了不出單點故障。
4.高可用運維
高可用運維指的是 DevOps 中的 CI/CD(持續集成 / 持續部署)。一個良好的運維應該是一條很流暢的軟件發佈管線,其中做了足夠的自動化測試,還可以做相應的灰度發佈,以及對線上系統的自動化控制。這樣,可以做到“計劃內”或是“非計劃內”的宕機事件的時長最短。
上述這些技術非常有技術含量,而且需要投入大量的時間和精力。