主頁 >  其他 > zookeeper概要、協議、應用場景

zookeeper概要、協議、應用場景

2021-10-18 13:59:04 其他

這里寫目錄標題

    • 1. zookeeper產生背景:
        • ZAB協議原理
          • 崩潰恢復:
          • 訊息廣播模式:
    • 2. zookeeper概要
      • 2.1設計模式來理解
      • 2.2 一句話
    • 3. 資料結構 - znode 節點
    • 4. 特點
    • 5. 應用場景
      • 5.1 統一命名服務(Name Service如Dubbo服務注冊中心)
      • 5.2 統一配置管理(Configuration Management如淘寶開源配置管理框架Diamond)
      • 5.3 統一集群管理
      • 5.4 服務器動態上下線
      • 5.5 軟負載均衡
      • 5.6 分布式訊息同步和協調機制
      • 5.7 總結

1. zookeeper產生背景:

? zookeeper是為了解決分布式系統一致性的問題產生的,其使用了ZAB協議(Zookeeper Atomic Broadcast zookeeper原理廣播協議)

專案從單體到分布式轉變之后,將會產生多個節點之間協同的問題,

  1. 每天的定時任務由誰哪個節點來執行?
  2. RPC呼叫時的服務發現?
  3. 如何保證并發請求的冪等

這些問題可以統一歸納為多節點協調問題,如果靠節點自身進行協調這是非常不可靠的,性能上也不可取,必須由一個獨立的服務做協調作業,它必須可靠,而且保證性能,

分布式系統中的行程通信有兩種選擇:直接通過?絡進?資訊交換, 或讀寫某些共享存盤,

ZooKeeper使?共享存盤模型來實作應?間的協作和 同步原語,對于共享存盤本?,又需要在行程和存盤間進??絡通信,我們強調?絡通信的重要性,因為它是分布式系統中并發設計的基礎,

ZAB協議原理

分布式系統一致性演算法應用于系統軟體實作集群保持每個節點資料的同步性,保持我們的集群中每個節點的資料的一致性問題,

常用分布式系統一致性演算法:raf協議、zab協議、paxos協議,

zookeeper使用主備模型架構來保持集群中各個節點的資料一致性,使用一個單節點(leader節點)來接受處理客戶端的事務請求,并通過zab協議將資料變更以事務proposal的形式廣播給其他子節點(follower)

zookeeper有兩種運行狀態:1. 崩潰恢復 2. 訊息廣播

崩潰恢復:

? 服務啟動或者宕機重啟會進行選舉出新的leader同時leader和過半節點完成資料狀態同步后會進行正常的訊息廣播模式,

1、選擇保證資料一致

  • ZAB協議需要確保事務leade處理成功,則在所有機器都應該被處理成功(這里處理成功是指提出事務和commit都完成)

  • ZAB協議需要確保丟棄只在leader節點提出的事務

    這兩種情況可以使用ZXID實作 只要選舉出來的具有最高的ZXID編號的,可以保證選舉出來的leader一定具有所有已經提交的提案,同時也省去了leader去提交和丟棄提案的步驟,

2、資料同步

選舉完成的leader會將自己提交的提案中沒有被其他follower節點同步的提案以訊息的形式發送到其對應的佇列中,follower消費訊息進行資料同步 并進行ack確認接收commit提交,類似于正常的訊息廣播

訊息廣播模式:

leader節點將客戶事務提交轉換成一個Proposal并分發給集群所有fllower節點,超過半數的節點提供給leader正確反饋,leader節點會再次向所有Follower服務器分發commit訊息將前一個proposal進行提交,類似于現代民主投票
在這里插入圖片描述

在這里插入圖片描述

資料(廣播協議)之間同步采用: 2pc兩階段提交協議 同時使用FIFO順序的TCP協議保證訊息發送和接受的順序性

2. zookeeper概要

ZooKeeper是用于分布式應用程式的協調服務,它公開了一組簡單的API,分布式應用程式可以基于這些API用于同步,節點狀態、配置等資訊、服務注冊等資訊,其由JAVA撰寫,支持JAVA 和C兩種語言的客戶端,ZooKeeper顧名思意:動物園管理員

在這里插入圖片描述

2.1設計模式來理解

ZK是一個基于觀察者模式設計的分布式服務管理框架

它負責存盤和管理大家都關心的資料(集群下資料會保持一致性)

然后接受觀察者的注冊(watch機制)

一旦這些資料的狀態發生變化,Zookeeper就將負責通知watch已經在Zookeeper上注冊的那些觀察者做出相應的反應,從而實作集群中類似Master/Slave管理模式

在這里插入圖片描述

在這里插入圖片描述

2.2 一句話

zookeeper=類似unix檔案系統+通知機制+Znode節點

作用:服務注冊+分布式系統的一致性通知協調

在這里插入圖片描述

在這里插入圖片描述

3. 資料結構 - znode 節點

zookeeper 中資料基本單元叫節點,節點之下可包含子節點,最后以樹級方式呈現,每個節點擁有唯一的路徑path,客戶端基于PATH上傳節點資料,zookeeper 收到后會實時通知對該路徑進行監聽的客戶端,

(ZooKeeper資料模型的結構與Unix檔案系統很類似,整體上可以看作是一棵樹,每個節點稱做一個ZNode,每一個ZNode默認能夠存盤1MB的資料,每個ZNode都可以通過其路徑唯一標識,)

在這里插入圖片描述

4. 特點

  1. Zookeeper:一個領導者(leader),多個跟隨者(follower)組成的集群,
  2. Leader負責進行投票的發起和決議,更新系統狀態(寫資料)
  3. Follower用于接收客戶請求并向客戶端回傳結果(讀資料),在選舉Leader程序中參與投票
  4. 集群中只要有半數以上節點存活,Zookeeper集群就能正常服務,
  5. 全域資料一致:每個server保存一份相同的資料副本,client無論連接到哪個server,資料都是一致的,
  6. 更新請求順序進行,來自同一個client的更新請求按其發送順序依次執行,
  7. 資料更新原子性,一次資料更新要么成功,要么失敗,
  8. 實時性,在一定時間范圍內,client能讀到最新資料,

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

5. 應用場景

提供的服務包括:統一命名服務dubbo注冊中心、統一配置管理(zk實作的配置中心)、統一集群管理、服務器節點動態上下線、軟負載均衡等,

5.1 統一命名服務(Name Service如Dubbo服務注冊中心)

**命名服務是將一個名稱映射到與該名稱有關聯的一些資訊的服務,**電話目錄是將人的名字映射到其電話號碼的一個名稱服務,同樣,DNS 服務也是一個名稱服務,它將一個域名映射到一個 IP 地址,在分布式系統中,您可能想跟蹤哪些服務器或服務在運行,并通過名稱查看其狀態,ZooKeeper 暴露了一個簡單的介面來完成此作業,也可以將名稱服務擴展到組成員服務,這樣就可以獲得與正在查找其名稱的物體有關聯的組的資訊,

Dubbo是一個分布式服務框架,致力于提供高性能和透明化的RPC遠程服務呼叫方案,是阿里巴巴SOA服務化治理方案的核心框架,每天為2,000+個服務提供3,000,000,000+次訪問量支持,并被廣泛應用于阿里巴巴集團的各成員站點,

在Dubbo實作中:服務提供者在啟動的時候,向ZK上的指定節點/dubbo/ s e r v i c e N a m e / p r o v i d e r s 目 錄 下 寫 入 自 己 的 U R L 地 址 , 這 個 操 作 就 完 成 了 服 務 的 發 布 , 服 務 消 費 者 啟 動 的 時 候 , 訂 閱 / d u b b o / {serviceName}/providers目錄下寫入自己的URL地址,這個操作就完成了服務的發布,服務消費者啟動的時候,訂閱/dubbo/ serviceName/providersURL/dubbo/{serviceName}/providers目錄下的提供者URL地址, 并向/dubbo/${serviceName} /consumers目錄下寫入自己的URL地址,

在分布式環境下,經常需要對應用/服務進行統一命名,便于識別不同服務,

  1. 類似于域名與ip之間對應關系,ip不容易記住,而域名容易記住,
  2. 通過名稱來獲取資源或服務的地址,提供者等資訊,

一句話總結:path就是命名服務,客戶端能夠根據指定節點的名字來獲取資源或者服務地址,然后進行下一步操作

在這里插入圖片描述

5.2 統一配置管理(Configuration Management如淘寶開源配置管理框架Diamond)

在大型的分布式系統中,為了服務海量的請求,同一個應用常常需要多個實體,如果存在配置更新的需求,常常需要逐臺更新,給運維增加了很大的負擔同時帶來一定的風險(配置會存在不一致的視窗期,或者個別節點忘記更新),zookeeper可以用來做集中的配置管理,存盤在zookeeper集群中的配置,如果發生變更會主動推送到連接配置中心的應用節點,實作一處更新處處更新的效果,

現在把這些配置全部放到zookeeper上去,保存在 Zookeeper 的某個目錄節點中,然后所有相關應用程式對這個目錄節點進行監聽,一旦配置資訊發生變化,每個應用程式就會收到 Zookeeper 的通知,然后從 Zookeeper 獲取新的配置資訊應用到系統中就好,

分布式環境下,組態檔管理和同步是一個常見問題,

  1. 一個集群中,所有節點的配置資訊是一致的,比如 Hadoop 集群,
  2. 對組態檔修改后,希望能夠快速同步到各個節點上,

配置管理可交由ZooKeeper實作,

  1. 可將配置資訊寫入ZooKeeper上的一個Znode,
  2. 各個節點監聽這個Znode,
  3. 一旦Znode中的資料被修改,ZooKeeper將通知各個節點,

在這里插入圖片描述

5.3 統一集群管理

分布式環境中,實時掌握每個節點的狀態是必要的,

  1. 可根據節點實時狀態做出一些調整,
  2. 可交由ZooKeeper實作,
    1. 可將節點資訊寫入ZooKeeper上的一個Znode,
    2. 監聽這個Znode可獲取它的實時狀態變化,
  3. 典型應用
    1. HBase中Master狀態監控與選舉,

在這里插入圖片描述

5.4 服務器動態上下線

利用zk臨時節點實作監聽服務器上下線,

在這里插入圖片描述

5.5 軟負載均衡

在這里插入圖片描述

5.6 分布式訊息同步和協調機制

5.7 總結

Zoopkeeper提供了一套很好的分布式集群管理的機制,就是它這種基于層次型的目錄樹的資料結構

并對樹中的節點進行有效管理,從而可以設計出多種多樣的分布式的資料管理模型,作為分布式系統的溝通調度橋梁

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/321141.html

標籤:其他

上一篇:集群拓撲配置說明

下一篇:yarn-site.xml組態檔詳解

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more