分散式架構的概述

A_aliane發表於2019-03-20

現在的架構很多,各種各樣的,如高併發架構、異地多活架構、容器化架構、微服務架構、高可用架構、彈性化架構等,還有和這些架構相關的管理型的技術方法,如 DevOps、應用監控、自動化運維、SOA 服務治理、去 IOE 等等,還有很多。

那什麼是分散式系統?

分散式系統是支援分散式處理的軟體系統,是由通訊網路互聯的多處理機體系結構上執行任務的系統。包括分散式作業系統、分散式程式設計語言及其編譯系統、分散式檔案系統分散式資料庫系統等,當然這些也是分散式的關鍵技術。

使用分散式系統主要有:

  • 1.增大系統容量。我們的業務量越來越大,而要能應對越來越大的業務量,一臺機器的效能已經無法滿足了,我們需要多臺機器才能應對大規模的應用場景。所以,我們需要垂直或是水平拆分業務系統,讓其變成一個分散式的架構。
  • 2.加強系統可用。我們的業務越來越關鍵,需要提高整個系統架構的可用性,這就意味著架構中不能存在單點故障。這樣,整個系統不會因為一臺機器出故障而導致整體不可用。所以,需要通過分散式架構來冗餘系統以消除單點故障,從而提高系統的可用性。
  • 3.因為模組化,所以系統模組重用度更高
  • 4.因為軟體服務模組被拆分,開發和釋出速度可以並行而變得更快
  • 5.系統擴充套件性更高
  • 6.團隊協作流程也會得到改善

分散式系統的型別有三種:

  • 1.分散式處理,但只有一個總資料庫,沒有區域性資料庫
  • 2.分層式處理,每一層都有自己的資料庫
  • 3.充分分散的分散式網路,沒有中央控制部分,各節點之間的聯絡方式又可以有多種,如鬆散的聯接,緊密的聯接,動態的聯接,廣播通知式的聯接等

然後來對比一下單體應用和分散式架構的優缺點:

傳統單體框架 分散式服務化框架
新功能開發 需要時間 容易開發和實現
部署 不經常且容易部署 經常釋出,部署複雜
隔離性 故障影響範圍大 故障影響範圍小
架構設計 難度小 難度級數增加
系統效能 響應時間快,吞吐量小 響應時間慢,吞吐量大
系統運維 運維簡單 運維複雜
新人上手 研究曲線大(應用邏輯) 研究曲線大(架構邏輯)
技術 技術單一且封閉 技術多樣且開放
測試和差錯 簡單 複雜
系統擴充性 擴充性很差 擴充性很好
系統管理 重點在於開發成本 重點在於服務治理和排程
  • 1.從上面的表格可以看到,分散式系統雖然有一些優勢,但也存在一些問題
  • 2.架構設計變得複雜(尤其是其中的分散式事務)
  • 3.部署單個服務會比較快,但是如果一次部署需要多個服務,部署會變得複雜
  • 4.系統的吞吐量會變大,但是響應時間會變長
  • 5.運維複雜度會因為服務變多而變得很複雜
  • 6.架構複雜導致學習曲線變大
  • 7.測試和查錯的複雜度增大
  • 8.技術可以很多樣,這會帶來維護和運維的複雜度
  • 9.管理分散式系統中的服務和排程變得困難和複雜

所以總結一下,分散式系統架構的難點在於系統設計,以及管理和運維。所以分散式系統架構在解決了一些問題的同時,也增加了其他的問題,這就需要不斷的再用各種各樣的技術跟手段去解決這些新增的問題。後續會跟上分散式系統架構的搭建以及使用。

相關文章