應用之處:發佈、訂閱,命名服務,分佈式協調和分佈式鎖html
Chubby 被定義爲 分佈式的鎖服務java
爲分佈式系統提供 鬆耦合、粗粒度 的分佈式鎖功能node
其由兩部分組成git
提供數據的讀寫接口並管理相關配置數據的服務端github
另外一部分是客戶端使用的 SDKredis
爲對外提供穩定服務,每個 Chubby 單元都由一組服務器組成,使用共識算法從集羣中選舉出主節點算法
Zookeeper 也使用文件系統組織系統中存儲的資源數據庫
/parent服務器
/parent/node1分佈式
/parent/node2
/parent/node3
其並無文件和文件夾的概念,只有 Znode 概念,它既能夠做爲容器存儲數據,也能夠持有其餘 Znode 造成父子關係
PERSISTENT:持久
persistent_sequential:持久且有序
ephemeral:臨時
ephemeral_sequential:臨時且有序
客戶端鏈接 Z 時纔會保持存在的節點,當客戶端和服務端鏈接中斷,則當前鏈接持有的全部節點都會被刪除
與臨時節點相反,不會隨會話鏈接的中斷而刪除,須要客戶端主動刪除
若是使用 Z 的順序節點,那麼全部節點就會在名字的末尾附加一個序列號,序列號是由父節點維護的單調遞增計數器生成
客戶端鏈接 Zookeeper,並在 /lock 下建立臨時且有序(即EPHEMERAL_SEQUENTIAL)的子節點,如,第一個子節點爲 /lock/lock-000,第二個爲 /lock/lock-001,以此類推;
建立成功後,獲取 /lock 下的子節點列表,判斷剛建立的子節點在列表中是不是序號最小的子節點,若是是,則認爲是得到鎖,不然,監聽剛建立的子節點的前一位子節點的刪除消息,等得到該子節點的變動通知後,重複此步驟,直至得到鎖爲止;
執行業務代碼;
完成業務代碼後,刪除對應子節點釋放鎖;
Redis 須要本身實現重試邏輯,比較消耗性能;
zk 重試獲取鎖,對節點註冊監聽器便可,不須要主動嘗試,性能開銷小;
若是 Redis 獲取鎖的客戶端掛了,就不能主動刪除 key,只能等待 key 的超時到期,而 zk 會主動發現客戶端斷連,並將臨時 znode 刪除,觸發後面的監聽器邏輯
DNS(Domain Name System,域名系統),萬維網上做爲域名和 IP 地址相互映射的一個分佈式數據庫,方便用戶訪問互聯網,無需記住可以被機器直接讀取的 IP 數串。
經過域名,最終獲得該域名對應的 IP 地址的過程叫作域名解析。
DNS 協議運行在 UDP 協議智商,使用端口號 53。