日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

分布式系统的可靠协调系统——Zookeeper

發(fā)布時間:2024/9/3 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式系统的可靠协调系统——Zookeeper 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、zookeeper簡介
    • 1.1 zookeeper的概述
    • 1.2 Zookeeper的定義
    • 1.3 Zookeeper的工作機(jī)制
    • 1.4 Zookeeper 的特點(diǎn)
    • 1.5 zookeeper 的數(shù)據(jù)結(jié)構(gòu)
  • 二、Zookeeper的應(yīng)用場景
    • 2.1 統(tǒng)一命名服務(wù)
    • 2.2 統(tǒng)一配置管理
    • 2.3 統(tǒng)一集群管理
    • 2.4 服務(wù)器動態(tài)上下線
    • 2.5 軟負(fù)載均衡
  • 三、Zookeeper的選舉機(jī)制
    • 3.1 第一次啟動選舉機(jī)制
    • 3.2 非第一次啟動選舉機(jī)制
  • 四、部署Zookeeper集群
    • 4.1 部署Zookeeper集群的具體實(shí)驗(yàn)步驟(實(shí)操)
      • 1.安裝前準(zhǔn)備
      • 2.安裝Zookeeper\
      • 3.修改配置文件
        • ① 復(fù)制配置文件
        • ② 修改配置,添加集群信息
      • 4.在每個節(jié)點(diǎn)上創(chuàng)建數(shù)據(jù)目錄和日志目錄
      • 5.在每個節(jié)點(diǎn)的dataDir指定的目錄下創(chuàng)建一個myid的文件
      • 6.配置Zookeeper啟動腳本
      • 7.設(shè)置開機(jī)自啟
      • 8.分別啟動 Zookeeper并查看狀態(tài)

一、zookeeper簡介

1.1 zookeeper的概述

ZooKeeper是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個開源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。

ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。

ZooKeeper包含一個簡單的原語集,提供Java和C的接口。

ZooKeeper代碼版本中,提供了分布式獨(dú)享鎖、選舉、隊列的接口,代碼在$zookeeper_home\src\recipes。其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本。

1.2 Zookeeper的定義

Zookeeper是一~個開源的分布式的,為分布式框架提供協(xié)調(diào)服務(wù)的Apache項目。

1.3 Zookeeper的工作機(jī)制

Zookeeper從設(shè)計模式角度來理解:是一個基于觀察者模式設(shè)計的分布式服務(wù)管理框架,它負(fù)責(zé)存儲和管理大家都關(guān)心的數(shù)據(jù),然后接受觀察者的注冊,一旦這些數(shù)據(jù)的狀態(tài)發(fā)生變化,Zookeeper就將負(fù)責(zé)通知已經(jīng)在Zookeeper上注冊的那些觀察者做出相應(yīng)的反應(yīng)。

就是說Zookeeper =文件系統(tǒng)+通知機(jī)制。

1.4 Zookeeper 的特點(diǎn)

(1) Zookeeper:一個領(lǐng)導(dǎo)者(Leader) ,多個跟隨者(Follower) 組成的集群。
(2) Zookeepe集群中只要有半數(shù)以上節(jié)點(diǎn)存活,Zookeeper集群就能正常服務(wù)。所以Zookeeper適合安裝奇數(shù)臺服務(wù)器。
(3)全局?jǐn)?shù)據(jù)一致:每個Server保存一份相同的數(shù)據(jù)副本,Client無論連接到哪個Server, 數(shù)據(jù)都是一致的。
(4)更新請求順序執(zhí)行,來自同一個Client的更新請求按其發(fā)送順序依次執(zhí)行,即先進(jìn)先出。.
(5)數(shù)據(jù)更新原子性,一次數(shù)據(jù)更新要么成功,要么失敗。
(6)實(shí)時性,在一定時間范圍內(nèi),Client能讀到最新數(shù)據(jù)。

1.5 zookeeper 的數(shù)據(jù)結(jié)構(gòu)

ZooKeeper數(shù)據(jù)模型的結(jié)構(gòu)與Linux文件系統(tǒng)很類似,整體上可以看作是一棵樹,每個節(jié)點(diǎn)稱做–個ZNode。
每一個ZNode默認(rèn)能夠存儲1MB的數(shù)據(jù),每個ZNode都可以通過其路徑唯一標(biāo)識。

二、Zookeeper的應(yīng)用場景

提供的服務(wù)包括:統(tǒng)一命名服務(wù)、 統(tǒng)一配置管理、統(tǒng)一集群管理、服務(wù)器節(jié)點(diǎn)動態(tài)上下線、軟負(fù)載均衡等。

2.1 統(tǒng)一命名服務(wù)

在分布式環(huán)境下,經(jīng)常需要對應(yīng)用/服務(wù)進(jìn)行統(tǒng)一命名, 便于識別。例如: IP不容 易記住,而域名容易記住。

2.2 統(tǒng)一配置管理

分布式環(huán)境下,配置文件同步非常常見。一般要求一個集群中,所有節(jié)點(diǎn)的配置信息是一致的,比如Kafka集群。對配置文
件修改后,希望能夠快速同步到各個節(jié)點(diǎn)上。
配置管理可交由ZooKeeper實(shí)現(xiàn)。可將配置信息寫入ZooKeeper.上的一-個Znode。各個客戶端服務(wù)器監(jiān)聽這個Znode。一旦
Znode中的數(shù)據(jù)被修改,ZooKeeper將 通知各個客戶端服務(wù)器。

2.3 統(tǒng)一集群管理

分布式環(huán)境中,實(shí)時掌握每個節(jié)點(diǎn)的狀態(tài)是必要的。可根據(jù)節(jié)點(diǎn)實(shí)時狀態(tài)做出一-些調(diào)整。
ZooKeeper可以實(shí)現(xiàn)實(shí)時監(jiān)控節(jié)點(diǎn)狀態(tài)變化。可將節(jié)點(diǎn)信息寫入ZooKeeper.上的一-個ZNode。監(jiān)聽這個ZNode可獲取它的實(shí)時狀態(tài)變化。

2.4 服務(wù)器動態(tài)上下線

客戶端能實(shí)時洞察到服務(wù)器上下線的變化。

2.5 軟負(fù)載均衡

在Zookeeper中記錄每臺服務(wù)器的訪問數(shù),讓訪問數(shù)最少的服務(wù)器去處理最新的客戶端請求。

三、Zookeeper的選舉機(jī)制

3.1 第一次啟動選舉機(jī)制

服務(wù)器1啟動,發(fā)起一次選舉。服務(wù)器1投自己一票。此時服務(wù)器1票數(shù)一票, 不夠半數(shù)以上(3票),選舉無法完成,服務(wù)器1狀態(tài)保持為LO0KING;
服務(wù)器2啟動,再發(fā)起一次選舉。服務(wù)器1和2分別投自己一票并交換選票信息:此時服務(wù)器1發(fā)現(xiàn)服務(wù)器2的myid比自己目前
投票推舉的( 服務(wù)器1)大,更改選票為推舉服務(wù)器2。此時服務(wù)器1票數(shù)0票,服務(wù)器2票數(shù)2票,沒有半數(shù)以上結(jié)果,選舉無法完成,服務(wù)器1,2狀態(tài)保持LOOKING
服務(wù)器3啟動,發(fā)起一次選舉。此時服務(wù)器1和2都會更改選票為服務(wù)器3。此次投票結(jié)果:服務(wù)器1為0票,服務(wù)器2為0票,服
務(wù)器3為3票。此時服務(wù)器3的票數(shù)已經(jīng)超過半數(shù),服務(wù)器3當(dāng)選Leader。服務(wù)器1,2更改狀態(tài)為FOLLOWING,服務(wù)器3更改狀態(tài)為LEADING;
服務(wù)器4啟動,發(fā)起一次選舉。此時服務(wù)器1,2,3已經(jīng)不是L00KING狀態(tài),不會更改選票信息。交換選票信息結(jié)果:服務(wù)器3為3票,服務(wù)器4為1票。此時服務(wù)器4服從多數(shù),更改選票信息為服務(wù)器3,并更改狀態(tài)為FOLLOWING;
服務(wù)器5啟動,同4服從多數(shù),更改選票信息為服務(wù)器3,并更改狀態(tài)為FOLLOWING;

3.2 非第一次啟動選舉機(jī)制

1)當(dāng)ZooKeeper集群中的一臺 服務(wù)器出現(xiàn)以下兩種情況之一時, 就會開始進(jìn)入Leader選舉:

服務(wù)器初始化啟動。
服務(wù)器運(yùn)行期間無法和Leader保持連接。

2)而當(dāng)一臺機(jī)器進(jìn)入Leader選舉流程時,當(dāng)前集群也可能會處于以下兩種狀態(tài):

集群中本來就已經(jīng)存在一個Leader。
對于已經(jīng)存在Leader的情況,機(jī)器試圖去選舉Leader時,會被告知當(dāng)前服務(wù)器的Leader信息,對于該機(jī)器來說,僅僅需要和Leader機(jī)器建立連接,并進(jìn)行狀態(tài)同步即可。

集群中確實(shí)不存在Leader
假設(shè)ZooKeeper由5臺服務(wù)器組成,SID分別為1、2、3、4、5,ZXID分別為8、8、8、7、7,并且此時SID為3的服務(wù)器是Leader。某一時刻,3和5服務(wù)器出現(xiàn)故障,因此開始進(jìn)行Leader選舉。

選舉Leader規(guī)則:

EPOCH大的直接勝出。
EPOCH相同,事務(wù)id大的勝出。
事務(wù)id相同,服務(wù)器id大的勝出。

SID: 服務(wù)器ID。用來唯一 標(biāo)識一臺ZooKeeper集群中的機(jī)器,每臺機(jī)器不能重復(fù),和myid一致。
ZXID:事務(wù)ID。ZXID是-一個事務(wù)ID,用來標(biāo)識一次服務(wù)器狀態(tài)的變更。在某-一時刻,集群中的每臺機(jī)器的ZXID值不一定完全一致,這和ZooKeeper服務(wù)器對于客戶端“更新請求”的處理邏輯速度有關(guān)。
Epoch:每個Leader任期的代號。沒有Leader時同一輪投票過程中的邏輯時鐘值是相同的。每投完一次票這個數(shù)據(jù)就會增加

四、部署Zookeeper集群

4.1 部署Zookeeper集群的具體實(shí)驗(yàn)步驟(實(shí)操)

1.安裝前準(zhǔn)備

查看版本

2.安裝Zookeeper\

3.修改配置文件

① 復(fù)制配置文件

② 修改配置,添加集群信息

4.在每個節(jié)點(diǎn)上創(chuàng)建數(shù)據(jù)目錄和日志目錄

5.在每個節(jié)點(diǎn)的dataDir指定的目錄下創(chuàng)建一個myid的文件

6.配置Zookeeper啟動腳本

7.設(shè)置開機(jī)自啟

8.分別啟動 Zookeeper并查看狀態(tài)

總結(jié)

以上是生活随笔為你收集整理的分布式系统的可靠协调系统——Zookeeper的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。