您好,登錄后才能下訂單哦!
隨著大型網站的各種高并發訪問、海量數據處理等場景越來越多,如何實現網站的高可用、易伸縮、可擴展、安全等目標就顯得越來越重要。為了解決這樣一系列問題,大型網站的架構也在不斷發展。提高大型網站的高可用架構,不得不提的就是分布式。本文主要簡單介紹了分布式系統的概念、分布式系統的特點、常用的分布式方案以及分布式和集群的區別等。
在學習分布式之前,先了解一下與之相對應的集中式系統是什么樣的。
集中式系統用一句話概括就是:一個主機帶多個終端。終端沒有數據處理能力,僅負責數據的錄入和輸出。而運算、存儲等全部在主機上進行。
拿一個電子商城舉例,一個集中式系統的電子商城,通過一個應用實現,該應用部署在一起主機上,對外提供服務。用戶的所有操作均通過這一臺機器的一個應用實現。
集中式系統的最大的特點就是部署結構非常簡單,底層一般采用從IBM、HP等廠商購買到的昂貴的大型主機。因此無需考慮如何對服務進行多節點的部署,也就不用考慮各節點之間的分布式協作問題。
但是,由于采用單機部署。很可能帶來系統大而復雜、難于維護、發生單點故障(單個點發生故障的時候會波及到整個系統或者網絡,從而導致整個系統或者網絡的癱瘓)、擴展性差等問題。
在《分布式系統概念與設計》一書中,對分布式系統做了如下定義:
分布式系統是一個硬件或軟件組件分布在不同的網絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協調的系統。
簡單來說就是一群獨立計算機集合共同對外提供服務,但是對于系統的用戶來說,就像是一臺計算機在提供服務一樣。
分布式意味著可以采用更多的普通計算機(相對于昂貴的大型機)組成分布式集群對外提供服務。計算機越多,CPU、內存、存儲資源等也就越多,能夠處理的并發訪問量也就越大。
一個由分布式系統實現的電子商城,在功能上可能被拆分成多個應用,分別提供不同的功能,組成一個分布式系統對外提供服務。
而系統內的各個子系統之間通過網絡進行通信和協調,如異步消息或者RPC/HTTP請求調用等。
所以,分布式系統中的計算機在空間上幾乎沒有任何限制,這些計算機可能被放在不同的機柜上,也可能被部署在不同的機房中,還可能在不同的城市中,對于大型的網站甚至可能分布在不同的國家和地區。
但是,無論空間上如何分布,一個標準的分布式系統應該具有以下幾個主要特征:
分布式系統中的多臺計算機之間在空間位置上可以隨意分布,系統中的多臺計算機之間沒有主、從之分,即沒有控制整個系統的主機,也沒有受控的從機。
系統資源被所有計算機共享。每臺計算機的用戶不僅可以使用本機的資源,還可以使用本分布式系統中其他計算機的資源(包括CPU、文件、打印機等)。
系統中的若干臺計算機可以互相協作來完成一個共同的任務,或者說一個程序可以分布在幾臺計算機上并行地運行。
系統中任意兩臺計算機都可以通過通信來交換信息。
和集中式系統相比,分布式系統的性價比更高、處理能力更強、可靠性更高、也有很好的擴展性。
但是,分布式在解決了網站的高并發問題的同時也帶來了一些其他問題。
首先,分布式的必要條件就是網絡,這可能對性能甚至服務能力造成一定的影響。其次,一個集群中的服務器數量越多,服務器宕機的概率也就越大。另外,由于服務在集群中分布是部署,用戶的請求只會落到其中一臺機器上,所以,一旦處理不好就很容易產生數據一致性問題。
將應用和服務進行分層和分割,然后將應用和服務模塊進行分布式部署。這樣做不僅可以提高并發訪問能力、減少數據庫連接和資源消耗,還能使不同應用復用共同的服務,使業務易于擴展。
對網站的靜態資源如JS、CSS、圖片等資源進行分布式部署可以減輕應用服務器的負載壓力,提高訪問速度。
大型網站常常需要處理海量數據,單臺計算機往往無法提供足夠的內存空間,可以對這些數據進行分布式存儲。
隨著計算技術的發展,有些應用需要非常巨大的計算能力才能完成,如果采用集中式計算,需要耗費相當長的時間來完成。分布式計算將該應用分解成許多小的部分,分配給多臺計算機進行處理。這樣可以節約整體計算時間,大大提高計算效率。
很多人對分布式和集群的概念不是很清楚,容易混淆,這里簡單區分一下:
分布式(distributed)是指在多臺不同的服務器中部署不同的服務模塊,通過遠程調用協同工作,對外提供服務。
集群(cluster)是指在多臺不同的服務器中部署相同應用或服務模塊,構成一個集群,通過負載均衡設備對外提供服務。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。