分散式系統 Distributed Systems_Chapter 01: Introduction_Week1筆記_part1

Distributed System
A distributed system is a collection of autonomous (自主性) computing elements that appears to its users as a single coherent system.

A distributed system is a collection of independent computers that appears to its users as a single coherent system.

由多個彼此獨立運作的節點(可能是硬體裝置或軟體程序)所組成的整體。這些節點透過協作來對外呈現為一個單一、一致的系統。自主節點的集合且彼此要能相互協作才能組成分散式系統,讓User用起來或其他應用程式存取、就像是單體。
補充:
  • 自主運算元素(Autonomous computing elements),也稱為節點(nodes),可以是硬體裝置或軟體程序。
  • 單一一致的系統(Single coherent system):使用者或應用程式將其視為一個整體的單一系統。因此,節點之間必須進行協作;若缺乏協作,則無法構成分散式系統。
分散式系統中常見問題(Collection of autonomous nodes)
Problem1.同步與協調問題(synchronization and coordination problems)
由於每個節點皆為自主運作,因此各自維持獨立的時間觀(own notion of time),系統中並不存在統一的全域時鐘(global clock)。這種特性引發了分散式系統中最根本的同步與協調問題。

Problem2.如何管理群組成員資格、如何確認你確實正在與一位已授權的(非)成員進行通訊?
  • 開放式群組(Open group):任何人都可以加入並向其他人傳送訊息。
  • 封閉式群組(Closed group):只有群組成員之間才能互相通訊,並且需要透過特定的加入與退出流程。
覆疊網路(Overlay network)
集合中的每個節點僅與系統內的其他節點(即其鄰居)進行通訊。鄰居的集合可能是動態變化的,甚至可能僅能以隱含方式得知,例如需要查詢(lookup)才能獲取。(鄰居集合可能隨時間而變動,甚至可能無法直接得知,而必須透過查詢機制來確定。)
An overlay network is a computer network that is built on top of another network. Nodes in the overlay network can be thought of as being connected by virtual or logical links, each of which corresponds to a path, perhaps through many physical links, in the underlying network. 
For example, distributed systems such as peer-to-peer networks and client-server applications are overlay networks because their nodes run on top of the Internet.

Overlay types
  • 結構化(Structured):每個節點都有一組明確定義的鄰居,並與這些鄰居進行通訊。
    例如:樹狀結構(tree)、環狀結構(ring)。
  • 非結構化(Unstructured):每個節點僅隨機參考系統中其他節點,並與之建立連結。
一致性系統(Coherent system)
節點的集合作為一個整體運作,無論使用者與系統互動的地點、時間或方式為何,系統的行為都應保持一致。

要滿足分散透明性(Distribution transparency):
  • 終端使用者無法察覺系統背後運算的實際位置。
  • 資料的具體存放位置對應用程式而言應該是無關緊要的(irrelevant)。
  • 資料是否被複製(replicated),對使用者與應用程式來說應完全隱藏。
部分艱難的挑戰失效問題(The snag: partial failures)
在分散式系統中無法完全避免,任何時刻都可能僅有部分節點或元件發生故障。要完全隱藏這些部分失效及其恢復過程往往非常困難,甚至在一般情況下是不可能完全隱藏的。

中介軟體(Middleware)
  • 分散式系統(DS) 通常會組織成一個額外的軟體層,邏輯上位於系統中各電腦作業系統之上。
  • 中介軟體(Middleware) 扮演資源管理者的角色,為應用程式提供服務,使其能夠在網路中高效地共享與部署這些資源,中介軟體被視為一種位於各個作業系統之上的邏輯層。
在分散式系統中主要想達到的目標
  • Support sharing of resources 
  • Distribution transparency
  • Openness : Be able to interact with services from other open systems, irrespective of the underlying environment
  • Scalability : 分散式作業系統至少都可以透過增加新的資源來擴充,以符合系統新的需求。但實務上系統的延展性可能會受限於連接個別電腦的網路。例如突然增加太多新的電腦,網路容量可能就會不足。
分散式系統的「透明性類型」(Distribution transparency)
  1. 存取透明性(Access Transparency):隱藏資料表示方式與存取方法的差異。
  2. 位置透明性(Location Transparency):隱藏物件實際所在的位置。
  3. 重新定位透明性(Relocation Transparency):隱藏物件在使用過程中,可能被移動到其他位置的事實。
  4. 遷移透明性(Migration Transparency):隱藏物件可能被移動到另一個位置的事實。
  5. 複製透明性(Replication Transparency):隱藏物件被複製在多個節點上的事實。
  6. 並發透明性(Concurrency Transparency):隱藏物件可能同時被多個獨立User共享的事實。
  7. 失效透明性(Failure Transparency):隱藏物件發生錯誤與恢復的過程。
分散式系統達成透明性程度(Degree of transparency)
完全追求分散式系統的「透明性」其實過於理想化,因為存在一些無法避免的限制與代價。
追求完全分散透明限制如下:
在分散式系統中,系統無法區分某節點是因為效能低落而回應緩慢,還是因為已經失效而無法回應。同樣地,當伺服器發生崩潰時,無法保證其在崩潰前是否已經完成某項操作。
此外,存在無法隱藏的通訊延遲。(在深山、國外收訊不好的地方,人家用5G你用4G、他用台哥大擬用中華電信...。)

追求完全透明性的代價(若追求完全的透明性,將付出顯著的效能代價。)
  • 會犧牲效能:為了隱藏分散式系統的存在,系統需要額外的處理,導致效能下降,反而暴露了系統的分散性。為了容錯,若每次寫入操作都立即刷新到磁碟,會嚴重影響系統效能。
  • 副本同步需要時間:要讓所有副本與主節點保持完全一致,需要額外的延遲與同步開銷。
在某些情境下,適度暴露系統的分散特性反而更有益。
  • 利用位置型服務,例如:尋找你附近的朋友。
  • 處理跨時區使用者 : 當使用者分布於不同時區時,暴露分散性有助於正確處理時間相關的互動。
  • 當系統出現異常時,適度暴露分散性可以幫助使用者理解狀況。
Openness of distributed systems
系統應具備與其他開放系統之服務互操作的能力,而不受限於其底層運行環境的差異。
  • Systems should conform to well-defined interfaces(明確定義的介面)
  • Systems should easily interoperate (互通)
    => Interoperability – components can co-exist / work together
  • Systems should support portability of applications (應用程式的可攜性)
  • Systems should be easily extensible(良好的可擴充性)

Ref:

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題

外貿Payment Term 付款條件(方式)常見的英文縮寫與定義