zookeeper 是檔案系統 + 監聽通知機制
最重要的核心: 客戶端監聽它關心的目錄節點,目錄節點變化之後通知客戶端 (觀察者模式)
三種角色:
leader 責進行投票的發起和決議,更新系統狀態
follower 用於接受客戶端請求並想客戶端返回結果,在選主過程中參與投票
observer 可以接受客戶端連線,將寫請求**給leader,但observer不參加投票過程,只同步leader的狀態,observer的目的是為了擴充套件系統,提高讀取速度
zookeeper 核心是原子廣播:
zookeeper 工作原理:
為了保證事務的順序一致性,zookeeper採用了遞增的事務id號(zxid)來標識事務。所有的提議(proposal)都在被提出的時候加上了zxid。實現中zxid是乙個64位的數字,它高32位是epoch用來標識
leader關係是否改變,每次乙個leader被選出來,它都會有乙個新的epoch,標識當前屬於那個leader的統治時期。低32位用於遞增計數。
每個server在工作過程中有三種狀態:
looking:當前server不知道leader是誰,正在搜尋
leading:當前server即為選舉出來的leader
following:leader已經選舉出來,當前server與之同步
工作流程:
注:1.在client向follwer發出乙個寫的請求
2.follwer把請求傳送給leader
3.leader接收到以後開始發起投票並通知follwer進行投票
4.follwer把投票結果傳送給leader
5.leader將結果彙總後如果需要寫入,則開始寫入同時把寫入操作通知給leader,然後commit;
6.follwer把請求結果返回給client
zookeeper follwer
follower主要有四個功能:
1 向leader傳送請求(ping訊息、request訊息、ack訊息、revalidate訊息);
2 接收leader訊息並進行處理;
3 接收client的請求,如果為寫請求,傳送給leader進行投票;
4 返回client結果。
follower的訊息迴圈處理如下幾種來自leader的訊息:
1 ping訊息: 心跳訊息;
2 proposal訊息:leader發起的提案,要求follower投票;
3 commit訊息:伺服器端最新一次提案的資訊;
4 uptodate訊息:表明同步完成;
5 revalidate訊息:根據leader的revalidate結果,關閉待revalidate的session還是允許其接受訊息;
6 sync訊息:返回sync結果到客戶端,這個訊息最初由客戶端發起,用來強制得到最新的更新。
zookeeper 資料型別有四種型別
znode有四種形式的目錄節點
» persistent(持久的)
» ephemeral(暫時的)
» persistent_sequential(持久化順序編號目錄節點)
» ephemeral_sequential(暫時化順序編號目錄節點)
Zookeeper基本知識介紹
1 什麼是zookeeper zookeeper是乙個分布式開源框架,提供了協調分布式應用的基本服務,它向外部應用暴露一組通用服務 分布式同步 distributed synchronization 命名服務 naming service 集群維護 group maintenance 等,簡化分布式...
基本知識總結一
一.物件導向和面向過程的區別 面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是...
ORACLE基本知識(一)
oracle 基本知識 乙個表空間只能屬於乙個資料庫 每個資料庫最少有乙個控制檔案 建議3個,分別放在不同的磁碟上 每個資料庫最少有乙個表空間 system表空間 建立system表空間的目的是盡量將目的相同的表存放在一起,以提高使用效率 每個資料庫最少有兩個聯機日誌檔案 乙個資料檔案只能屬於乙個表...