91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

zookeeper分布式協調服務怎么應用

發布時間:2021-12-21 13:35:53 來源:億速云 閱讀:125 作者:iii 欄目:開發技術

這篇文章主要介紹“zookeeper分布式協調服務怎么應用”,在日常操作中,相信很多人在zookeeper分布式協調服務怎么應用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”zookeeper分布式協調服務怎么應用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

分布式服務協調員zookeeper - 應用場景和監控

zookeeper在分布式系統中作為協調員的角色,可應用于Leader選舉、分布式鎖、配置管理等服務的實現。以下我們從zookeeper供的API、應用場景和監控三方面學習和了解zookeeper(以下簡稱ZK)。

ZK API

ZK以Unix文件系統樹結構的形式管理存儲的數據,圖示如下:

zookeeper分布式協調服務怎么應用

其中每個樹節點被稱為znode,每個znode類似一個文件,包含文件元信息(meta data)和數據。

以下我們用server表示ZK服務的提供方,client表示ZK服務的使用方,當client連接ZK時,相應創建session會話信息。

有兩種類型的znode:

Regular: 該類型znode只能由client端顯式創建或刪除

Ephemeral: client端可創建或刪除該類型znode;當session終止時,ZK亦會刪除該類型znode

znode創建時還可以被打上sequential標志,被打上該標志的znode,將自行加上自增的數字后綴

ZK提供了以下API,供client操作znode和znode中存儲的數據:

  • create(path, data, flags):創建路徑為path的znode,在其中存儲data[]數據,flags可設置為Regular或Ephemeral,并可選打上sequential標志。

  • delete(path, version):刪除相應path/version的znode

  • exists(path,watch):如果存在path對應znode,則返回true;否則返回false,watch標志可設置監聽事件

  • getData(path, watch):返回對應znode的數據和元信息(如version等)

  • setData(path, data, version):將data[]數據寫入對應path/version的znode

  • getChildren(path, watch):返回指定znode的子節點集合

ZK應用場景

基于以上ZK提供的znode和znode數據的操作,可輕松實現Leader選舉、分布式鎖、配置管理等服務。

Leader選舉

利用打上sequential標志的Ephemeral,我們可以實現Leader選舉。假設需要從三個client中選取Leader,實現過程如下:

1、各自創建Ephemeral類型的znode,并打上sequential標志:

[zk: localhost:2181(CONNECTED) 4] ls /master
[lock-0000000241, lock-0000000243, lock-0000000242]

2、檢查 /master 路徑下的所有znode,如果自己創建的znode序號最小,則認為自己是Leader;否則記錄序號比自己次小的znode

3、非Leader在次小序號znode上設置監聽事件,并重復執行以上步驟2

假如以上 /master/lock-0000000241節點被刪除(相應client服務異常或網絡異常等原因),那么 /master/lock-0000000242相應的znode將提升自己為Leader。client只關心自己創建的znode和序號次小的znode,這避免了驚群效應(Herd Effect)。

分布式鎖的實現與以上Leader選舉的實現相同,稍作修改,我們還可以基于ZK實現lease機制(有期限的授權服務)。

配置管理

znode可以存儲數據,基于這一點,我們可以用ZK實現分布式系統的配置管理,假設有服務A,A擴容設備時需要將相應新增的ip/port同步到全網服務器的A.conf配置,實現過程如下:

1、A擴容時,相應在ZK上新增znode,該znode數據形式如下:

[zk: localhost:2181(CONNECTED) 30] get /A/blk-0000340369 {"svr_info": [{"ip": "1.1.1.1.", "port": "11000"}]}
cZxid = 0x2ffdeda3be ……

2、全網機器監聽 /A,當該znode下有新節點加入時,調用相應處理函數,將服務A的新增ip/port加入A.conf

3、完成步驟2后,繼續設置對 /A監聽

服務縮容的步驟類似,機器下線時將ZK相應節點刪除,全網機器監聽到該事件后將配置中的設備剔除。

ZK監控

ZK自身提供了一些“四字命令”,通過這些四字命令,我們可以獲得ZK集群中,某臺ZK的角色、znode數、健康狀態等信息:

# echo "mntr" | /usr/bin/netcat 127.0.0.1 2181 zk_version 3.4.3-1240972, built on 02/06/2012 10:48 GMT
zk_packets_received 267044485 zk_packets_sent 267069992 zk_outstanding_requests 0 zk_server_state follower
zk_znode_count 16216

常用的四字命令有:

  • mntr:顯示自身角色、znode數、平均調用耗時、收包發包數等信息

  • ruok:診斷自身狀態是否ok

  • cons:展示當前的client連接

像不能問一個醉酒的人是否喝醉一樣,我們也不能確信一臺回復”imok”的ZK就是真的ok,我們可以通過ZK自帶的zkCli.sh模擬client創建/刪除znode:

/usr/local/zookeeper/bin/zkCli.sh create /zookeeper/test 'test' >/dev/null 2>&1
/usr/local/zookeeper/bin/zkCli.sh delete /zookeeper/test >/dev/null 2>&1

再根據返回值判斷添加、刪除znode是否成功,從而判斷該臺ZK狀態是否正常。

到此,關于“zookeeper分布式協調服務怎么應用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武汉市| 彩票| 南京市| 长垣县| 南漳县| 洪泽县| 万全县| 开阳县| 桃源县| 鄂托克前旗| 平利县| 鹤峰县| 灌南县| 恩平市| 德阳市| 永和县| 桓台县| 丹寨县| 循化| 永胜县| 曲阜市| 马龙县| 房山区| 瑞安市| 卫辉市| 瑞昌市| 云安县| 通城县| 定远县| 安平县| 沧源| 盐池县| 陕西省| 新兴县| 灵石县| 布尔津县| 眉山市| 高安市| 临洮县| 麻城市| 阳西县|