真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

zookeeper分布式協(xié)調(diào)服務(wù)怎么應(yīng)用-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)建站是一家專業(yè)從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)建站依托強大的技術(shù)實力、以及多年的網(wǎng)站運營經(jīng)驗,為您提供專業(yè)的成都網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計開發(fā)服務(wù)!

分布式服務(wù)協(xié)調(diào)員zookeeper - 應(yīng)用場景和監(jiān)控

zookeeper在分布式系統(tǒng)中作為協(xié)調(diào)員的角色,可應(yīng)用于Leader選舉、分布式鎖、配置管理等服務(wù)的實現(xiàn)。以下我們從zookeeper供的API、應(yīng)用場景和監(jiān)控三方面學(xué)習(xí)和了解zookeeper(以下簡稱ZK)。

ZK API

ZK以Unix文件系統(tǒng)樹結(jié)構(gòu)的形式管理存儲的數(shù)據(jù),圖示如下:

zookeeper分布式協(xié)調(diào)服務(wù)怎么應(yīng)用

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

以下我們用server表示ZK服務(wù)的提供方,client表示ZK服務(wù)的使用方,當(dāng)client連接ZK時,相應(yīng)創(chuàng)建session會話信息。

有兩種類型的znode:

Regular: 該類型znode只能由client端顯式創(chuàng)建或刪除

Ephemeral: client端可創(chuàng)建或刪除該類型znode;當(dāng)session終止時,ZK亦會刪除該類型znode

znode創(chuàng)建時還可以被打上sequential標志,被打上該標志的znode,將自行加上自增的數(shù)字后綴

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

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

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

  • exists(path,watch):如果存在path對應(yīng)znode,則返回true;否則返回false,watch標志可設(shè)置監(jiān)聽事件

  • getData(path, watch):返回對應(yīng)znode的數(shù)據(jù)和元信息(如version等)

  • setData(path, data, version):將data[]數(shù)據(jù)寫入對應(yīng)path/version的znode

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

ZK應(yīng)用場景

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

Leader選舉

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

1、各自創(chuàng)建Ephemeral類型的znode,并打上sequential標志:

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

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

3、非Leader在次小序號znode上設(shè)置監(jiān)聽事件,并重復(fù)執(zhí)行以上步驟2

假如以上 /master/lock-0000000241節(jié)點被刪除(相應(yīng)client服務(wù)異?;蚓W(wǎng)絡(luò)異常等原因),那么 /master/lock-0000000242相應(yīng)的znode將提升自己為Leader。client只關(guān)心自己創(chuàng)建的znode和序號次小的znode,這避免了驚群效應(yīng)(Herd Effect)。

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

配置管理

znode可以存儲數(shù)據(jù),基于這一點,我們可以用ZK實現(xiàn)分布式系統(tǒng)的配置管理,假設(shè)有服務(wù)A,A擴容設(shè)備時需要將相應(yīng)新增的ip/port同步到全網(wǎng)服務(wù)器的A.conf配置,實現(xiàn)過程如下:

1、A擴容時,相應(yīng)在ZK上新增znode,該znode數(shù)據(jù)形式如下:

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

2、全網(wǎng)機器監(jiān)聽 /A,當(dāng)該znode下有新節(jié)點加入時,調(diào)用相應(yīng)處理函數(shù),將服務(wù)A的新增ip/port加入A.conf

3、完成步驟2后,繼續(xù)設(shè)置對 /A監(jiān)聽

服務(wù)縮容的步驟類似,機器下線時將ZK相應(yīng)節(jié)點刪除,全網(wǎng)機器監(jiān)聽到該事件后將配置中的設(shè)備剔除。

ZK監(jiān)控

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

# 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數(shù)、平均調(diào)用耗時、收包發(fā)包數(shù)等信息

  • ruok:診斷自身狀態(tài)是否ok

  • cons:展示當(dāng)前的client連接

像不能問一個醉酒的人是否喝醉一樣,我們也不能確信一臺回復(fù)”imok”的ZK就是真的ok,我們可以通過ZK自帶的zkCli.sh模擬client創(chuàng)建/刪除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

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

到此,關(guān)于“zookeeper分布式協(xié)調(diào)服務(wù)怎么應(yīng)用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文題目:zookeeper分布式協(xié)調(diào)服務(wù)怎么應(yīng)用-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://weahome.cn/article/ehigo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部