大數據學習(63)- Zookeeper詳解

&&大數據學習&&

🔥系列專欄: 👑哲學語錄: 用力所能及,改變世界。
💖如果覺得博主的文章還不錯的話,請點贊👍+收藏??+留言📝支持一下博主哦🤞

🍋一、zookeeper概念


Zookeeper是 Apache Hadoop項目下的一個子項目,是一個樹形目錄服務。

Zookeeper翻譯過來就是動物園管理員,他是用來管Hadoop(大象)、Hive(蜜蜂)、Pig(小豬)的管理員,簡稱zk

ZooKeeper?是一個分布式的、開源的協調服務,主要用于解決分布式系統中的一致性問題。它提供了一個簡單而強大的接口,幫助開發者在分布式環境中實現諸如配置管理、命名服務、分布式鎖、集群管理等功能。

🍋二、ZooKeeper 的架構

ZooKeeper 采用?主從架構,包含以下角色:

  1. Leader

    負責處理寫請求和事務操作。通過選舉機制產生。(ZooKeeper 的選舉機制主要用于其集群管理,特別是在集群啟動或領導者節點故障時,用于選出一個新的領導者節點。這個領導者節點將負責處理客戶端的請求、維護集群狀態以及與其他節點進行通信。)
  2. Follower

    處理讀請求,并將寫請求轉發給 Leader。參與 Leader 選舉。
  3. Observer(可選)

    與 Follower 類似,但不參與選舉,用于擴展讀性能。
  4. Client

    與 ZooKeeper 集群交互的客戶端。

🍋三、zookeeper提供的主要功能

1、配置管理


在多個應用程序(或服務器)中,假如存在一些相同的配置信息,在對該配置信息進行修改時,我們需要一個一個進行修改,這樣會大大增加維護的成本,不方便管理。這時如果使用一個專門放配置中心的組件,將相同的配置信息放在配置中心,需要的時候直接拉取,這樣可以大大節約維護的成本, 而zookeeper即可實現配置中心的功能。

2.分布式鎖


????????在多個用戶訪問同一臺主機上的應用程序數據時,我們可以通過加鎖解決并發操作的問題,但是如果有多臺主機相同的應用程序要訪問同一數據時,這個時候我們在一臺主機上加鎖是不能解決另一臺主機的并發問題的,換句話說自己的鎖只對自己有效并不影響別的 ,這個時候就需要分布式鎖解決這類問題,我個人理解分布式鎖像是從所有主機中抽取出來的一把鎖,或者是有一把總鎖對所有主機都有效。zookeeper可以實現分布式鎖的功能。

????????分布式鎖允許在多個服務實例之間協調對共享資源的訪問。在分布式環境中,傳統的單機鎖機制(如線程鎖)無法跨進程或跨服務器工作,因此需要使用分布式鎖來確保在同一時間只有一個服務實例能夠訪問或修改共享資源,從而避免數據競爭和數據不一致的問題。

3.分布式應用協調

????????分布式事務:ZooKeeper 可以用于實現分布式事務的協調,確保多個分布式節點能夠協同工作,完成復雜的事務操作。

????????分布式選舉:ZooKeeper 可以用于實現分布式系統中的領導者選舉,確保在集群中只有一個節點擔任領導者角色。

選舉過程大致如下

  1. 集群啟動或領導者故障:當 ZooKeeper 集群啟動時,或者當前的領導者節點因為某種原因(如崩潰或網絡分區)無法繼續工作時,集群會進入選舉狀態。

  2. 服務器狀態轉換:集群中的每個服務器都會將自己的狀態轉換為?LOOKING,表示正在尋找領導者。

  3. 投票過程

    • 每個服務器都會為自己投一票,并將自己的投票信息(包括服務器ID和ZXID,ZXID是ZooKeeper的事務ID,用于標識服務器的版本和狀態)發送給集群中的其他服務器。
    • 服務器會收集來自其他服務器的投票,并根據一定的規則(如ZXID的大小和服務器ID的大小)來決定是否接受其他服務器的投票。
    • 如果一個服務器發現自己的投票能夠贏得多數(即超過半數的服務器投票給自己),它就會成為領導者。
  4. 領導者確認:一旦選舉出領導者,領導者會向集群中的其他服務器發送通知,確認自己的領導地位。其他服務器在收到領導者的通知后,會將自己的狀態轉換為?FOLLOWING?或?OBSERVER(對于觀察者節點),并開始跟隨領導者工作。

  5. 故障恢復:如果領導者節點在工作過程中出現故障,集群會重新進入選舉狀態,選舉出一個新的領導者。

4. 組服務

組成員管理:ZooKeeper 可以管理分布式系統中的組成員信息,如節點的加入、離開和更新。

負載均衡:通過組成員管理,ZooKeeper 可以幫助實現分布式系統中的負載均衡和故障恢復。

🍋四、使用場景

1. 分布式數據庫

元數據信息管理

  • 定義:在分布式數據庫中,元數據是指描述數據庫結構、配置、權限等信息的數據。
  • ZooKeeper 作用:ZooKeeper 可以用于集中存儲和管理分布式數據庫的元數據。例如,數據庫管理員可以在 ZooKeeper 中創建節點來存儲數據庫表的結構信息、索引信息、權限設置等。
  • 優勢:通過 ZooKeeper,數據庫管理員可以方便地查看和修改元數據,同時 ZooKeeper 的數據一致性保證確保所有節點都能獲取到最新的元數據信息。

節點狀態信息管理

  • 定義:節點狀態信息指的是分布式數據庫中各個節點的運行狀態、負載情況等信息。
  • ZooKeeper 作用:ZooKeeper 可以跟蹤分布式數據庫集群中的節點信息,監控節點的狀態(如上線、下線、故障等)。例如,每個數據庫節點在啟動時可以向 ZooKeeper 注冊自己的信息,并在故障時通知 ZooKeeper。
  • 優勢:數據庫管理員可以通過 ZooKeeper 實時了解集群中各個節點的狀態,從而進行更好的資源管理和故障恢復。

2. 分布式消息隊列

元數據管理

  • 定義:在分布式消息隊列中,元數據包括隊列的配置信息、消費者的消費位點等。
  • ZooKeeper 作用:ZooKeeper 可以存儲和管理消息隊列的元數據。例如,消息隊列系統可以在 ZooKeeper 中創建節點來存儲隊列的名稱、消費者的消費位點等信息。
  • 優勢:通過 ZooKeeper,消息隊列系統可以實現元數據的集中管理和動態更新,方便管理員進行配置和監控。

消費者協調

  • 定義:在分布式消息隊列中,消費者協調指的是多個消費者如何共同消費消息,避免消息重復消費或消息丟失。
  • ZooKeeper 作用:ZooKeeper 可以用于實現消費者協調。例如,通過 ZooKeeper 的分布式鎖機制,可以確保同一時間只有一個消費者能夠處理某個消息,從而避免消息重復消費。同時,ZooKeeper 還可以用于實現消費者的負載均衡,將消息均勻分配給不同的消費者。
  • 優勢:通過 ZooKeeper,消息隊列系統可以實現高效、可靠的消費者協調,提高消息處理的效率和穩定性。

3. 服務發現和注冊

服務注冊

  • 定義:服務注冊是指將服務實例的信息(如服務名稱、地址、端口等)注冊到注冊中心,以便其他服務能夠發現和調用。
  • ZooKeeper 作用:ZooKeeper 可以作為服務注冊中心,允許服務提供者將自己的服務信息注冊到 ZooKeeper 中。例如,服務提供者可以在 ZooKeeper 中創建一個節點來存儲自己的服務信息。
  • 優勢:通過 ZooKeeper,服務提供者可以方便地將自己的服務注冊到注冊中心,實現服務的動態發布和更新。

服務發現

  • 定義:服務發現是指服務消費者從注冊中心獲取可用的服務實例信息,以便進行服務調用。
  • ZooKeeper 作用:ZooKeeper 可以幫助服務消費者從注冊中心獲取可用的服務實例信息。例如,服務消費者可以監聽 ZooKeeper 中與服務名稱相關的節點,當有新的服務實例注冊或已有的服務實例下線時,ZooKeeper 會通知服務消費者。
  • 優勢:通過 ZooKeeper,服務消費者可以實時獲取可用的服務實例信息,實現服務的動態發現和調用。

4. 分布式緩存

數據一致性協調

  • 定義:在分布式緩存中,數據一致性指的是多個緩存節點之間的數據保持一致。
  • ZooKeeper 作用:ZooKeeper 可以用于協調分布式緩存的一致性。例如,當某個緩存節點更新數據時,可以在 ZooKeeper 中創建一個節點來存儲更新后的數據版本信息。其他緩存節點可以監聽這個節點,當數據版本發生變化時,及時更新自己的緩存數據。
  • 優勢:通過 ZooKeeper,分布式緩存系統可以實現高效、可靠的數據一致性協調,確保多個緩存節點之間的數據保持一致。

節點狀態監控

  • 定義:節點狀態監控是指對分布式緩存中的各個節點進行狀態監控,以便及時發現和處理故障節點。
  • ZooKeeper 作用:ZooKeeper 可以跟蹤分布式緩存集群中的節點信息,監控節點的狀態(如上線、下線、故障等)。例如,每個緩存節點在啟動時可以向 ZooKeeper 注冊自己的信息,并在故障時通知 ZooKeeper。
  • 優勢:通過 ZooKeeper,分布式緩存系統可以實時了解集群中各個節點的狀態,從而進行更好的資源管理和故障恢復。

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

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

相關文章

【數據結構】3順序表

0 章節 2.1到2.3小節。 理解與表達線性表的邏輯結構; 線性表的結構、結構與操作; 順序表的表示與實現;順序表應用; 重點 線性表概念、順序表定義運算與實現&a…

CUDA編程之OpenCV與CUDA結合使用

OpenCV與CUDA的結合使用可顯著提升圖像處理性能。 一、版本匹配與環境配置 CUDA與OpenCV版本兼容性? OpenCV各版本對CUDA的支持存在差異,例如OpenCV 4.5.4需搭配CUDA 10.0?2,而較新的OpenCV 4.8.0需使用更高版本CUDA?。 需注意部分模塊(…

WPF從初學者到專家:實戰項目經驗分享與總結

WPF從初學者到專家:實戰項目經驗分享與總結 一、前言二、WPF 基礎概念與入門2.1 什么是 WPF2.2 XAML 基礎2.3 數據綁定基礎 三、第一個 WPF 項目:簡單的待辦事項列表3.1 項目需求分析3.2 項目搭建與界面設計3.3 業務邏輯實現 四、中級項目:音…

一學就會的深度學習基礎指令及操作步驟(3)模型訓練驗證

文章目錄 模型訓練驗證損失函數和優化器模型優化訓練函數驗證函數模型保存 模型訓練驗證 損失函數和優化器 loss_function nn.CrossEntropyLoss() # 損失函數 optimizer Adam(model.parameters()) # 優化器,優化參數模型優化 獲得模型所有的可訓練參數&#x…

Spring Boot 注解大全:全面解析與實戰應用

目錄 一、Spring Boot 啟動與配置相關注解 1.1 SpringBootApplication 1.2 EnableAutoConfiguration 1.3 Configuration 1.4 ComponentScan 二、依賴注入與組件管理注解 2.1 Component 2.2 Service 2.3 Repository 2.4 Controller 2.5 RestController 2.6 Autowired…

【語料數據爬蟲】Python爬蟲|批量采集征集意見稿數據(1)

前言 本文是該專欄的第5篇,后面會持續分享Python爬蟲采集各種語料數據的的干貨知識,值得關注。 在本文中,筆者將主要來介紹基于Python,來實現批量采集“征集意見稿”數據。同時,本文也是采集“征集意見稿”數據系列的第1篇。 采集相關數據的具體細節部分以及詳細思路邏輯…

企業招聘能力提升之道:突破困境,精準納才

企業招聘能力提升之道:突破困境,精準納才 在企業運營的廣袤版圖中,招聘工作無疑是一塊至關重要的拼圖。然而,不少企業在這片領域中舉步維艱,盡管投入了海量的時間與精力,收獲的成果卻不盡人意。面試環節仿…

AI對前端開發的沖擊

Cursor cursor新版本0.46版本號中有部分是改成了新布局其實 Agent 和 Edit 和 Composer 是一樣的,為了方便大家使用,我們把它們合并了,Edit 相當于普通模式下的 Composer,Agent 就是代理模式。 快捷鍵ctrli、ctrll、ctrlk 4o適合…

java中如何把json轉化的字符串再轉化成json格式

使用org.json庫 首先&#xff0c;確保你的項目中已經包含了org.json庫。如果你使用Maven&#xff0c;可以在pom.xml中添加以下依賴&#xff1a; <dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20210307…

泛型、泛型上限、泛型下限、泛型通配符

DAY8.1 Java核心基礎 泛型 Generics 是指在類定義時不指定類中信息的具體數據類型&#xff0c;而是用一個標識符來代替&#xff0c;當外部實例化對象時再指定具體的數據類型。 在定義類或者接口時不明確指定類中信息的具體數據類型&#xff0c;在實例化時再來指定具體的數據類…

Win10 下搭建免費的 FTP 服務器 FileZilla

一、概述 FileZilla 服務器是一個免費的開源FTP和FTPS服務器&#xff0c;是根據GNU通用公共許可證條款免費發布的開源軟件。FileZilla支持FTP、FTPS、SFTP等文件傳輸協議&#xff0c;相比其他FTP服務器&#xff0c;最大的優勢是FileZilla自由(免費)。 FileZilla的官網地址是&a…

C/C++中對字符處理的常用函數

C語言中的 ctype.h 頭文件提供了一系列字符分類和轉換函數&#xff0c;用于高效處理字符相關操作。這些函數通過接受 int 類型參數&#xff08;需為 unsigned char 或 EOF &#xff08;-1&#xff09;值&#xff09;&#xff0c;返回非零值表示條件正確&#xff0c;返回0表示錯…

雙指針算法介紹+算法練習(2025)

一、介紹雙指針算法 雙指針&#xff08;或稱為雙索引&#xff09;算法是一種高效的算法技巧&#xff0c;常用于處理數組或鏈表等線性數據結構。它通過使用兩個指針來遍歷數據&#xff0c;從而減少時間復雜度&#xff0c;避免使用嵌套循環。雙指針算法在解決諸如查找、排序、去重…

【每日八股】計算機網絡篇(四):HTTP

目錄 HTTP 與 HTTPS 的區別&#xff1f;HTTPS 加密與認證的過程&#xff1f;ClientHelloServerHello客戶端回應服務端回應 HTTPS 一定安全可靠嗎&#xff1f;HTTPS 狀態碼的含義&#xff1f;HTTP 緩存有哪些實現方式&#xff1f;HTTP 1.0、HTTP 1.1、HTTP 2.0 和 HTTP 3.0 的區…

TMS320F28P550SJ9學習筆記10:軟件模擬I2C通信_驅動1.3寸OLED

現在有了具體的I2C通信器件&#xff0c;一塊1.3寸OLED屏幕&#xff0c;今日嘗試移植配置一下: 本文主要講的是&#xff0c;使用軟件模擬I2C通信 文章提供測試代碼講解、完整工程下載、測試效果圖 目錄 前置文章&#xff1a; I2C通信引腳&#xff1a; 軟件I2C 引腳的初始化&am…

spring boot 發送郵件驗證碼

一、前置需求 1、準備郵箱 2、登錄授權碼 qq郵箱在–>設置–>賬號POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務 開啟服務 二、發送郵件 1、簡單郵件 包含郵件標題、郵件正文 2、引入mail啟動器 <dependency><groupId>org.springframework.boot</groupI…

塔能科技:智能機箱,為城市安防 “智” 造堅實堡壘

在當今智慧城市建設的浪潮中&#xff0c;城市安防面臨著諸多挑戰。設備管理難&#xff0c;眾多分散的安防設備猶如一盤散沙&#xff0c;難以實現高效統一的管控&#xff1b;數據傳輸不穩定&#xff0c;關鍵時刻信息的延遲或丟失&#xff0c;可能導致嚴重后果。這些問題嚴重制約…

電商數據分析 電商平臺銷售數據分析 電商平臺數據庫設計 揭秘電商怎么做數據分析

《電商參謀數據分析平臺方案》&#xff08;28頁PPT&#xff09;是一套為電商行業量身定制的一體化解決方案&#xff0c;它通過全鏈路打通從數據獲取到分析的全過程&#xff0c;幫助電商企業實現精細化運營和市場機會的挖掘。該方案針對電商行業在數據獲取、加工整合及業務賦能方…

uniapp uview 1.0 跨域h5配置多個代理、如何請求接口

參考文章&#xff1a;uniapp uView1.0跨域h5配置多個代理 官方手冊&#xff1a;http 請求 項目中使用&#xff1a; 參考其他博主的文章是在manifest.json中配置代理&#xff0c;但在官方的手冊中是直接在script請求的&#xff0c;我嘗試請求了下沒問題&#xff0c;上線后也不…

MAVEN解決版本依賴沖突

文章目錄 一、依賴沖突概念1、什么是依賴沖突2、依賴沖突的原因3、如何解決依賴沖突 二、查看依賴沖突-maven-helper1、安裝2、helper使用1、conflicts的閱讀順序&#xff08;從下向上看&#xff09;2、dependencies as List的閱讀順序&#xff08;從下向上看&#xff09;3、de…