分布式系統的技術棧


分布式系統的技術棧

前言

最近在拜讀耗子兄-分布式系統技術棧一文,現在記錄下自己學到的東西

構建分布式系統的目的

  • 提高整體架構的吞吐量,服務更多的並發和流量。
    • 大流量處理,通過集群技術把大規模並發請求的負載分散到不同的機器上。
  • 提高系統的穩定性,讓系統的可用性更高。
    •  關鍵業務保護。提高后台服務的可用性,把故障隔離起來阻止多米諾骨牌效應(雪崩效應),如果流量過大,需要對業務降級,以保護關鍵業務

提高系統的性能

  • 緩存系統:緩存分區、緩存更新、緩存命中
  • 負載均衡系統(網關系統):負載均衡、服務路由、服務發現
  • 異步調用:消息隊列、消息持久、異步事務
  • 數據鏡像:數據同步、讀寫分流、數據一致性
  • 數據分區:分區策略、數據訪問層、數據一致性

緩存系統

  • 可以提高快速訪問能力。
  • 從前端瀏覽器、網絡、后端服務、底層數據庫、文件系統、硬盤和CPU,全都有緩存。
  • 對於分布式緩存系統,首先需要一個緩存集群,其中需要一個Proxy來做緩存的分片和路由

負載均衡

  • 是做水平擴展的關鍵技術。

異步調用

  • 通過消息隊列來對請求做排隊處理,把前端請求進行削峰,后端請求根據自己的處理速度來處理請求。
  • 優點:增加系統的吞吐量
  • 缺點:實時性比較差,同時還會引入消息丟失的問題,所以需要對消息進行持久化,這會造成有狀態的節點,從而增加服務調度的難度。

數據分區和數據鏡像

  • 把數據按照一定的方式分成多個區,不同的數據來分擔不同區的流量,這需要一個數據路由的中間件,會導致跨庫Join和跨庫事務非常復雜。
  • 數據鏡像:把多個數據庫備份,多個節點可以提供數據讀寫功能,節點間在內部實現數據同步。缺點:數據一致性問題。
  • 在初期使用讀寫分離的數據鏡像方式,后期采用分庫分表方式。

提高系統穩定性

  • 服務拆分(服務治理):服務調用、服務依賴、服務隔離
  • 服務冗余(服務調度):彈性伸縮、故障轉移、服務發現
  • 限流降級:異步隊列、降級控制、服務熔斷
  • 高可用架構:多租戶系統、災備多活、高可用服務
  • 高可用運維:全棧監控、DevOps、自動化運維

服務拆分

  • 隔離故障
  • 重用服務模塊
  • 服務拆分完之后,會引入服務調用間的依賴問題。

服務冗余

  • 去除單點故障,並可以支持服務的彈性伸縮以及故障轉移。
  • 對於一些有狀態的服務來說,冗余這些有狀態的服務會帶來更高的復雜性。
    • 當其中一個進行彈性伸縮時,需要考慮數據的復制或重新分片,遷移的時候還要遷移數據到其他機器上。

限流降級

  • 當系統流量超過系統承載時,只能通過限流或者功能降級的方式來處理。

高可用架構

  • 主要時為了不出現單點故障。

高可用運維

  • DevOps中的CI(持續集成)/CD(持續部署)。
  • 應該有一條很流暢的軟件發布管線,包括足夠的自動化測試,還可以做好相應的灰度發布,以及線上系統的自動化控制。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM