zookeeper基礎內容

文章目錄

  • Zookeeper基礎
    • 概述
    • 數據結構
    • Zookeeper節點操作
    • zookeeper節點操作命令
    • 數據模型 znode 結構
  • zookeeper java客戶端
    • ZooKeeper原生API
    • Curator
    • zkClient
    • 對比總結

Zookeeper基礎

概述

  • zookeeper(分布式協調服務) 本質:小型的文件存儲系統+監聽通知機制
  • ZooKeeper 是 Apache 軟件基金會的一個軟件項目,它為大型分布式計算提供開源的分布式配置服務、同步服務和命名注冊
  • ZooKeeper 的架構通過冗余服務實現高可用性(CP)[CAP:一致性、可用性、分區容錯性](最終一致性)。
  • Zookeeper 的設計目標是將那些復雜且容易出錯的分布式一致性服務封裝起來,構成一個高效可靠的原語集,并以一系列簡單
    易用的接口提供給用戶使用。
    一個典型的分布式數據一致性的解決方案,分布式應用程序可以基于它實現諸如數據發布/訂閱、負載均衡、命名服務、分布式
    協調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列等功

數據結構

  • zookeeper本身是一個樹形目錄服務(名稱空間),非常類似于標準文件系統,key-value 的形式存儲。名稱 key 由斜線 / 分
    割的一系列路徑元素,zookeeper 名稱空間中的每個節點都是由一個路徑來標識的。
    在這里插入圖片描述
  • 每個路徑下的節點key(完整路徑,名稱)是唯一的,即同一級節點 key 名稱是唯一的
  • 每個節點中存儲了節點value和對應的狀態屬性
    在這里插入圖片描述

Zookeeper節點操作

在這里插入圖片描述

zookeeper節點操作命令

在這里插入圖片描述

數據模型 znode 結構

在這里插入圖片描述

zookeeper java客戶端

  1. zookeeper 原生API:session不支持超時重連,watch監聽需要進行反復注冊、不支持對節點的遞歸操作
  2. Curator:提供各個場景的實現,提供了一套fluent風格的API調用
  3. zkClient:幾乎沒有參考文檔,異常處理簡化,沒有提供各個場景對應的實現

ZooKeeper原生API

  • ZooKeeper原生API是Apache ZooKeeper項目自帶的Java客戶端庫。它提供了連接ZooKeeper集群并執行基本操作的功能。雖然它足夠靈活,但在處理復雜的分布式系統任務時可能顯得有些繁瑣。
  • 優點:
    • 官方支持,與ZooKeeper項目保持一致。
    • 原生API直接暴露ZooKeeper的底層操作,可以更好地理解ZooKeeper的工作原理。
  • 缺點:
    • 使用復雜,需要處理連接管理、會話超時等底層細節。
    • 需要手動編寫一些常見的模式(例如分布式鎖、隊列)。

Curator

  • Curator是Netflix開發的一個基于ZooKeeper的高級客戶端庫。它構建在ZooKeeper原生API之上,簡化了許多常見任務的實現,如分布式鎖、選舉、緩存和Leader選舉等。
  • 優點:
    • 提供了高級別的抽象,簡化了ZooKeeper的使用。
    • 包含了一系列常見的分布式系統模式的實現,如分布式鎖、隊列等。
    • 提供了更多的錯誤處理機制和易用性改進。
  • 缺點:
    • 引入了額外的依賴,增加了項目的復雜性。
    • 概念相對較多,學習曲線較陡。

zkClient

  • zkClient是Apache Kafka項目中的一個ZooKeeper客戶端庫。它提供了一些高級別的API,簡化了ZooKeeper的連接和操作。
  • 優點:
    • 相對于ZooKeeper原生API,zkClient提供了更高級別的抽象。
    • 更容易上手,相對于Curator,zkClient的概念和學習曲線較為簡單。
  • 缺點:
    • 社區支持相對較少。
    • 功能相對較為有限,對于某些復雜場景可能不夠靈活。

對比總結

特性ZooKeeper原生APICuratorzkClient
抽象級別較低
復雜度較高較高
功能完備性一般一般
社區支持Apache官方支持Netflix支持相對較少
學習曲線陡峭陡峭平緩

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215548.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215548.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215548.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

寄存器、緩存、內存、硬盤、存儲器的理解

https://blog.csdn.net/heixiaolong7/article/details/51226378 只要能存儲數據的器件都可以稱之為存儲器,它的含義覆蓋了寄存器,緩存,內存,硬盤。cpu訪問快慢的速度依次為 寄存器-> 緩存->內存->硬盤 寄存器是中央處…

Springboot內置Tomcat線程數優化

Springboot內置Tomcat線程數優化 # 等待隊列長度,默認100。隊列也做緩沖池用,但也不能無限長,不但消耗內存,而且出隊入隊也消耗CPU server.tomcat.accept-count1000 # 最大工作線程數,默認200。(4核8g內存…

Spring 的緩存機制【記錄】

一、背景 在最近的業務需求開發過程中遇到了“傳說中”的循環依賴問題,在之前學習Spring的時候經常會看到Spring是如何解決循環依賴問題的,所謂循環依賴即形成了一個環狀的依賴關系,這個環中的某一個點產生不穩定變化都會導致整個鏈路產生不…

OpenCV-opencv下載安裝和基本操作

文章目錄 一、實驗目的二、實驗內容三、實驗過程OpenCV-python的安裝與配置python下載和環境配置PIP鏡像安裝Numpy安裝openCV-python檢驗opencv安裝是否成功 openCV-python的基本操作圖像輸入和展示以及寫出openCV界面編程單窗口顯示多圖片鼠標事件鍵盤事件滑動條事件 四、實驗…

唯創知音WTN6080-8S語音芯片在咖啡機中的應用:增添聲音魅力,提升用戶體驗

在快節奏的現代生活中,咖啡機已成為許多家庭和辦公室的必備設備,為人們提供了便捷和高品質的咖啡享受。然而,對于很多用戶來說,操作咖啡機可能是一項復雜而棘手的任務。為了解決這一難題,唯創知音WTN6080-8S語音芯片被…

Altman作了多少惡?排擠首席科學家出GPT5開發、離間董事會、PUA員工

在山姆奧特曼(Sam Altman)被OpenAI董事會突然解職后的幾天里,這個消息在科技圈引發轟動,該公司內部員工和許多科技界人士甚至將此舉比作一場政變。 奧特曼被解雇后立即傳出的說法是,OpenAI的廣大員工都很喜歡他&#x…

一入一出模擬量兩線制無源 4-20mA隔離變送器

一入一出模擬量兩線制無源 4-20mA隔離變送器 特征與應用: ◆薄體積,低成本,國際標準 DIN35mm 導軌安裝方式 ◆兩端隔離(輸入、輸出間相互隔離) ◆單通道輸入單通道輸出 ◆高精度等級(0.1%,0.2% F.S) ◆高線性度(0.1% F.S) ◆高隔離電壓(3000…

32位ADC布局的指導方針

接地必須是一個低阻抗連接,以使回流電流不受干擾地流回各自的源。接地面連接盡量短且直。使用過孔連接接地線時,應并聯多個過孔,以減小對地阻抗。 混合信號布局有時包含在一個位置捆綁在一起的單獨的模擬和數字地平面;但是,當模擬…

活動回顧 | 菊風亮相 GTC2023 全球流量大會

2023年12月5日-12月6日,由白鯨出海主辦的【GTC2023 全球流量大會】在中國深圳盛大召開。 本次大會薈聚海內外優質企業品牌,以專業的“展會”形式,全方位呈現跨境出海的成果,探索多元化的跨境商業模式,大會涵蓋社交娛樂…

【Jeecg Boot 3 - 第二天】1.1、后端 docker-compose 部署 JEECGBOOT3

一、場景 二、實戰 ? 2.1 修改配置文件 > 目的一:將 dev 變更為生產環境 prod > 目的二:方便spring項目調用docker同個network下的redis和mysql ? 2.2 編寫dockerfile ? 2.3 編寫docker-compose.yaml ? 2.4 打…

Qt/C++音視頻開發59-使用mdk-sdk組件/原qtav作者力作/性能兇殘/超級跨平臺

一、前言 最近一個月一直在研究mdk-sdk音視頻組件,這個組件是原qtav作者的最新力作,提供了各種各樣的示例demo,不僅限于支持C,其他各種比如java/flutter/web/android等全部支持,性能上也是杠杠的,目前大概…

cadence中如何在更新原理圖封裝

cadence中如何在更新原理圖封裝 一、更改原理圖封裝 當原理圖畫好后,如果我們發現某個封裝錯了,需要改動,需要找到你最初畫Library中器件封裝文件打開,進行修改,修改好后保存。 二、更新封裝 保存好后,…

C/C++ 有效的字母異位詞

題目: 給定兩個字符串s和t,編寫一個函數來判斷t是否是s的字母異位詞。 注:若s和t中每個字符出現的次數都相同,則稱s和t互為字母異位詞。 示例 1: 輸入: s "anagram", t "nagaram" 輸出: true …

2024年廣西職業院校技能大賽中職組《網絡安全》賽項樣題

2024年廣西職業院校技能大賽 中職組《網絡安全》賽項樣題 目錄 任務一 登錄安全加固 任務二 數據庫加固(Data) 任務三 Web安全加固(Web) 任務四 流量完整性保護(Web,Data) 任務五 事件監控 任務一 應急響應 任務二 …

295. 數據流的中位數

二分法實現 295. 數據流的中位數 295. 數據流的中位數 本題的第一個難點,要自己構造一個類(因為個人構造類的題目做的較少) 屬性: 數組的長度int 數組的數據結構 List保證原數組是一個有序數組,我使用了二分查找插入新…

【IDEA】反向撤銷操作快捷鍵 ctrl+shift+z 和搜狗熱鍵沖突的解決辦法

當我們執行某些操作時與搜狗熱鍵沖突,直接取消搜狗的快捷鍵即可!!!以下以 ctrlshiftz 為例。 在輸入懸浮框右鍵找到更多設置 按鍵里面找到系統功能快捷鍵設置 取消掉沖突的熱鍵即可

?gzip --- 對 gzip 格式的支持?

源代碼: Lib/gzip.py 此模塊提供的簡單接口幫助用戶壓縮和解壓縮文件,功能類似于 GNU 應用程序 gzip 和 gunzip。 數據壓縮由 zlib 模塊提供。 gzip 模塊提供 GzipFile 類和 open()、compress()、decompress() 幾個便利的函數。GzipFile 類可以讀寫 gz…

Codeforces Round 911 (Div. 2)

Codeforces Round 911 (Div. 2) A 有大于3的區間就可以無限取水&#xff0c;答案為2&#xff0c;其他的按照個數 #include <bits/stdc.h>using namespace std;void solve() {int n, k 0;cin >> n;string s, t "...";cin >> s;auto it search…

ARM day6

2.串口發送指令控制硬件工作 結果&#xff1a; uart.h #ifndef __UART_H__ #define __UART_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_uart.h"void myuart4_init(); void myputchar(char i); cha…

element-ui基本使用

基本使用&#xff1a;npm i element-uimain.js&#xff1a;/*** 該文件是整個項目的入口文件*/ import Vue from vue; import App from ./App.vue; import ElementUI from element-ui; // 引入Element全部樣式 import element-ui/lib/theme-chalk/index.css;// 關閉vue的生產提…