您好,登錄后才能下訂單哦!
這篇文章主要講解了“Zookeeper的基礎概念是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Zookeeper的基礎概念是什么”吧!
Zookeeper是一個典型的分布式協調服務,分布式應用程序可以基于它實現數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master選舉、分布式鎖和分布式隊列等功能。Zookeeper能夠保證以下分布式一致性特征:
順序一致性:從同一個客戶端發起的事務請求,必須按照發起順序被應用到Zookeeper中
原子性:事務在集群中必須全部成功或者全部失敗,不存在部分成功部分失敗的情況
單一視圖:連接集群中的任何一個服務器,得到的數據視圖都是一樣的
可靠性:服務端一旦成功執行了某個事務,該事物引起的服務狀態變更將永久保存,除非又有新的事務更新了其狀態
實時性:這里的實時性不是說一旦事務執行成功,客戶端就可以獲取最新的數據結,而是Zookeeper保證在一段時間后,可以獲取最新的數據
簡單的數據模型:Zookeeper以數的結構組織數據,類似于目錄結構,每一個目錄在Zookeeper中成為ZNode,每一個ZNode可以記錄少量數據
可以構建集群:Zookeeper的集群最好以奇數個數搭建(過半選舉),集群中的服務兩兩建立連接相互通信
順序訪問:客戶端的更新請求,都會分配一個全局的唯一ID(ZXID)
高性能:Zookeeper將全量數據存儲在內存中,因此對于讀的操作延時非常非常低
Zookeeper集群中主要有三種角色:Leader、Follower、Observer。Leader負責接收客戶端的寫請求,并將該請求以事務的方式提交給Follower執行。Follower負責接收讀請求、參與Leader的選舉和過半寫成功策略。Observer也負責接收讀請求,不需要參與Leader的選舉和過半寫成功,該角色設計的主要目標是用來在不影響寫性能的前提下擴展Zookeeper的讀性能。
會話指的是客戶端和Zookeeper集群建立的連接,假設與客戶端相連的服務器宕機,在沒有超過sessionTimeout參數設置的前提下能夠重新連接上另一臺服務器,則之前的會話有效。
這里的數據節點除了機器節點之外,指的還是Zookeeper中的ZNode,ZNode以文件目錄的形式進行組織。主要有兩種形式:持久節點和臨時節點。持久節點一旦創建除非手動移除否則不會刪除,臨時節點和會話的生命周期有關,會話啟動創建的臨時節點會在會話斷開時自動刪除。Zookeeper還可以為節點設置SEQUENTIAL屬性,被設置了該屬性的節點在創建時會自動在節點名后面加一個數字,該數字是由父節點維護的。
Zookeeper的每個ZNode都可以存儲數據,對應于每一個ZNode,Zookeeper會維護一個叫做Stat的數據結構,Stat記錄了這個ZNode的三個數據版本,分別是version(當前ZNode的版本)、cversion(當前ZNode子節點的版本)、aversion (當前ZNode的ACL版本)。
Watch機制是Zookeeper里面非常非常重要的一個機制。客戶端可以在一些ZNode上注冊一些Watcher,當一些特定的事件發生時,Zookeeper服務端會將該事件推送至感興趣的客戶端。
Zookeeper采用ACL策略來進行權限控制,主要有以下5種權限:
CREATE:創建子節點的權限
READ:讀取節點數據和子節點列表的權限
WRITE:更新節點數據的權限
DELETE:刪除子節點的權限
ADMIN:設置節點ACL的權限
感謝各位的閱讀,以上就是“Zookeeper的基礎概念是什么”的內容了,經過本文的學習后,相信大家對Zookeeper的基礎概念是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。