1. 程式人生 > >Zookeeper分散式系統協同器概念快速學習

Zookeeper分散式系統協同器概念快速學習

原文格式可以訪問:https://www.rockysky.tech

分散式系統的基本操作

  1. 主節點選舉:在絕大多數分散式系統中,都需要進行主節點選舉。主節點負責管理協調其它節點或者同步叢集中其它節點的資料。為了確保叢集中一直存在一個主節點,需要有主節點的選舉機制。但現有主節點無法訪問的時候,自動產生新的主節點接管叢集管理和協調的任務
  2. 宕機檢測:當叢集中有某個節點或者某部分節點脫離叢集或者不可訪問的時候,分散式系統的其他節點可以識別出來,並執行相應的步驟,去替換或者接管宕機節點的工作,使得整個叢集的功能不會受到影響。
  3. 叢集組管理:對於比較大規模的分散式系統,我們需要管理其不同的分組。比如說Kubernetes叢集就需要管理基本的服務單位POD。如何去管理和協調每個組的資源和任務分配也是分散式系統必須要處理的任務。
  4. 元資料管理(Metadata):在一個分散式系統中需要儲存一些元資料。比如每個節點正在執行的任務,任務的進度,各個節點的狀態。節點間需要共享的一些同步資料等等。

Zookeeper是什麼

Zookeeper是一個分散式系統協調器,其本身並不直接實現上述的任何一個分散式系統的基本操作。Zookeeper本身其實就是一個通過Raft共識機制協同的分散式鍵值對檔案儲存系統。Zookeeper的檔案以樹狀形式儲存,每個節點都可以儲存資料,每個節點叫做一個znode,如下圖所示:

和普通的檔案結構不同,Zookeeper沒有目錄的概念,每個節點都可以儲存資料。

永續性節點(Persistent)和易失性(Ephemeral)節點

Zookeeper的節點分為兩種主要的型別,即永續性節點和易失性節點,

  • 永續性節點(Persistent),這種節點的資料必須能夠一直儲存,即使寫入這些資料的客戶端連線丟失,或者客戶端宕機。這些節點和資料任然必須保留。舉個例子,比如說一個並行運算的叢集,給每個slave節點分配的運算任務必須要能夠記錄下來,即使叢集的master節點或者slave節點宕機,為了保證最後的運算能夠完整,也不能夠把這些任務刪除。
  • 易失性節點(Ephemeral)一旦客戶端本身連線中斷或者宕機,這些資料節點會被釋放。例如,一個叢集的Master節點掛了,那這個Master節點的鎖就必須要釋放出來,這個鎖的機制就可以用易失性節點來完成。

有條件的更新和Watch機制

Zookeeper支援一種watches機制。客戶端可以給znode設定watch機制,一旦這個znode被更新,就會觸發通知機制傳送訊息給客戶端,同時刪除這個watch。如果ZooKeeper伺服器本身掛掉了,那客戶端會直接收到本地通知。

ZooKeeper保證的是什麼

ZooKeeper的設計原則

Zookeeper本身被設計為一個非常簡單,高速和可靠的服務。從而為各類分散式系統提供高級別和負責的分散式系統基本操作。對於分散式系統的CAP分類中,ZooKeeper是一種CP系統,重點保證的是強一致性。包括以下的特點:

  • 順序一致性:客戶端對節點的更新一定會保證其最終更新先後順序的的一致性

  • 原子性:對znode的更新只會有成功,失敗兩種狀態,不會有中間結果

  • 單點一致性:客戶端對zookeeper叢集中任何一節點看到的znode結構和資料完全相同

  • 高可靠性:一旦對znode更新成功,其結果會一直保持,直到下一次變更

  • 時效性:在一定時間段,確保系統資料最新(up-to-date)

    不過需要注意的是Zookeeper不確保資料的可用性,必須要等到所有ZooKeeper叢集節點都同步成功,資料更新才會確認操作成功。這是才能夠讀取這個資料。時效性是值得能夠確保在一定的時間段內可以完成資料跟新和同步。

極為簡單的API設計

Zookeeper通過API提供服務,提供以下幾個API。

  • create : 在樹狀結構上建立znode
  • delete : 刪除znode
  • exists : 測試某個znode是否存在
  • get data : 讀取某個znode的資料
  • set data : 向Znode寫入資料
  • get children : 獲取子節點列表
  • sync : 等待所有zookeeper節點廣播和同步完成。

效能:

在大量讀和少量寫入的情況先,Zookeeper效能是比較高的。

可靠性:

官方資料顯示,Zookeeper選舉主節點的時間大概在200ms,當節點從新恢復後,整個系統性能可以迅速恢復。

相關推薦

Zookeeper分散式系統協同概念快速學習

原文格式可以訪問:https://www.rockysky.tech 分散式系統的基本操作 主節點選舉:在絕大多數分散式系統中,都需要進行主節點選舉。主節點負責管理協調其它節點或者同步叢集中其它節點的資料。為了確保叢集中一直存在一個主節點,需要有主節點的選舉機制。但現有主節點無法訪問的時候,自動產生新的主節

Zookeeper分散式過程協同技術 - 概念及基礎

Zookeeper分散式過程協同技術 - 概念及基礎 Zookeeper是什麼? Zookeeper是一種分散式過程協同技術,其所提供的客戶端API功能強大,其中包括: 保障強一致性。有序性和永續性。 實現通用的同步原語的能力。 在實際分散式系統中,併發往往導致不正確的行為。Zookeeper提供了一種簡單

ZooKeeper分散式過程協同技術詳解

英文版名稱:ZooKeeper: Distributed Process Coordination 第1章 簡介 當你決定使用ZooKeeper來設計應用時,最好將應用資料和協同資料獨立開。 比如:網路郵箱服務的使用者對自己郵箱中的內容感興趣,但是並不

分散式系統上下層概念抽象-(2)

前情回顧 在上一個部落格中已經討論了分散式系統的第一章節,主要涉及了分散式系統的基本概念,基本特性,設計目標,以及設計技巧。簡言之,由於分散式系統的兩個基本限制:資訊的有限速度傳播以及故障的獨立性,導致分散式系統在設計上為了達成可擴充套件性,高效能,高可用,低延

ZooKeeper 分散式過程協同技術詳解 —— 讀書筆記

一、Master.java package com.dayw.zk; import java.io.IOException; import java.util.Random; import org.apache.zookeeper.AsyncCallback.D

從多核CPU Cache一致性的應用到分散式系統一致性的概念遷移

概述       現代多核CPU的cache模型基本都跟下圖1所示一樣,L1 L2 cache是每個核獨佔的,只有L3是共享的,當多個cpu讀、寫同一個變數時,就需要在多個cpu的cache之間同步資料,跟分散式系統一樣,必然涉及到一致性的問題,只不過兩者之間共享內容的方式不一樣

Zookeeper分散式過程協同技術 - 部署及設定

Zookeeper分散式過程協同技術 -  部署及設定 Zookeeper支援單機模式、偽叢集模式、叢集模式三種部署方式。演示部署環境為CentOS、jdk版本為1.8、Zookeeper版本為3.4.9。 單機模式 單機模式適合入門學習使用,只需要一臺機器就可以輕鬆搭建Zookeeper服務用於學

Zookeeper分散式過程協同技術 - 群首選舉

Zookeeper分散式過程協同技術 - 群首選舉 群首概念 群首為叢集中伺服器選擇出來的一個伺服器,並被叢集認可。設定群首目的在與對客戶端所發起的狀態變更請求進行排序,包括:create、setData、delete操作。群首將每一個請求轉換為一個事務並將事務傳送給追隨者,確保叢集按照群首確定的順序接受並處

第1章 分散式系統概念ZooKeeper簡介

分散式系統概念與ZooKeeper簡介 1-1 zookeeper簡介 1-2 什麼是分散式系統 1-3 分散式系統的瓶頸以及zk的相關特性 1-1 zookeeper簡介 1-2 什麼是分散式系統

[分散式系統學習]閱讀筆記 Distributed systems for fun and profit 之一 基本概念

因為工作的原因,最近打算看一些分散式學習的資料。其中這個http://book.mixu.net/distsys/就是一篇非常適合分散式入門的介紹。 這個短小的材料有下面5個小的章節,圖文並茂,也沒有太難的概念,非常推薦。 基礎知識。主要是一些基本概念,例如可擴充套件性(scalability),可用

【GlusterFS學習之一】:GlusterFS分散式檔案系統的基本概念及搭建

最近因為工作的需要在接觸GlusterFS,在未來的一段時間之內應該都要與之打交道,剛剛接觸分散式檔案系統,對很多概念和機制都不是很清楚,通過一段時間的學習有一點淺顯的認識,那麼就把這段時間的瞭解到的

[大資料學習研究] 4. Zookeeper-分散式服務的協同管理神器

  本來這一節想寫Hadoop的分散式高可用環境的搭建,寫到一半,發現還是有必要先介紹一下ZooKeeper這個東西。 ZooKeeper理念介紹 ZooKeeper是為分散式應用來提供協同服務的,而且ZooKeeper本身也是分散式的,由分佈在至少三臺機器上,這幾臺機器形成一個Quorum,

啟動系統定時,每隔1分鐘/指定時間執行任務 學習筆記

啟動系統定時器每隔1分鐘/指定時間執行 import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class DemoTimer { //啟

ROS系統架構及概念 學習筆記(二)

理解ROS檔案系統級 指令學習: 標準cmake流程,一次僅能編譯一個包: $ camke packageToBuild/ $ make 編譯工作空間所有包: $ cd workspace $ catkin_make 為了建立  修改  或者使用功能包

java分散式系統部署學習(九)ansible-playbook進階

一、併發執行 ansible預設只會建立5個程序,所以一次任務只能同時控制5臺機器執行.那如果你有大量的機器需要控制,或者你希望減少程序數,那你可以採取非同步執行.ansible的模組可以把task放進後臺,然後輪詢它.這使得在一定程序數下能讓大量需要的機器同時運作起來. 使用asy

學習分散式系統,這些術語你瞭解嗎?

對於剛進入區塊鏈行業的小白同學來說,一切都顯得比較陌生,很多概念性質的東西理解起來也比較吃力,本文和大家分享的是區塊鏈分散式系統中常見的一些專業分類,一起來看看吧,希望對大家有所幫助。 1. Failure models 失效模型 機器故障:當機器(節點)出現故障時,共識協議就用於解決機器

分散式學習筆記三:分散式系統session一致性的問題

session的概念 什麼是session? 伺服器為每個使用者建立一個會話,儲存使用者的相關資訊,以便多次請求能夠定位到同一個上下文。這樣,當用戶在應用程式的 Web 頁之間跳轉時,儲存在 Session 物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。當用戶請求來自應用程式的

ZooKeeper應用——解決分散式系統單點故障

1.單點故障問題 什麼是分散式系統中的單點故障:通常分散式系統採用主從模式,就是一個主控機連線多個處理節點。主節點負責分發任務,從節點負責處理任務,當我們的主節點發生故障時,那麼整個系統就都癱瘓了,那麼我們把這種故障叫作單點故障。 傳統方式是採用一個備用節點,這個備用節點定期給當前主節點發送

關於分散式系統的一些學習心得-筆記

分散式系統(distributed system)是建立在網路之上的軟體系統。處理各項協助的任務,然後整合出結果 分散式系統是一個複雜且寬泛的研究領域,學習分散式系統通常要從兩個方面來入手 1. 近些年分散式系統領域都在做些什麼。2. 為什麼現在投入分散式系統的學習和研究是值得的。

分散式系統詳解--框架(Zookeeper-簡介和叢集搭建)

             分散式系統詳解--框架(Zookeeper-簡介和叢集搭建) 一、Zookeeper簡介 1.1 Zookeeper是什麼?