Zookeeper知識要點,歡迎糾錯

Zookeeper

什麼是zookeeper?原理?

分佈式協調服務,底層基於ZAB(原子消息廣播);
由Leader、Follower、Observer組成。
維護有層次的數據結構;數據一般存儲在內存中;數據讀取性能高;(JMeter壓測讀取性能最高可達12-13w)
leader負責統一接收客戶端數據,廣播給Follower處理;各個請求之間是順序的;
各個Follower之間數據是一致的;
Observer負責監控Leader與Follower;
創建集羣服務時,zookeeper服務官方推薦爲奇數個,比如3個,5個等;

ZAB算法:支持崩潰恢復的原子廣播協議,爲分佈式主備系統設計的;

崩潰恢復機制:
	Leader掛了,則升級ZXID最大的Follower爲Leader,選取後其他Follower向新的leader同步狀態後,新的leader才處理客戶端請求。
消息廣播:
	1.客戶端提交數據,Leader接收,生成事務(含事務id,zxid等)
	2.leader生成事務隊列提交事務給各個Follower,Follower接收寫入事務日誌待處理;
	3.各個Follower向Leader作出ACK迴應;
	4.Leader確保收到半數以上回應後,向Follower發出Commit指令提交事務;
	5.響應客戶端

ZAB底層基於cas算法,cas是基於paxos算法;
paxos算法:一致性狀態;隨機算法;

ZK應用

  • 配置管理
    (要求:數據量小;
    運行時數據動態變化;
    集羣中各個節點共享信息,配置一直)
  • 數據庫切換
  • 發佈與訂閱(eg:zk+rocketmq)
  • 分佈式鎖/分佈式隊列管理
  • 集羣管理(eg:zk+dubbo)
  • 分佈式日誌收集

相較於zk,nameserver更輕量級且無狀態同步,支持存儲策略;
rocketMq後續使用的就是nameserver;

zk安裝

官方文檔:http://dubbo.apache.org/zh-cn/docs/admin/install/zookeeper.html

外網下載:
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.6.1/zookeeper-3.6.1.tar.gz

解壓:
tar zxvf (目錄)/zookeeper-3.6.1.tar.gz 目標目錄

##配置開始
修改配置文件名稱:mv zoo_sample.cfg zoo.cfg

配置集羣節點:
格式:server.名稱=ip:2555:3555

server.node1=109.254.2.151:2555:3555
server.node2=109.254.2.152:2555:3555

zoo.cfg文件編輯:vim zoo.cfg
添加以上集羣節點配置,同時修改data數據存放目錄爲:
data=/temp/zookeeper/data(zookeeper目錄下沒有data)

保存退出:esc :wq(保存/退出)
強制保存退出:esc :wq!

在zookeeper下創建data目錄:mkdir data
在data目錄下創建測試文件(例如:mydata):vim mydata 添加測試內容

##配置結束

node2重複以上步驟;

啓動: ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/cheilpengtai/apache-zookeeper-3.6.1/bin/…/conf/zoo.cfg
Starting zookeeper … STARTED

關閉:./bin/zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /home/cheilpengtai/apache-zookeeper-3.6.1/bin/…/conf/zoo.cfg
Stopping zookeeper … ./bin/zkServer.sh: line 213: kill: (31380) - No such process
STOPPED

zoo.conf

tickTime:維持心跳時間間隔
dataDir:數據存儲目錄
clientPort:客戶端連接zk端口,zk監聽這個端口;
initLimit:zk接受客戶端初始化連接最長時間;
synclimit:leader與follower之間發送消息,請求與應答時間長度;

如何實現分佈式鎖?

通過創建臨時節點來實現,臨時節點在本次會話中有效;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章