分佈式的優勢及關鍵技術

1. 分佈式的優與劣

與傳統的單體架構相比,分佈式系統具有以下優勢:

  • 增大了系統的容量。我們的業務量越來越大,就需要多臺機器來應對這種大規模的應用場景。因此我們可以使用分佈式的架構,來垂直或是水平的拆分業務;
  • 加強了系統的可用性。我們的業務越來越關鍵,需要提供整個系統架構的可用性,這樣就不能存在單點故障。所以,通過分佈式架構來冗餘系統,提高系統的可用性;
  • 使系統模塊化,可以提高模塊的重用度,同時系統的擴展性也更高了;
  • 提高了開發和發佈速度,因爲軟件服務模塊被拆分,開發和發佈都可以並行;

不過,世界上不存在完美的技術方案,採用任何技術都有得有失,都是一種trade-off。也就是說,分佈式系統在消除上述問題的同時,也給我們帶來了其他問題。

  • 架構設計變得複雜,尤其是分佈式的事務
  • 部署變得複雜,一次可能需要部署多個服務
  • 隨着系統的吞吐量變大,響應時間會變長
  • 技術可以多樣性,服務變多,運維複雜度會變得很複雜
  • 測試和查錯的複雜度增大,學習曲線也增大

綜上所述的,分佈式的優缺點可以概括爲下表

選項 傳統單體架構 分佈式服務化架構
新功能開發 需要時間 容易開發和實現
部署 不經常且容易部署 經常部署、部署複雜
隔離性 故障影響範圍大 故障影響範圍小
架構設計 難度小 難度級係數增加
系統性能 響應時間快、吞吐量小 響應時間慢、吞吐量大
系統運維 運維簡單 運維複雜\
技術 技術單一且封閉 技術多樣性且開放
測試和查錯 簡單 複雜
系統擴展性 擴展性差 擴展性好
系統管理 重點在於開發成本 重點在於服務治理和調度

分佈式的難點在於系統的設計,以及管理和運維。所以,分佈式在架構在解決“單點”和“性能容量”問題的同時,也新增了一堆的問題。對於這些新增的問題,就需要各式各樣的技術和手段來解決。

2. 分佈式的關鍵技術

從2010年後,出現了微服務的架構,使分佈式更進一步的發展,它爲構造分佈式的計算應用程序提供了更好的方法。這種架構更加的鬆耦合,每個微服務都能獨立完整的運行,後端單體的數據庫也被分散到不同的服務中。在服務間通過一個引擎進行服務編排或整合,一般這種引擎可以是工作流引擎,也可以是網關。再加上像容器化的調度技術(如Kubernetes)的輔助,使的分佈式在當下變得更加流行。
分佈式系統有以下五個關鍵技術:

  • 全棧系統監控
  • 服務/資源調度
  • 流量調度
  • 狀態/數據調度
  • 開發和運維的自動化

而最後一項—開發和運維的自動化,是需要把前四項都做到了,纔有可能實現的。所以,最爲關鍵的是下邊四項技術,即應用整體監控、資源和服務調度、狀態和數據調度及流量調度,它們是構建分佈式最最核心的東西。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章