Znode:
1、Znode既是路徑(目錄)也是信息(文件)
2、Znode有兩種分類:一分為臨時節點(會話生命周期)和永久節點;二分為普通節點和順序節點
?
Watch:
1、監聽與通知機制,可以在節點上監聽其本身(增、刪、改)或其子節點(增、刪)事件
2、代碼上通過exist、getData、getChildren注冊監聽,通過create、delete、setData可以觸發通知
?
一致性機制:
1、Single System Image,數據會被同步到所有節點,客戶端可以連接任一節點,獲取數據。數據同步到各個節點肯定需要一點時間,是最終一致性,所以對于類似轉賬的業務,不應直接去查,而應注冊監聽等待通知,才能保證數據一致性
2、Sequential Consistency,同時寫同一條記錄問題,Leader-Follower機制,寫請求都會路由到Leader,每個寫請求都會加一個數字標簽表明事務順序,寫請求按照順序執行(異步的分布式系統實現同步的效果)
?
應用:
Zookeeper最常用的定位是分布式協調服務,協調是一個比較寬泛的概念,按照官方文檔它其實可以有很多應用場景
統一命名空間 Name Service?
配置管理
集群管理 Group Membership – 檢測成員狀態即集群節點狀態
集群管理 Election – 集群選舉
分布式鎖
?
*分布式隊列 – 生產者消費者隊列
*Barriers (籬笆墻) - A barrier is a primitive that enables a group of processes to synchronize the beginning and the end of a computation.
*Two-phased Commit兩階段提交,通常用于分布式事務
*BookKeeper – 分布式日志流存儲
?
這些應用的實現原理都是用上面的znode和watch機制,如集群選舉,各個節點對應臨時順序節點,順序最小的為主;分布式鎖原理一模一樣,順序最小的節點獲取到鎖。