一般來說,構建分布式系統的目的一是增加系統容量,二是提高系統的可用性。轉換成技術方面,也就是宛成以下兩件事。
- 大流量處理。通過集群技術把大規模並發請求的負載分散到不同的機器上
- 關鍵業務保護。提高后台服務的可用性,把故障隔離起來阻止多米諾骨牌效應(雪崩效應)。如果流量過大,需要到業務降級。
說白了就是干兩件事,一是提高整體架構的吞吐量,服務更多的並發和流量,二是提高系統的穩定性,讓系統的可用性更高。
提高架構的性能
提高架構的穩定性
分布式系統的關鍵技術
引入分布式系統,會引入一堆技術問題,需要從以下幾個方面解決
-
服務治理。服務拆分、服務調用、服務發現,服務依賴,服務的關鍵度定義……服務治理的最大意義是需要把服務間的依賴關系、服務調用鏈,以及關鍵的服務給梳理出來,並對這些服務進行性能和可用性方面的管理。
-
架構軟件管理。服務之間有依賴,而且有兼容性問題,所以,整體服務所形成的架構需要有架構版本管理、整體架構的生命周期管理,以及對服務的編排、聚合、事務處理等服務調度功能。
-
DevOps。分布式系統可以更為快速地更新服務,但是對於服務的測試和部署都會是挑戰。所以,還需要 DevOps 的全流程,其中包括環境構建、持續集成、持續部署等。
-
自動化運維。有了 DevOps 后,我們就可以對服務進行自動伸縮、故障遷移、配置管理、狀態管理等一系列的自動化運維技術了。
-
資源調度管理。應用層的自動化運維需要基礎層的調度支持,也就是雲計算 IaaS 層的計算、存儲、網絡等資源調度、隔離和管理。
-
整體架構監控。如果沒有一個好的監控系統,那么自動化運維和資源調度管理只可能成為一個泡影,因為監控系統是你的眼睛。沒有眼睛,沒有數據,就無法進行高效的運維。所以說,監控是非常重要的部分。這里的監控需要對三層系統(應用層、中間件層、基礎層)進行監控。
-
流量控制。最后是我們的流量控制,負載均衡、服務路由、熔斷、降級、限流等和流量相關的調度都會在這里,包括灰度發布之類的功能也在這里。
核心