1.爲啥要用?
分佈式中機器,應用很多,服務調用方需要知道接口地址,然後在配置文件中配置,新加,修改配置文件很頻繁,很不方便。
使用註冊中心,服務提供方和調用方將自己信息放到註冊中心,即可使用。
2.常用的註冊中心:zookeepr,eurkea
3.zookeepr數據模型:
- 類似linux文件目錄
- 節點:ZK中,叫zNode。“節點”分爲兩類,第一類同樣是指構成集羣的機器;第二類是指數據模型中的數據單元,我們稱之爲數據節點。數據節點沒理解。
- 節點有效性:每個節點分爲臨時節點和永久節點,臨時節點在客戶端會話斷開後消失,而且臨時節點下不能存在子節點。永久節點就相當於進行了持久化,只能人爲的去刪除;臨時節點也可以人爲的刪除,但是在session失效後,臨時節點的所有數據都會丟失。
- 節點權限:節點有權限,創建節點時候可以設置訪問的對象。
- 節點版本號:節點修改時,版本號更新(說是和樂觀鎖類型,我沒看過)
4.zookeepr操作命令
- 創建節點 create -s/-e path data acl 其中-s爲永久節點,-e臨時節點,path節點路徑,data節點內容,acl節點操作權限
- 查看 ls path 例如:ls / 查看根節點的子節點
- 獲取節點數據 get path
- 查看節點狀態 stat path
- 修改節點數據 set path data
- 刪除節點 delete path
5.session機制
- 服務器給每一個client發一個session,有過期時間,每間隔一個心跳時間,向服務器發送請求,如果服務器沒有收到,證明該節點死亡,將該節點刪除。
6.watcher機制:沒看懂
沒看懂爲啥他要使用這個。
步驟:1.client向服務端按註冊,client觸發watcher;發送watcher,會將client存放一份到本地。
2.服務端向客戶端發送消息,將消息存到
watcher操作 get stsat 對自己、子節點操作 刪除,新增會觸發,修改不會。孫子節點都不會生效。
7.acl權限控制
- 設置時機:創建節點時候;之後用setAcl
- cdrwa 創建、刪除、讀取、寫入、管理
8.選舉機制和選舉模式
三種角色
- leader:集羣中唯一可以寫請求的處理着,進行發起投票和決議
- follower:接收客戶端請求,處理讀請求;將寫請求發給leader;參與選舉leader投票。
- observer:沒有選舉權限的follower.作用:在選舉的同時,可能會有很高的讀請求,它可以幫助follower在忙時處理讀請求,提高系統的處理量。
三種選舉模式
- 恢復模式:leader奔潰,會選一個新leader,直到集羣恢復工作。
- 同步模式:新leader選出後,多個follower會同步新leader上的內容,知道大多數follower同步完成,模式結束。恢復模式也結束。恢復模式包含了同步模式。
- 廣播模式:客戶端發起寫操作,leader發佈廣播到follower,大多數follower同意,leader修改數據,建修改後結果廣播給其他follower
9.zk集羣選舉狀態
兩個參數
1.myid:集羣中服務器唯一標識。
2. zxid: long類型。爲64位,前32位:epoch 每個leader有一個epoch ,新leader產生,就會有個epoch值,會同步到其他server的 epoch
後32位:xid 爲zk的事務id,不知道咋用。
選舉狀態:
looking:選舉狀態
leading:領導狀態
following:隨從狀態
observing:觀察狀態:那些沒投票權的observe服務器,在同步leader數據時狀態。
選舉發生的時機和選舉算法:
集羣剛啓動時候;leader奔潰時候
對比(myid,zxid),先對比zxid,zxid大者(大表示數據越新)勝出,成爲leader,如果zxid一致,則myid
大者成爲leader