Zookeeper01_必看
Zookeeper
- 解決單點故障
- 毫秒級處理
- 解決分布協調的問題
- Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分布式 ? 協調 ?服務 ?service
- 包含一個簡單的原語集,分布式應用程序可以基于它實現
- 開源領域 首屈一指?
角色模型
?? ?集群狀態(可用/不可用)
?? ?主從分工
攘其外:
?? ?統一視圖
?? ??? ?會話session
?? ??? ?數據模型Znode
?? ??? ??? ?目錄結構
?? ??? ??? ?節點類型
?? ?事件監聽Watcher
原理:
?? ?原子消息廣播協議ZAB
?? ??? ?paxos
?? ??? ??? ?journalnode
?? ??? ??? ?sentinel
?? ??? ??? ?zookeeper ?? ZAB
?? ??? ?zxid ,myid:
?? ??? ?ZXID:epoch+ID
?? ?廣播模式原理
?? ?恢復模式原理:無主模型:zab: zxid ,myid
應用場景
?? ?統一命名
?? ?配置管理
?? ?集群管理
- 大部分分布式應用需要一個主控、協調器或控制器來管理物理分布的子進程(如資源、任務分配等)
- 目前,大部分應用需要開發私有的協調程序,缺乏一個通用的機制
- 協調程序的反復編寫浪費,且難以形成通用、伸縮性好的協調器
- ZooKeeper:提供通用的分布式鎖服務,用以協調分布式應用
Keepalived監控節點不好管理
Keepalive 采用優先級監控
沒有協同工作
功能單一
Keepalive可擴展性差?
Hadoop,使用Zookeeper的事件處理確保整個集群只有一個NameNode,存儲配置信息等.
HBase,使用Zookeeper的事件處理確保整個集群只有一個HMaster,察覺HRegionServer聯機和宕機,存儲訪問控制列表等.?
在conf目錄下創建一個配置文件zoo.cfg, tickTime=2000 dataDir=/Users/zdandljb/zookeeper/data dataLogDir=/Users/zdandljb/zookeeper/dataLog clientPort=2181 initLimit=5 syncLimit=2 server.1=server1:2888:3888 server.2=server2:2888:3888 server.3=server3:2888:3888 創建myid文件tickTime:發送心跳的間隔時間,單位:毫秒
dataDir:zookeeper保存數據的目錄。
clientPort:客戶端連接 Zookeeper 服務器的端口,Zookeeper ?會監聽這個端口,接受客 戶端的訪問請求。
initLimit: 這個配置項是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不是用戶連 ?接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集群中連接到 Leader 的 ?Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過 5 個心跳的 ?時間(也就是 tickTime)長度后 Zookeeper 服務器還沒有收到客戶端的返回信息,那么表 ?明這個客戶端連接失敗。總的時間長度就是 5*2000=10 秒
syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最 長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 秒
server.A=B:C:D:其 中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip ?地址;C 表示的是這個服務器與集群中的 Leader 服務器交換信息的端口;D 表示的是萬一 ?集群中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這 ?個端口就是用來執行選舉時服務器相互通信的端口。如果是偽集群的配置方式,由于 B 都是 ?一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號?
zk:主從模式
----------------------------------------------------------------------------------------------------?
恢復模式:
- ZXID
- MYID
?
總結
以上是生活随笔為你收集整理的Zookeeper01_必看的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis03_基础命令操作
- 下一篇: Zookeeper02_zk集群搭建