10分鐘瞭解ZooKeeper

ZooKeeper簡介

ZooKeeper是一個開放源碼的分佈式應用程序協調服務,它包含一個簡單的原語集,分佈式應用程序能夠基於它實現同步服務,配置維護和命名服務等。node

 

image

ZooKeeper設計目的

1.最終一致性:client不論鏈接到哪一個Server,展現給它都是同一個視圖,這是zookeeper最重要的功能。
2.可靠性:具備簡單、健壯、良好的性能,若是消息m被到一臺服務器接受,那麼它將被全部的服務器接受。
3.實時性:Zookeeper保證客戶端將在一個時間間隔範圍內得到服務器的更新信息,或者服務器失效的信息。但因爲網絡延時等緣由,Zookeeper不能保證兩個客戶端能同時獲得剛更新的數據,若是須要最新數據,應該在讀數據以前調用sync()接口。
4.等待無關(wait-free):慢的或者失效的client不得干預快速的client的請求,使得每一個client都能有效的等待。
5.原子性:更新只能成功或者失敗,沒有中間狀態。
6.順序性:包括全局有序和偏序兩種:全局有序是指若是在一臺服務器上消息a在消息b前發佈,則在全部Server上消息a都將在消息b前被髮布;偏序是指若是一個消息b在消息a後被同一個發送者發佈,a必將排在b前面。服務器

ZooKeeper數據模型

Zookeeper會維護一個具備層次關係的數據結構,它很是相似於一個標準的文件系統,如圖所示:網絡

 

image

Zookeeper這種數據結構有以下這些特色:數據結構

1)每一個子目錄項如NameService都被稱做爲znode,這個znode是被它所在的路徑惟一標識,如Server1這個znode的標識爲/NameService/Server1。分佈式

相關文章
相關標籤/搜索