大數據時代到來程序員必備技能分布式系統,白話解析分布式系統
分布式系統在互聯網時代,尤其是大數據時代到來之後,成為了每個程序員的必備技能之一。分布式系統主要包含了:分布式網路,分布式存儲,分布式計算,分布式應用。
分布式與集群的區別
分布式(distributed)是指在多台不同的伺服器中部署不同的服務模塊,通過遠程調用協同工作,對外提供服務。
集群(cluster)是指在多台不同的伺服器中部署相同應用或服務模塊,構成一個集群,通過負載均衡設備對外提供服務。
分布式的定義
分布式系統(distributed system)簡單來說就是一群獨立計算機集合共同對外提供服務,但是對於系統的用戶來說,就像是一台計算機在提供服務一樣。分布式意味著可以採用更多的普通計算機(相對於昂貴的大型機)組成分布式集群對外提供服務。計算機越多,CPU、內存、存儲資源等也就越多,能夠處理越大的並發訪問量。
分布式的特性
各個主機之間通信和協調主要通過網路進行,所以分布式系統中的計算機在空間上幾乎沒有任何限制,這些計算機可能被放在不同的機柜上,也可能被部署在不同的機房中,還可能在不同的城市中,對於大型的網站甚至可能分布在不同的國家和地區。但是,無論空間上如何分布,一個標準的分布式系統應該具有以下幾個主要特徵:
分布性——分布式系統中的多台計算機之間在空間位置上可以隨意分布,系統中的多台計算機之間沒有主、從之分,即沒有控制整個系統的主機,也沒有受控的從機。
透明性——系統資源被所有計算機共享。每台計算機的用戶不僅可以使用本機的資源,還可以使用本分布式系統中其他計算機的資源(包括CPU、文件、印表機等)。
同一性——系統中的若干台計算機可以互相協作來完成一個共同的任務,或者說一個程序可以分布在幾台計算機上並行地運行。
通信性——系統中任意兩台計算機都可以通過通信來交換信息。
和集中式系統相比,分布式系統的性價比更高、處理能力更強、可靠性更高、也有很好的擴展性。但是,分布式在解決了網站的高並發問題的同時也帶來了一些其他問題。首先,分布式的必要條件就是網路,這可能對性能甚至服務能力造成一定的影響。其次,一個集群中的伺服器數量越多,伺服器宕機的概率也就越大。另外,由於服務在集群中分布是部署,用戶的請求只會落到其中一台機器上,所以,一旦處理不好就很容易產生數據一致性問題。
分布式設計開發注意問題
系統如何拆分為子系統
如何規划子系統間的通信
通信過程中的安全如何考慮
如何讓子系統可以擴展
子系統的可靠性如何保證
數據的一致性是如何實現的
總結
分布式系統有著漫無邊際的擴展性。(畢竟任何計算機都會有性能的極限,分布式系統可以通過不斷擴張主機的數量以實現橫向水平性能的擴展)相對集群的另一個好處就是巴菲特的名言:不要把雞蛋放在一個籃子里,來減輕被一鍋端的風險。
※搜索引擎的網路爬蟲、網頁蜘蛛爬行知識分享,robots協議能阻止站點被爬嗎?
※DoS攻擊的原理及表現的癥狀
※大數據時代如何保護數據,反爬蟲竊取的實用思路和方法
※不浪不飄,老實本分的關係型資料庫
※物聯網離我們有多遠,八一八物聯網,縷一縷IoT
TAG:碼尚 |