01.28 分佈式:初識分佈式系統

原址:https://mp.weixin.qq.com/s/Kr85az3gY9804FzpkMKzng作者:Hollis

隨著大型網站的各種高併發訪問、海量數據處理等場景越來越多,如何實現網站的高可用、易伸縮、可擴展、安全等目標就顯得越來越重要。為了解決這樣一系列問題,大型網站的架構也在不斷髮展。提高大型網站的高可用架構,不得不提的就是分佈式。本文主要簡單介紹了分佈式系統的概念、分佈式系統的特點、常用的分佈式方案以及分佈式和集群的區別等。


一、集中式系統

在學習分佈式之前,先了解一下與之相對應的集中式系統是什麼樣的。

集中式系統用一句話概括就是:一個主機帶多個終端。終端沒有數據處理能力,僅負責數據的錄入和輸出。而運算、存儲等全部在主機上進行。現在的銀行系統,大部分都是這種集中式的系統,此外,在大型企業、科研單位、軍隊、政府等也有分佈。集中式系統,主要流行於上個世紀。

集中式系統的最大的特點就是部署結構非常簡單,底層一般採用從IBM、HP等廠商購買到的昂貴的大型主機。因此無需考慮如何對服務進行多節點的部署,也就不用考慮各節點之間的分佈式協作問題。但是,由於採用單機部署。很可能帶來系統大而複雜、難於維護、發生單點故障(單個點發生故障的時候會波及到整個系統或者網絡,從而導致整個系統或者網絡的癱瘓)、擴展性差等問題。

二、分佈式系統(distributed system)

在《分佈式系統概念與設計》一書中,對分佈式系統做了如下定義:

分佈式系統是一個硬件或軟件組件分佈在不同的網絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協調的系統

簡單來說就是一群獨立計算機集合共同對外提供服務,但是對於系統的用戶來說,就像是一臺計算機在提供服務一樣。分佈式意味著可以採用更多的普通計算機(相對於昂貴的大型機)組成分佈式集群對外提供服務。計算機越多,CPU、內存、存儲資源等也就越多,能夠處理的併發訪問量也就越大。

從分佈式系統的概念中我們知道,各個主機之間通信和協調主要通過網絡進行,所以,分佈式系統中的計算機在空間上幾乎沒有任何限制,這些計算機可能被放在不同的機櫃上,也可能被部署在不同的機房中,還可能在不同的城市中,對於大型的網站甚至可能分佈在不同的國家和地區。但是,無論空間上如何分佈,一個標準的分佈式系統應該具有以下幾個主要特徵:

分佈性

分佈式系統中的多臺計算機之間在空間位置上可以隨意分佈,系統中的多臺計算機之間沒有主、從之分,即沒有控制整個系統的主機,也沒有受控的從機。

透明性

系統資源被所有計算機共享。每臺計算機的用戶不僅可以使用本機的資源,還可以使用本分佈式系統中其他計算機的資源(包括CPU、文件、打印機等)。

同一性

系統中的若干臺計算機可以互相協作來完成一個共同的任務,或者說一個程序可以分佈在幾臺計算機上並行地運行。

通信性

系統中任意兩臺計算機都可以通過通信來交換信息。

和集中式系統相比,分佈式系統的性價比更高、處理能力更強、可靠性更高、也有很好的擴展性。但是,分佈式在解決了網站的高併發問題的同時也帶來了一些其他問題。首先,分佈式的必要條件就是網絡,這可能對性能甚至服務能力造成一定的影響。其次,一個集群中的服務器數量越多,服務器宕機的概率也就越大。另外,由於服務在集群中分佈是部署,用戶的請求只會落到其中一臺機器上,所以,一旦處理不好就很容易產生數據一致性問題。

常用的分佈式方案

分佈式應用和服務

將應用和服務進行分層和分割,然後將應用和服務模塊進行分佈式部署。這樣做不僅可以提高併發訪問能力、減少數據庫連接和資源消耗,還能使不同應用複用共同的服務,使業務易於擴展。

分佈式靜態資源

對網站的靜態資源如JS、CSS、圖片等資源進行分佈式部署可以減輕應用服務器的負載壓力,提高訪問速度。

分佈式數據和存儲

大型網站常常需要處理海量數據,單臺計算機往往無法提供足夠的內存空間,可以對這些數據進行分佈式存儲。

分佈式計算

隨著計算技術的發展,有些應用需要非常巨大的計算能力才能完成,如果採用集中式計算,需要耗費相當長的時間來完成。分佈式計算將該應用分解成許多小的部分,分配給多臺計算機進行處理。這樣可以節約整體計算時間,大大提高計算效率。

分佈式與集群

分佈式(distributed)是指在多臺不同的服務器中部署不同的服務模塊,通過遠程調用協同工作,對外提供服務。

集群(cluster)是指在多臺不同的服務器中部署相同應用或服務模塊,構成一個集群,通過負載均衡設備對外提供服務。


分享到:


相關文章: