ZooKeeper 簡單理解

2021-10-12 19:10:24 字數 1929 閱讀 6101

zookeeper 概覽

zookeeper 是乙個開源的分布式協調服務,zookeeper 框架最初是在「yahoo!"上構建的,用於以簡單而穩健的方式訪問他們的應用程式。

zookeeper 是乙個典型的分布式資料一致性解決方案,分布式應用程式可以基於 zookeeper 實現諸如資料發布/訂閱、負載均衡、命名服務、分布式協調/通知、

集群管理、leader選舉、分布式鎖和分布式佇列等功能。

zookeeper 乙個最常用的使用場景就是用於擔任服務生產者和服務消費者的註冊中心。

服務生產者將自己提供的服務註冊到 zookeeper 中心,服務的消費者在進行服務呼叫的時候先到 zookeeper 中查詢服務,獲取到服務生產者的詳細資訊之後,再去呼叫服務生產者的內容與資料。

zookeeper 元件結構

除了request processor, 組成zookeeper服務的每個server都會在本地備份其它元件的拷貝(應該是leader的複本)。

複製資料庫是乙個記憶體資料庫,儲存了所有的資料樹;更新操作被記錄到磁碟中,便於資料恢復;寫操作在應用於記憶體資料庫之前先被序列化到磁碟上了。

也就是說磁碟上的日誌才是資料正真的現狀。

有條件地更新和監控

zookeeper支援監控,即客戶端可以設定在某個znode(資料節點)上的監控;當乙個節點發生變化時,就會觸發和刪除乙個監控。當乙個監控觸發時,客戶端會收到乙個說明節點變化的包。當客戶端和zookeeper server斷開時,客戶端將收到乙個本地通知。

本質就是:***(觀察者模式)

各種保證

zookeeper之所以能構造複雜的服務,如同步、配置管理、組管理等功能,是因為它提供了一系列的保證:

1)順序一致性:客戶端的更新操作必須與它們被傳送的順序嚴格一致

2)原子性:更新操作要麼成功、要麼失敗

3)單個系統影像:乙個客戶端將會看到相同的服務檢視,不管它與那個server連線(跟一致性是呼應的)

4)可靠性:一旦乙個更新操作被應用,從更新時間點向前的時間都將報錯一致,直到下一次更新。

5)時間軸:在乙個特定的時間點上,客戶端看到的系統檢視被保證是最新的。

讀寫分離流程

每乙個zookeeper伺服器都能為客戶端服務,客戶端連線到具體某個伺服器後並提交請求。

讀請求直接由本地每個伺服器資料庫的備份來滿足(直接由提供zookeeper伺服器的記憶體資料);

而那些可能改變服務狀態的請求,即寫請求,通過一致性協議zab(zookeeper atomic broadcast)來處理。

一致性協議的處理流程:來自客戶端的寫請求被統一傳送到一leader節點,其他的追隨者節點,接受leader節點的訊息建議,並統一訊息傳送。

訊息層負責leader失敗時替換leader,和同步追隨者和leader。

zookeeper使用乙個客戶原子訊息協議。因為訊息層是原子的,zookeeper可以保證本地複製從來不會有分歧。當leader節點收到寫請求時,它會計算當前系統的寫操作被應用時的狀態,並且將其轉換成乙個捕獲了最新狀態的事務。

zookeeper transactions是有序的、zookeeper是快速的(在10:1的讀寫比例下,在讀優先的工作量下,表現是較好的)。

zookeeper應用場景分布式元件都有一些相通的設計思想,如資料分割槽、一致性保證等,前一段時間玩過redis的sentinel集群實踐,再回頭看zookeeper的時候,發現它倆自動選舉leader進行故障修復的流程是一樣的。網上查了查才知道,原來是redis的故障處理流程是基於zookeeper的。

zookeeper提供的主要服務就是統一配置、選舉、監聽等,所以使用它的產品主要用它來實現訊息的發布訂閱(訊息佇列)、主節點的選舉、配置更新等功能。

Dubbo和zookeeper簡單理解

dubbo由alibaba製造 後交給阿帕奇維護的 基於rpc 遠端過程呼叫 高效能的 分布式框架 埠號 20880 dubbo提供的協議 dubbo協議 官方推薦使用dubbo採用dubbo協議 rmi 遠端方法呼叫 hessian協議 工作原理 提供有中文文件 是一種類似於面向介面進行程式設計 ...

Zookeeper入門理解

zookeeper是乙個底層的分布式協調服務工具,把框架告訴它,它自動協調 只要集群中有一台能連上就能獲取zookeeper的資料資訊 1.zookeeper可以做很多服務中介軟體的協調元件,比如hadoop,kafka,hbase.可以協調不同集群節點的狀態。2可以做很多服務中間的配置資料儲存,比...

zookeeper簡單安裝

安裝zookeeper 1.必須安裝jdk,版本在1.6以上。2.安裝zookeeper最少三颱伺服器,不然檢測時還是會提示你少於3臺伺服器 4.在 usr local 下新建資料夾zookeeper,在這個資料夾解壓 5.修改conf檔案,修改檔案zoo.cfg,修改內容 the number o...