分布式技術的體系結構
橫向劃分:分布式資源池化、分布式通信、分布式資料存盤與管理、分布式計算,這樣的劃分符合業務架構設計的一般規律,即"在一定資源上,進行一定通信,通過一定計算,完成一定資料的加工和處理,從而對外提供特定的服務",這樣的劃分符合業務架構設計的一般規律,即"在一定資源上,進行一定通信,通過一定計算,完成一定資料的加工和處理,從而對外提供特定的服務",
縱向劃分:在分布式環境下,無論是資源、通信、資料還是計算,都需要去解決協同、調度、追蹤高可用,還有部署的問題,因此,我從橫向的技術層次中,提煉出分布式協同、分布式調度、分布式追蹤與高可用、分布式部署 4 個縱向技術線,
分布式的發展歷史
單機模式
應用程式和資料均部署在一臺電腦或服務器上,由一臺計算機完成所有的處理,
以鐵路售票系統來說,應用模塊包含用戶管理、火車票管理、訂單管理,資料包括了用戶資料、火車票資料、訂單資料,所有這些應用和資料均由一臺計算機處理完成,
優點:資料存盤、請求處理均由該計算機完成,功能、代碼和資料集中,便于維護、管理和執行,
缺點:單個計算機的處理能力取決于 CPU 和記憶體等硬體,但硬體的發展速度和性能是有限的,而且升級硬體的性價比也是我們要考慮的,由此決定了 CPU 和記憶體等硬體的性能將成為單機模式的瓶頸,
資料并行或資料分布式
并行計算:采用訊息共享模式使用多臺計算機并行運行或執行多項任務,核心原理是每臺計算機上執行相同的程式,將資料進行拆分放到不同的計算機上進行計算
在單機模式中,應用和資料均在一臺計算機或服務器上,要實作資料的并行,首先必須將應用和資料分離以便將應用部署到不同的計算機或服務器上;然后,對同型別的資料進行拆分,比方說,不同計算機或服務器上的應用可以到不同的資料庫上獲取資料執行任務,
對于鐵路售票系統來說,根據線路將用戶、火車票和訂單資料拆分到不同的資料庫中,部署到不同的服務器上,比如京藏線的資料放在資料庫服務器 1 上的資料庫中,滬深線的資料放在資料庫服務器 2 上的資料庫中,
優點:可以利用多臺計算機并行處理多個請求,使得我們可以在相同的時間內完成更多的請求處理,解決了單機模式的計算效率瓶頸問題,
缺點:1.如何進行比較均衡地轉發調度到對應的應用服務器上2.資料庫的讀寫IO能力存在瓶頸,需要進行對資料庫的讀寫分離3.熱點資料訪問能力,需借助快取實作4.對于單個請求特別復雜,并行計算無法解決問題
任務并行或任務分布式
將單個復雜的任務拆分為多個子任務,從而使得多個子任務可以在不同的計算機上并行執行,
以鐵路售票系統為例,任務并行首先是對應用進行拆分,比如按照領域模型將用戶管理、火車票管理、訂單管理拆分成多個子系統分別運行在不同的計算機或服務器上,換句話說,原本包括用戶管理、火車票管理和訂單管理的一個復雜任務,被拆分成了多個子任務在不同計算機或服務器上執行,
優點:一個任務被拆分為多個子任務,多個子任務可以在多臺計算機上運行,因此通過將同一任務待處理的資料分散到多個計算機上,在這些計算機上同時進行處理,就可以加快任務執行的速度
缺點:設計上復雜且大型業務拆分存在困難
分布式是什么?
分布式其實就是將相同的或相關的程式運行在多臺計算機上,從而實作特定目標的一種計算方式;產生分布式的最主要的驅動力量是我們對于性能、可用性以及擴展性的追求,
衡量分布式系統的指標
性能指標
不同的系統、服務關注的性能指標不盡相同,常見的性能指標,包括吞吐量、回應時間和完成時間,
吞吐量:指系統在一定時間內可以處理的任務數,常見的吞吐量指標有QPS 、TPS 和BPS,
QPS:系統每秒處理的查詢次數,常用于核量讀操作較多的業務型別;
TPS:系統每秒處理的事務數,常用于核量寫操作較多的業務型別;
BPS:系統每秒處理的資料量(位元);
回應時間:系統回應一個請求或者輸入需要花費的時間,該指標直接影響用戶體驗,對于時延敏感的業務非常重要,
完成時間:系統真正完成一個請求或者輸入花費的時間,
資源占用
系統提供正常能力需要占用的硬體資源,比如CPU、記憶體、硬碟等,一般來說,一個系統在沒有任何負載時的資源占用叫做空載資源占用,一個系統滿額負載時的資源占用叫做滿額資源占用,
通常情況下,資源占用越少,說明系統設計的越好,
可用性
系統在面對各種例外時可以正確提供服務的能力,是分布式系統的重要指標,是系統容錯能力的體現,
系統可用性的衡量方式有幾種,一種是系統停止服務的時間與總的運行時間之比衡量,另外一種是某功能的失敗次數與總的請求次數之比衡量,一般廠商宣傳提到的幾個9,意思就是可用性能達到99.99…%,
可擴展性
系統通過擴展集群的機器規模提高系統的性能(吞吐、回應時間、完成性能、存盤容量),對于分布式系統來說,可擴展性是最為重要的特性之一,從單機方式引入分布式,就是為了利用集群多機的能力處理單機無法解決的問題,
對于擴展來說,一般可分為垂直/縱向擴展和水平/橫向擴展,垂直擴展指的是增加單機的硬體能力,如CPU增強、記憶體增大等;水平擴展指的是增加計算機數量;好的分布式系統追求"線性擴展",即某一指標隨集群中的機器數量增長,
衡量系統可擴展性的常見指標為加速比,就是系統進行擴展后相對擴展前的性能提升;

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287562.html
標籤:其他
上一篇:Boost 矩形布爾運算
下一篇:Gitlab 定時備份
