在《分布式計算:原理、演算法與系統》書中,1.8.1小節綜述了設計和構建分布式系統時需要仔細考慮的10個方面,這10個方面也可以作為觀察乙個分布式系統的10個角度。
設計和構建分布式系統時,以下幾個方面務必仔細考慮。
1)通訊。這個任務包括設計適當的網路間程序通訊機制。一些樣例機制:遠端過程呼叫(rpc),遠端物件呼叫(roi),面向流的通訊和面向訊息的通訊。
2)程序。涉及的問題包括:在客戶端/伺服器的程序和執行緒管理、**遷移、軟體與移動**的設計等。
3)命名。為了以透明和可擴充套件的方式來定位資源和程序,設計乙個易於使用並且魯棒的方案來命名、分配識別符號和位址是必不可少的。在移動系統中進行命名帶來了進一步的挑戰,這是由於名字不能容易地繫結到任何靜態地理拓撲上。
4)同步。在程序之間的同步與合作機制是必不可少的。互斥是同步的典型例子,但還需要許多其他形式的同步,如領導者選舉。此外,物理時鐘的同步,能對所經過時間的本質進行刻畫的邏輯時鐘,以及全域性記錄演算法,這些都需要不同形式的同步機制。
5)資料儲存與訪問。資料儲存的方式以及所隱含的通過網路對資料的快速和可擴充套件的訪問機制,是影響效能的重要因素。檔案系統設計的一些傳統問題在分布式系統環境下需要重新考慮。
6)一致性與副本。為了避免出現瓶頸,提供資料的快速訪問以及提供可擴充套件性,對資料物件進行複製是非常必要的。這會導致出現管理副本的問題,以及在分布式環境下維護副本/快取之間一致性的問題。乙個簡單的例子是如何取捨資料訪問的粒度(大小)。
7)容錯。容錯需要在任何連線、節點、程序錯誤的情況下保持操作正確、高效。彈性過程、可靠的通訊、分布式提交、檢查點和恢復、協商和共識、故障檢測以及自穩定性是一些提供容錯的機制。
8)安全。分布式系統安全涉及密碼學的各個方面、安全通道、訪問控制、金鑰管理--生成、分發、認證以及安全組管理。
9)api與透明性。易於使用的通訊等專業化服務的api對於分布式系統服務被非專業使用者廣泛接收是很重要的。透明性用來隱藏實現策略,避免讓使用者捲進細節,可以按照下面的方式分類。訪問透明度隱藏了不同系統中的資料表示的差異,提供統一的操作來訪問系統資源。位置透明性使得資源的位置對於使用者來說是透明的。遷移透明性允許在不更改名字的情況下遷移資源。允許在訪問資源的過程中對資源進行遷移被稱為重定位透明性。複製透明性是指不讓使用者感覺到進行了複製。併發透明性隱藏了使用者對共享資源的併發訪問。失敗透明性是指系統是可靠且容錯的。
10)可擴充套件性和模組化。演算法、資料(物件)以及服務必須盡可能地分布。諸如複製、快取、快取管理和非同步處理等技術能夠增加可擴充套件性。
分布式系統
分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...
分布式系統
分布式,一來就直接看書,除非你有比較深厚的技術功底,要不還是很晦澀難懂的。先想想為什麼會有分布式,分布式怎麼來的。傳統的電信 銀行業,當業務量大了之後,普通伺服器cpu io 網路到了100 請求太慢怎麼辦?最直接的做法,公升級硬體,反正也不缺錢,ibm小型機,大型機,採購了堆硬體。但是網際網路不能...
分布式系統
zookeeper讓服務配置變得更簡單 zookeeper是hadoop下的乙個子專案,它是乙個針對大型分布式系統的可靠的協調系統,提供的功能包括 配置維護 名字服務 分布式同步 組服務等。zookeeper是可以集群複製的,集群間通過zab zookeeper atomic broadcast 協...