Zookeeper的概述
Zookeeper
7.1 Zookeeper 的概述
-
Zookeeper 是一個開源的分布式協調服務框架 ,主要用來解決分布式集群中 應用系統的一致性問題
-
Zookeeper 是 Google Chubby 思想的一個開源實現
-
Zookeeper 本質上是一個分布式文件系統, 適合存放小文件, 通過文件系統來實現分布式協調
分布式文件系統?
?
-
在上圖左側, Zookeeper 中存儲的其實是一個又一個 Znode, Znode 是 Zookeeper 中的節點
-
Znode 是有路徑的, 例如 /data/host1, /data/host2, 這個路徑也可以理解為是 Znode 的 Name
-
Znode 也可以攜帶數據, 例如說某個 Znode 的路徑是 /data/host1, 其值是一個字符串 "192.168.0.1"
-
-
正因為 Znode 的特性, 所以 Zookeeper 可以對外提供出一個類似于文件系統的試圖, 可以通過操作文件系統的方式操作 Zookeeper
-
使用路徑獲取 Znode
-
獲取 Znode 攜帶的數據
-
修改 Znode 攜帶的數據
-
刪除 Znode
-
添加 Znode
-
等等...
-
Zookeeper 是分布式的
首先呢, Zookeeper 是分為服務端和客戶端的, 客戶端有 Java 的客戶端, 有 Shell 命令行的客戶端等, 客戶端通過一個類似于文件系統的 API 來訪問 Zookeeper 集群
?
但是事實上, 客戶端最終是直接訪問 Zookeeper 集群, 集群中有兩大類角色, 一類是 Leader, 一類是 Follower, 其實就是主從, Leader 負責讀和寫, Follower 只能讀, 遇到會產生修改的請求會轉發給 Leader 處理, 這是因為 Zookeeper 本質上就是為了在分布式環境中對消息的一致性的支持, 而 Zookeeper 所基于的 ZAB 協議是 Paxos 協議的一個變種, ZAB 協議中是有一個全局的事務生成者, 就是 Leader, 修改設計到在分布式環境下對事務達成一致, 必須由 Leader 發起
?
舉個例子?
?
比如說一個常見的分布式主從系統, 如果有 ZK 在的話, 主節點不需要和每個從節點保持連接, 只需要監聽從節點創建的 Znode, 便可以知道誰在線
Zookeeper 能做什么?
-
發布訂閱
-
命名服務
-
分布式鎖
-
分布式協調
7.2 Zookeeper安裝
| 192.168.174.100 | node01 | 1 |
| 192.168.174.110 | node02 | 2 |
| 192.168.174.120 | node03 | 3 |
總結
以上是生活随笔為你收集整理的Zookeeper的概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux的shell脚本
- 下一篇: Zookeeper的节点操作