亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現zookeepr分析

發布時間:2021-12-23 18:18:38 來源:億速云 閱讀:137 作者:柒染 欄目:云計算

本篇文章為大家展示了如何實現zookeepr分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

zk 一個分布式應用協調服務

zk是一個分布式,開源的,分布式協調服務,他提供了一組簡單的原生接口,分布式應用可以基于它實現,高水準的同步,集群,配置管理和命名服務。它基于開發,使用簡單的原則而設計。使用類似于文件系統目錄樹結構的數據模型。它基于java實現,可以為c和java應用服務。

協調是個臭名昭著的活兒。很容易產生資源競爭和死鎖的問題。zk的實現動機就是緩解分布式應用在解決彼此斜體問題而產生的抓狂行為。

zk的設計目標

zk 是個簡單的玩意兒。zk通過分布式的處理流程來協調應用彼此,它是使用的是一種類似文件系統的分層名字空間。這些名字空間里,包含了數據的注冊者,用zk的叫法,稱之為znodes.它類似于文件和目錄。不像傳統的文件系統,是用來存儲的,zk的數據都在內存中,所以意味著,zk的高吞吐量和底延時。zk 實現了一個優質的,高新能,高可用,嚴格訪問順序的服務。從zk的表現來看,它完全可以使用,大型,分布式系統。在可用上,也使它不會碰到單點故障的問題,嚴格的順序性,也意味著可以在客戶單實現非常復雜的同步操作。

zk 是可復制的。像它協調的應用一樣,zk自身也復制到一系列主機上。他們是一個整體。如圖 zk server

如何實現zookeepr分析

所有組成zk server的 severs 必須彼此能感知對方。他們在內存里維護一個所有機器的狀態圖,在磁盤里保存有實務日志和快照。只要大多數服務器可用。zk服務就可用。

客戶端連接到單一的服務器,通過tcp協議,發送請求,獲得反饋,獲得監聽事件,發送心跳包。如果連接的服務器掛掉,客戶端會連接其他的服務機器。

zk 是順序的。zk的每次更新都會用一個數字做標簽,這個數字,代表了全部的zk事務順序,接下來的操作用這個順序來實現高水平的抽象,比如同步操作。

zk 是快速的。zk 在讀為主的操作中,顯得特別的快。zk 運行在上千臺機器上,當讀操作為主的請求中,表現會更好。讀寫比為10:1。

數據模型和命名層次

zk 提供的命名空間像一個標準的文件系統。一個名字,就是它的路徑以(/)分隔的組合,在zk中每個節點,都已路徑來唯一標識。zk的層次命名結構如圖

如何實現zookeepr分析

Nodes 和短命的nodes

不像傳統的文件系統,在zk里每個node和它的孩子node,都有數據和他們關聯。他們像個這樣一個文件系統,即每個文件也是目錄。(zk節點里存儲的數據,包括狀態信息,配置,本地信息等,所以數據量都不大通常只有幾字節或者幾千字節),為了說清楚zk node.我們把它稱作znode,znode 維護這一個數據結構,包括狀態更改的版本號,acl 更改的信息和時間戳去用和套東西區驗證和協調的更新。如果以個node的數據發生變化,它的版本號也會變化。比如一個客戶端讀取一個node數據,也會得到它的版本號。存儲在node里的數據讀寫都是原子的。讀會讀所有關聯的數據,寫也會替換所有的數據,不會半途而廢。每個節點都有個訪問控制列表(acl),嚴格限制誰能干什么!

zk里還有個短命node的概念。這些node和創建這個節點的session生命一樣長。當這個session關閉時,這個node也就自動刪除了。短命node在你開發實現 【tbd】是很重要。

有條件的更新和監控

 zk 支持監控的概念客戶端可以對一個節點進行監控當這個節點發生變化時,監控被觸發同時被刪除,當監控被觸發,客戶端收到一個數據更改的數據包。還有當客戶端和服務端連接斷開,客戶端也會收到一個通知。這個在【tbd】中很有用。

保證

zk 簡單快速,就像他的開始的目標一樣,是構造復雜系統的基礎,比如,同步系統。實際上它有一下保證:

時序一致性:更新操作會以客戶端發送的順序被執行。

原子性:更新要么失敗,要么成功沒有部分成功的狀態。

狀態圖統一:一個客戶端無論它連接到哪個機器,所有機器圖譜一致。

可靠性:一個更新被應用,就會一直有效,直到有新的數據覆蓋。

時間線:客戶端某個時間段內看到的系統狀態圖,保證是最新的。

更多這些方面的應用,可以參看【tbd】

簡單的api

zk設計之初就是提供簡單的程序接口,所以,它僅僅支持一下操作:

create :在節點樹上,創建一個節點

delete:刪除一個節點

exists:檢查一個節點是否存在

get data:從一個節點獲取數據

set data:向一個節點寫數據

get children:獲取一個節點的孩子節點

sync:等待數據傳播同步

關于這方面的更深的技術討論,和在構建高水平應用方面的實踐,可以參考【tbd】

技術實現

下面是zk 服務組件圖,處理請求處理器外,每個zk組件都有復制的多份。

如何實現zookeepr分析

每個機器上的內存數據庫,都包含整個數據,更新日志記錄到磁盤,寫操作被序列化到磁盤在它擴散同步到其他內存數據庫之前。

每個zk 主機都對外提供服務,客戶端連接某一個主機請求服務。讀的服務從客戶連接的機器本身內存里獲取,寫服務和改變服務狀態的請求通過一個一致的協議處理。

這個一致的協議要求,所有寫請求都統一發送到一個叫leader的主機。剩下的被稱作followers的zk主機,通過leader 接收數據消息,消息層負責leaders的失敗替換和leaders和followers之間的同步。

zk使用的是原子性的消息協議,因為消息是原子性的,所以能保證本地的信息與其他主機信息是一致沒有分歧的。當leader收到一個寫請求后,它會評估服務器狀態,決定什么時候寫,然后啟動寫事務,最后獲取服務請的新狀態。

應用

zk的使用接口尤其的簡單,你可以通過他實現,順序操作,比如同步,群組管理等,許多分布式應有使用它,想了解更多,關注【tbd】。

表現

zk被設計成高可用,是不是這樣呢?在yahoo的開發組的調查說明了它是的。當讀遠大于寫操作的時候,它表現的尤其的高性能,因為寫操作要同步所有的服務器狀態。(讀遠大于寫是經典的協調服務案例),下圖是zk讀寫比率變化的測試結果圖表

如何實現zookeepr分析

這個圖表的測試數據是,3.2版本的zk 運行在雙核2Ghz Xeon處理器和兩個15k轉速的sata設備上的測試數據,一個磁盤專門做zk日志,一個寫寫數據快照,讀寫操作都是1k大小,servers 表示zk服務,組成主機數目,接近30個其他主機模擬客戶機,zk服務被配置成,leader不允許從客戶端連接。另外說明下,3.2讀寫性能是3.1版本的兩倍。

測試結果也說明了zk的可靠性,下圖顯示了在各種錯誤下服務器的表現,這些錯誤包含以下幾種:

1,follower 機器的當掉和恢復。

2,另外一個follower的當掉和恢復。

3,leader的當掉。

4,兩個follower同時當掉。

5,另外一個leader的當掉。

可用性

這個圖里顯示了,我們有7個主機組成的zk服務器,在一段時間內我們注入錯誤的系統表現。這次測試我們和以前跑同樣的訪問飽和度,有一點們把寫的比率維持在30%,這也是我們比較保守負載比例。

如何實現zookeepr分析

從張圖里,可以看出一下重要的幾點,當followers 掛掉并很快恢復是,zk能保持很高的吞吐量。更重要是,leader選舉算法能讓系統很快恢復,以保持它的高吞吐量。可以看到zk花了不到200ms選舉新的leader.第三點,當follower恢復處理能力是,zk的吞吐量又開始維持在高水平。


zookeepr 項目

zk 已經成功的在多個工業系統中應用。比如在yahoo.它負責協調yahoo的失敗恢復。上千個主題訂閱高擴展的信使服務,和數據傳輸。yahoo的獲取服務,crawler,也負責它的失敗恢復協調。作為yahoo的一員,廣告也是通過zk實現高可用性。

上述內容就是如何實現zookeepr分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿图什市| 西昌市| 建阳市| 辽宁省| 蒙阴县| 陕西省| 泾阳县| 绥德县| 翁源县| 淄博市| 灵丘县| 吴堡县| 合肥市| 彩票| 揭东县| 长乐市| 宁阳县| 莫力| 长兴县| 加查县| 阿拉善右旗| 肇州县| 黄梅县| 汉中市| 平泉县| 灌云县| 资源县| 北流市| 吉首市| 南岸区| 浠水县| 连州市| 邹城市| 石棉县| 湖南省| 泗阳县| 霍州市| 元谋县| 滨州市| 佛教| 东兰县|