ZooKeeper的基本概念

集群角色

通常在分布式系統中,構成一個集群的每一臺機器都有自己的角色,最典型的集群模式就是Master/Slave模式(主備模式)。在這種模式中,我們把能夠處理所有寫操作的機器稱為Master機器,把所有通過異步復制方式獲取最新數據,并提供讀服務的機器稱為Slave機器。而在ZooKeeper中,這些概念被顛覆了。它沒有沿用傳統的Master/Slave概念,而是引入了Leader、 Follower 和Observer 三種角色。ZooKeeper 集群中的所有機器通過一個Leader選舉過程來選定一臺被稱為“Leader”的機器,Leader 服務器為客戶端提供讀和寫服務。除Leader外,其他機器包括Follower 和Observer。Follower 和Observer都能夠提供讀服務,唯一的區別在于,Observer機器不參與Leader選舉過程,也不參與寫操作的“過半寫成功”策略,因此Observer可以在不影響寫性能的情況下提升集群的讀性能。

會話?(Session)

Session是指客戶端會話,在講解會話之前,我們首先來了解一下客戶端連接。在ZooKeeper中,一個客戶端連接是指客戶端和服務器之間的一個TCP長連接。ZooKeeper對外的服務端口默認是2181,客戶端啟動的時候,首先會與服務器建立一個TCP連接,從第一次連接建立開始,客戶端會話的生命周期也開始了,通過這個連接,客戶端能夠通過心跳檢測與服務器保持有效的會話,也能夠向ZooKeeper服務器發送請求并接受響應,同時還能夠通過該連接接收來自服務器的Watch事件通知。Session的sessionTimeout值用來設置一個客戶端會話的超時時間。當由于服務器壓力太大、網絡故障或是客戶端主動斷開連接等各種原因導致客戶端連接斷開時,只要在sessionTimeout規定的時間內能夠重新連接上集群中任意一臺服務器,那么之前創建的會話仍然有效。

數據節點(Znode)

在談到分布式的時候,我們通常說的“節點”是指組成集群的每一臺機器。然而,在

ZooKeeper中,“節點”分為兩類,第一類同樣是指構成集群的機器,我們稱之為機器節

點;第二類則是指數據模型中的數據單元,我們稱之為數據節點一ZNode。 ZooKeeper

將所有數據存儲在內存中,數據模型是一棵樹(ZNode Tree), 由斜杠(/) 進行分割的

路徑,就是一個Znode,例如/foo/pathI。每個ZNode.上都會保存自己的數據內容,同時

還會保存一系列屬性信息。

在ZooKeeper中,ZNode可以分為持久節點和臨時節點兩類。所謂持久節點是指一旦這個ZNode被創建了,除非主動進行ZNode的移除操作,否則這個ZNode將一直保存在ZooKeeper上。而臨時節點就不一樣了,它的生命周期和客戶端會話綁定,一旦客戶端會話失效,那么這個客戶端創建的所有臨時節點都會被移除。另外,ZooKeeper還允許用戶為每個節點添加一個特殊的屬性:SEQUENTIAL。一旦節點被標記上這個屬性,那么在這個節點被創建的時候,ZooKeeper會自動在其節點名后面追加上一個整型數字,這個整型數字是一個由父節點維護的自增數字。

版本

在前面我們已經提到,ZooKeeper 的每個ZNode上都會存儲數據,對應于每個ZNode,ZooKeeper都會為其維護一個叫作Stat的數據結構,Stat中記錄了這個ZNode的三個數據版本,分別是version(當前ZNode的版本)、cversion (當前ZNode子節點的版本)和aversion(當前ZNode的ACL版本)。

Watcher

Watcher (事件監聽器),是ZooKeeper中的一個很重要的特性。ZooKeeper 允許用戶在指定節點上注冊一些Watcher,并且在一些特定事件觸發的時候,ZooKeeper服務端會將事件通知到感興趣的客戶端上去,該機制是ZooKeeper實現分布式協調服務的重要特性。

ACL

ZooKeeper采用ACL (Access Control Lists) 策略來進行權限控制,類似于UNIX文件系統的權限控制。ZooKeeper 定義了如下5種權限。

CREATE:創建子節點的權限。

READ:獲取節點數據和子節點列表的權限。

WRITE:更新節點數據的權限。

DELETE:刪除子節點的權限。

ADMIN:設置節點ACL的權限。

其中尤其需要注意的是,CREATE和DELETE這兩種權限都是針對子節點的權限控制。

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

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

相關文章

Redis_億級訪問量數據處理

11. 億級訪問量數據處理 11.1 場景表述 手機APP用戶登錄信息,一天用戶登錄ID或設備ID電商或者美團平臺,一個商品對應的評論文章對應的評論APP上有打卡信息網站上訪問量統計統計新增用戶第二天還留存商品評論的排序月活統計統計獨立訪客(Unique Vistito…

【BEV】3D視覺 PRELIMINARY

這里的知識來自于論文 Delving into the Devils of Bird’s-eye-view Perception: A Review, Evaluation and Recipe 的 Appendix B.1 部分來自 這篇文章 從透視圖轉向鳥瞰圖。(Xw、Yw、Zw)、(Xc、Yc、Zc)表示世界World坐標和相…

Android學習之路(4) UI控件之Button (按鈕)與 ImageButton (圖像按鈕)

本節引言: 今天給大家介紹的Android基本控件中的兩個按鈕控件,Button普通按鈕和ImageButton圖像按鈕; 其實ImageButton和Button的用法基本類似,至于與圖片相關的則和后面ImageView相同,所以本節 只對Button進行講解&am…

vue自定義穿梭框支持遠程滾動加載

分享-2023年資深前端進階:前端登頂之巔-最全面的前端知識點梳理總結,前端之巔 *分享一個使用比較久的🪜 技術框架公司的選型(老項目):vue2 iview-ui 方案的實現思路是共性的,展現UI樣式需要你們自定義進行更改&#…

【注解使用】使用@Autowired后提示:Field injection is not recommended(Spring團隊不推薦使用Field注入)

問題發生場景: 在使用 IDEA 開發 SpringBoot 項目時,在 Controller 類中使用注解 Autowired 注入一個依賴出現了警告提示,查看其他使用該注解的地方同樣出現了警告提示。這是怎么回事?由于先去使用了SpringBoot并沒有對Spring進行…

分布式 - 消息隊列Kafka:Kafka消費者和消費者組

文章目錄 1. Kafka 消費者是什么?2. Kafka 消費者組的概念?3. Kafka 消費者和消費者組有什么關系?4. Kafka 多個消費者如何同時消費一個分區? 1. Kafka 消費者是什么? 消費者負責訂閱Kafka中的主題,并且從…

【數據結構OJ題】反轉鏈表

原題鏈接:https://leetcode.cn/problems/reverse-linked-list/description/ 目錄 1. 題目描述 2. 思路分析 3. 代碼實現 1. 題目描述 2. 思路分析 方法一:三指針翻轉法 使用三個結構體指針n1,n2,n3,原地修改結點…

VSCode如何設置高亮

一、概述 本文主要介紹在 VSCode 看代碼時,怎樣使某個單詞高亮顯示,主要通過以下三步實現: 安裝 highlight-words 插件 配置 highlight-words 插件 設置高亮快捷鍵F8 工作是嵌入式開發的,代碼主要是C/C的,之前一直用…

【Linux】高級IO

目錄 IO的基本概念 釣魚五人組 五種IO模型 高級IO重要概念 同步通信 VS 異步通信 阻塞 VS 非阻塞 其他高級IO 阻塞IO 非阻塞IO IO的基本概念 什么是IO? I/O(input/output)也就是輸入和輸出,在著名的馮諾依曼體系結構當中…

ROS學習筆記(三)---好用的終端Terminator

ROS學習筆記文章目錄 01. ROS學習筆記(一)—Linux安裝VScode 02. ROS學習筆記(二)—使用 VScode 開發 ROS 的Python程序(簡例) 一、Terminator是什么? 在前面的學習中,為了運行hello.py我是在vscode頻繁的點擊運行窗口的“”號…

智谷星圖趙俊:讓人才和區塊鏈產業“雙向奔赴”丨對話MVP

區塊鏈產業需要什么樣的人才?趙俊很有發言權。 趙俊是北京智谷星圖科技有限公司的技術總監,也是FISCO BCOS官方認證講師。他2017年接觸區塊鏈,隨后選擇人才培育領域深耕。“為區塊鏈行業引進更多人才這件事很有價值,跟我的職業理…

菜單和內容滾動的聯動原理及代碼

之前寫代碼有個需求:左側是一個菜單,右邊是內容,點擊左側菜單右邊內容滾動到對應位置,右邊內容滾動到某位置時,左側菜單也會選中對應的菜單項。UI如下:這是大多網站的移動端都會有的需求。 解決方案一&…

高憶管理:什么是一碼通?有什么好處?

在經過券商開戶后,除了其間的財物賬戶、滬深股賬戶外,還有一個一碼通賬戶,什么是一碼通?它有什么好處?關于這些,高憶管理為大家預備了以下參閱內容。 什么是一碼通? 一碼通賬戶,一般…

CSDN編程題-每日一練(2023-08-15)

CSDN編程題-每日一練(2023-08-15) 一、題目名稱:新型美麗數列二、題目名稱:會議安排三、題目名稱:小豚鼠搬家一、題目名稱:新型美麗數列 時間限制:1000ms內存限制:256M 題目描述: 定義美麗數列A: 1. 數列中相鄰的數越是靠內相對大小加一,a[2]=a[1]+1,a[n-2]=a[n-1]+1…

【C語言】小游戲-掃雷(清屏+遞歸展開+標記)

大家好&#xff0c;我是深魚~ 目錄 一、游戲介紹 二、文件分裝 三、代碼實現步驟 1.制作簡易游戲菜單 2. 初始化棋盤(11*11) 3.打印棋盤(9*9) 4.布置雷 5.計算(x,y)周圍8個坐標的和 6.排查雷 <1>清屏后打印棋盤 <2>遞歸展開 <3>標記雷 四、完整代…

視頻監控有哪些存儲方式?安防監控應該如何選擇存儲模式?

視頻監控系統涉及到大量的視頻數據&#xff0c;需要對這些數據進行存儲&#xff0c;以備日后查看或備份。視頻監控的存儲需求需要根據場所的實際情況進行選擇&#xff0c;以保證監控數據的有效存儲和日后的調閱、回溯。 當前視頻監控的存儲方式&#xff0c;通常有以下幾種&…

Golang協程,通道詳解

進程、線程以及并行、并發 關于進程和線程 進程&#xff08;Process&#xff09;就是程序在操作系統中的一次執行過程&#xff0c;是系統進行資源分配和調度的基 本單位&#xff0c;進程是一個動態概念&#xff0c;是程序在執行過程中分配和管理資源的基本單位&#xff0c;每…

【BASH】回顧與知識點梳理(二十三)

【BASH】回顧與知識點梳理 二十三 二十三. Linux 賬號管理&#xff08;二&#xff09;23.1 賬號管理新增與移除使用者&#xff1a; useradd, 相關配置文件, passwd, usermod, userdelusermoduserdel 23.2 用戶功能&#xff08;普通用戶可使用&#xff09;idfingerchfnchsh 23.3…

【數據庫系統】--【2】DBMS架構

DBMS架構 01DBMS架構概述02 DBMS的物理架構03 DBMS的運行和數據架構DBMS的運行架構DBMS的數據架構PostgreSQL的體系結構RMDB的運行架構 04DBMS的邏輯和開發架構DBMS的層次結構DBMS的開發架構DBMS的代碼架構 05小結 01DBMS架構概述 02 DBMS的物理架構 數據庫系統的體系結構 數據…

騰訊Perfdog支持Windows PC端體驗性能測試

一、背景 最近在做抖音的小玩法&#xff0c;其基于unity引擎&#xff0c;然后掛載到直播伴侶。以及Perfdog近期也支持了Windows的測試&#xff0c;所以做一個體驗測試。 二、如何做 查看PC端的支持&#xff0c;目前是beat版本 選擇或搜索自己需要的對應的程序&#xff0c;如…