五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ZooKeeper 有哪些應用場景

2023-06-15 09:02 作者:IT楓斗者-跳蚤網(wǎng)  | 我要投稿

hello大家好,上期我們介紹了ZooKeerper一些面試題,今天重點介紹下ZooKeeper的一些應用場景。

ZooKeeper?有哪些應用場景呢?

一、數(shù)據(jù)發(fā)布與訂閱

發(fā)布與訂閱即所謂的配置管理,顧名思義就是將數(shù)據(jù)發(fā)布到ZooKeeper節(jié)點上,供訂閱者動態(tài)獲取數(shù)據(jù),實現(xiàn)配置信息的集中式管理和動態(tài)更新。

例如全局的配置信息,地址列表等就非常適合使用。數(shù)據(jù)發(fā)布/訂閱的一個常見的場景是配置中心,發(fā)布者把數(shù)據(jù)發(fā)布到 ZooKeeper 的一個或一系列的節(jié)點上,供訂閱者進行數(shù)據(jù)訂閱,達到動態(tài)獲取數(shù)據(jù)的目的。

配置信息一般有幾個特點:

  • 數(shù)據(jù)量小的KV

  • 數(shù)據(jù)內(nèi)容在運行時會發(fā)生動態(tài)變化

  • 集群機器共享,配置一致

ZooKeeper 采用的是推拉結(jié)合的方式。

推:?服務端會推給注冊了監(jiān)控節(jié)點的客戶端?Wathcer?事件通知

拉:?客戶端獲得通知后,然后主動到服務端拉取最新的數(shù)據(jù)

二、命名服務

作為分布式命名服務,命名服務是指通過指定的名字來獲取資源或者服務的地址,利用ZooKeeper創(chuàng)建一個全局的路徑,這個路徑就可以作為一個名字,指向集群中的集群,提供的服務的地址,或者一個遠程的對象等等。

統(tǒng)一命名服務的命名結(jié)構(gòu)圖如下所示:

1、在分布式環(huán)境下,經(jīng)常需要對應用/服務進行統(tǒng)一命名,便于識別不同服務。

  • 類似于域名與IP之間對應關(guān)系,IP不容易記住,而域名容易記住。

  • 通過名稱來獲取資源或服務的地址,提供者等信息。

2、按照層次結(jié)構(gòu)組織服務/應用名稱。

  • 可將服務名稱以及地址信息寫到ZooKeeper上,客戶端通過ZooKeeper獲取可用服務列表類。

三、配置管理

程序分布式的部署在不同的機器上,將程序的配置信息放在ZooKeeper的znode下,當有配置發(fā)生改變時,也就是znode發(fā)生變化時,可以通過改變zk中某個目錄節(jié)點的內(nèi)容,利用watch通知給各個客戶端 從而更改配置。

ZooKeeper配置管理結(jié)構(gòu)圖如下所示:

1、分布式環(huán)境下,配置文件管理和同步是一個常見問題。

  • 一個集群中,所有節(jié)點的配置信息是一致的,比如 Hadoop 集群。

  • 對配置文件修改后,希望能夠快速同步到各個節(jié)點上。

2、配置管理可交由ZooKeeper實現(xiàn)。

  • 可將配置信息寫入ZooKeeper上的一個Znode。

  • 各個節(jié)點監(jiān)聽這個Znode。

  • 一旦Znode中的數(shù)據(jù)被修改,ZooKeeper將通知各個節(jié)點。

四、集群管理

所謂集群管理就是:是否有機器退出和加入、選舉master。集群管理主要指集群監(jiān)控和集群控制兩個方面。前者側(cè)重于集群運行時的狀態(tài)的收集,后者則是對集群進行操作與控制。

開發(fā)和運維中,面對集群,經(jīng)常有如下需求:

  • 希望知道集群中究竟有多少機器在工作

  • 對集群中的每臺機器的運行時狀態(tài)進行數(shù)據(jù)收集

  • 對集群中機器進行上下線的操作

集群管理結(jié)構(gòu)圖如下所示:

1、分布式環(huán)境中,實時掌握每個節(jié)點的狀態(tài)是必要的,可根據(jù)節(jié)點實時狀態(tài)做出一些調(diào)整。

2、可交由ZooKeeper實現(xiàn)。

  • 可將節(jié)點信息寫入ZooKeeper上的一個Znode。

  • 監(jiān)聽這個Znode可獲取它的實時狀態(tài)變化。

3、典型應用

  • Hbase中Master狀態(tài)監(jiān)控與選舉。

利用ZooKeeper的強一致性,能夠保證在分布式高并發(fā)情況下節(jié)點創(chuàng)建的全局唯一性,即:同時有多個客戶端請求創(chuàng)建?/currentMaster?節(jié)點,最終一定只有一個客戶端請求能夠創(chuàng)建成功。

五、分布式通知與協(xié)調(diào)

  • 分布式環(huán)境中,經(jīng)常存在一個服務需要知道它所管理的子服務的狀態(tài)。

    a)NameNode需知道各個Datanode的狀態(tài)。

    b)JobTracker需知道各個TaskTracker的狀態(tài)。

  • 心跳檢測機制可通過ZooKeeper來實現(xiàn)。

  • 信息推送可由ZooKeeper來實現(xiàn),ZooKeeper相當于一個發(fā)布/訂閱系統(tǒng)。

六、分布式鎖

處于不同節(jié)點上不同的服務,它們可能需要順序地訪問一些資源,這里需要一把分布式的鎖。

分布式鎖具有以下特性:寫鎖、讀鎖、時序鎖。

寫鎖:在zk上創(chuàng)建的一個臨時的無編號的節(jié)點。由于是無序編號,在創(chuàng)建時不會自動編號,導致只能客戶端有一個客戶端得到鎖,然后進行寫入。

讀鎖:在zk上創(chuàng)建一個臨時的有編號的節(jié)點,這樣即使下次有客戶端加入是同時創(chuàng)建相同的節(jié)點時,他也會自動編號,也可以獲得鎖對象,然后對其進行讀取。

時序鎖:在zk上創(chuàng)建的一個臨時的有編號的節(jié)點根據(jù)編號的大小控制鎖。

七、分布式隊列

分布式隊列分為兩種:

1、當一個隊列的成員都聚齊時,這個隊列才可用,否則一直等待所有成員到達,這種是同步隊列。

a)一個job由多個task組成,只有所有任務完成后,job才運行完成。

b)可為job創(chuàng)建一個/job目錄,然后在該目錄下,為每個完成的task創(chuàng)建一個臨時的Znode,一旦臨時節(jié)點數(shù)目達到task總數(shù),則表明job運行完成。

2、隊列按照FIFO方式進行入隊和出隊操作,例如實現(xiàn)生產(chǎn)者和消費者模型。

ZooKeeper 有哪些應用場景的評論 (共 條)

分享到微博請遵守國家法律
宿州市| 泰来县| 故城县| 油尖旺区| 裕民县| 台南县| 漳平市| 花莲县| 南丰县| 梁山县| 柳河县| 阿克苏市| 和顺县| 汝阳县| 潜江市| 进贤县| 新宁县| 台州市| 惠来县| 盐城市| 固镇县| 吉水县| 永泰县| 定远县| 龙山县| 黄骅市| 合山市| 河津市| 衡阳市| 石林| 阳谷县| 陇西县| 桓台县| 鞍山市| 绵阳市| 肥乡县| 望江县| 哈巴河县| 祁门县| 长宁区| 开远市|