本章導覽#

名稱(name)在所有電腦系統中扮演關鍵角色:用來共享資源、唯一識別實體、指涉位置等。命名的核心問題是名稱解析(name resolution)——把一個名稱解析成它所指涉的實體,讓行程得以存取該實體。

分散式系統與非分散式系統在命名上的差異,不在名稱本身,而在命名系統的實作方式:分散式系統中,命名系統本身往往就分散在多台機器上,而這個分散方式直接決定了命名系統的效率與可擴展性。

本章聚焦名稱在分散式系統中的三種主要用法:

  • **人性化名稱(human-friendly names)**的組織與實作——典型例子是檔案系統與全球資訊網的名稱,重點在建立全球規模、可擴展的命名系統。
  • 與位置無關的實體定位——人性化名稱的命名系統並不適合追蹤會移動的實體(多數名稱根本不暗示實體位置),需要另一類組織方式,例如行動電話系統中位置無關的識別碼,以及分散式雜湊表(Distributed Hash Table, DHT)。
  • 以屬性描述實體——人類常偏好用一組特徵描述想找的東西,因此需要把「屬性描述」解析成符合描述的實體;這類解析出了名地困難,本章將獨立討論。

本章重點#

  • 名稱有三種基本類型:**位址(address)**是實體存取點的名稱;**識別碼(identifier)**至多指涉一個實體、每個實體至多有一個識別碼、且永不重用;人性化名稱以字元字串表示、供人使用。
  • **扁平命名(flat naming)**解決「由識別碼找出位址」的問題,主要有五類做法:廣播/群播(擴展性有限)、轉送指標(forwarding pointers)、家位置(home-based)機制、結構化 P2P 系統(DHT)的路由式解析,以及階層式搜尋樹(網路劃分為巢狀網域,各網域配一個目錄節點,頂層目錄節點知道所有實體)。
  • **結構化命名(structured naming)**把名稱組織成名稱空間(以命名圖表示),實體以路徑名稱指涉;名稱解析就是逐一查找路徑名稱的組成部分。大規模命名圖分散到多台名稱伺服器上實作,解析行經哪台伺服器就在哪裡接續進行;DNS 是目前最大的實例。
  • **屬性式命名(attribute-based naming)**以(屬性, 值)配對描述實體,查詢同樣以配對表達,本質上需要窮舉搜尋所有描述子;單一資料庫內尚可行,分散環境則須改採把配對映射到 DHT 等替代方案。
  • 與屬性式命名相關的趨勢,是逐步以分散式搜尋取代名稱解析——語意重疊網路(semantic overlay network)讓節點維護一份「內容語意相近的鄰居」清單,查詢先問鄰居、不成才做有限度的廣播。