前幾章分別以單一資料型別——物件、檔案、(Web)文件——作為分散的基礎來考察分散式系統。這些資料型別都源自非分散式系統,再經改造,讓分散的諸多議題對使用者與開發者透明。
本章考察的是另一代分散式系統:它們假設系統的各個元件天生就是分散的,開發這類系統的真正難題在於協調不同元件的活動。
重點不再是元件的透明分散,而是元件之間活動的協調。
協調的某些面向其實在前幾章已經觸及(尤其是事件式系統);事實上,許多傳統分散式系統也正逐漸納入在協調式系統中扮演要角的機制。
本章先簡介分散式系統中「協調」的概念,再依慣例逐一檢視架構、行程、通訊、命名、同步、一致性與複製、容錯與安全。
本章重點#
- 參照與時間解耦:協調式系統多聚焦於行程的參照解耦——行程不必明確指涉彼此即可通訊;還可以進一步提供時間解耦——行程不必同時存在也能通訊。兩個維度的組合構成協調模型的分類:直接協調、信箱協調、會面導向協調、生成式通訊。
- 發佈/訂閱典範:重要的一群協調式系統遵循發佈/訂閱模式(如 TIB/Rendezvous)。訊息不帶接收者位址,而是以**主題(subject)**定址;想收訊息的行程訂閱特定主題,由中介軟體負責把訊息從發佈者路由到訂閱者。
- 內容式發佈/訂閱:更精緻的系統讓訂閱者對發佈資料項的屬性制定述詞(predicates),形成內容式(content-based)發佈/訂閱系統。效率的關鍵是讓路由器安裝過濾器(filters),使發佈的資料只沿著確知有訂閱者的外出連結轉發。
- 生成式通訊:另一群協調式系統採用生成式通訊——透過元組(tuple)的共享資料空間進行。元組是類似紀錄的有型別資料結構;讀取時行程提供模板元組描述要找的東西,相符的元組被選出並回傳,找不到則行程阻塞。
- 本質差異與優勢:協調式系統與眾不同之處,在於全力提供一種讓行程事先互不相識也能方便通訊的方式,且通訊可以持續匿名進行。主要優點是彈性:系統在持續運作的同時更容易擴充或修改。
- 原理的適用:本書第一部分討論的分散式系統原理同樣適用於協調式系統,不過快取與複製在現行實作中的角色較不突出;命名則與目錄服務支援的屬性式搜尋密切相關。安全是難點——它本質上違反發佈者與訂閱者之間的解耦;當中介軟體也必須被隔絕於發佈內容之外時,問題更加嚴重,高效的解法更難提供。