小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

你真的懂Zookeeper么?

 進(jìn)擊的科科 2021-04-08

談起Zookeeper可能很多開(kāi)發(fā)者都說(shuō),這個(gè)很簡(jiǎn)單啊,我在Dubbo和Kafka中經(jīng)常用,沒(méi)什么難的,但是用了這么久,你真的懂Zookeeper么?

4月6日的開(kāi)課吧《HelloWorld公開(kāi)課》,Reythor雷老師在開(kāi)講前就提出了五個(gè)犀利的大廠面試題,你能答上來(lái)幾道?

1、在具體應(yīng)用場(chǎng)景中的解決方案的設(shè)計(jì)中,我們要著重考慮對(duì)哪些zk特性的靈活使用?

2、對(duì)于 zk 的節(jié)點(diǎn)類型,談一下你的認(rèn)識(shí)。

3、watcher 機(jī)制的工作原理是怎樣的?

4、使用DBMS可以實(shí)現(xiàn)Master選舉,實(shí)現(xiàn)原理是什么?存在什么問(wèn)題?

5、“數(shù)據(jù)復(fù)制總線”的功能可以由 MySQL 主 從 集群完成嗎?數(shù)據(jù)復(fù)制總線與 zk 有什么關(guān)系。

帶著這些問(wèn)題,我們跟著老雷同志,看他在公開(kāi)課上都講了啥。

Zookeeper核心理論

數(shù)據(jù)模型znode

zk數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)與標(biāo)準(zhǔn)的 Unix 文件系統(tǒng)非常相似,都是在根節(jié)點(diǎn)下掛許多子節(jié)點(diǎn)。znode是zk中數(shù)據(jù)的最小單元,每個(gè)znode上都可以保存數(shù)據(jù),同時(shí)還可以掛載子節(jié)點(diǎn)。不同類型的節(jié)點(diǎn)有不同的生命周期。

持久節(jié)點(diǎn):節(jié)點(diǎn)被創(chuàng)建后會(huì)一直保存在 zk 中,直到將其刪除。

持久順序節(jié)點(diǎn): 父節(jié)點(diǎn)可以為它的第一級(jí)子節(jié)點(diǎn)維護(hù)一份順序,用于記錄每個(gè)子節(jié)點(diǎn)創(chuàng)建的先后順序。其在創(chuàng)建子節(jié)點(diǎn)時(shí),會(huì)在子節(jié)點(diǎn)名稱后添加數(shù)字后輟,作為該子節(jié)點(diǎn)的完整節(jié)點(diǎn)名。 序號(hào)由10位數(shù)字組成且從0開(kāi)始計(jì)數(shù) 。

臨時(shí)節(jié)點(diǎn): 生命周期與客戶端的會(huì)話綁定在一起,會(huì)話消失則該節(jié)點(diǎn)就會(huì)被自動(dòng)清理。且只能作為葉子節(jié)點(diǎn),不能創(chuàng)建子節(jié)點(diǎn) 。

臨時(shí)順序節(jié)點(diǎn): 添加了創(chuàng)建序號(hào)的臨時(shí)節(jié)點(diǎn)。

Watcher機(jī)制

開(kāi)發(fā)者使用zk最多的功能想必就是分布式數(shù)據(jù)的發(fā)布和訂閱,一個(gè)發(fā)布者能夠讓多個(gè)訂閱者同時(shí)監(jiān)聽(tīng)某一主題對(duì)象,當(dāng)這個(gè)主題對(duì)象狀態(tài)發(fā)生變化時(shí),會(huì)通知所有訂閱者,使它們能夠做出相應(yīng)的處理。

而實(shí)現(xiàn)分布式數(shù)據(jù)發(fā)布和訂閱功能背后原理就是watcher機(jī)制,下圖完整的展示了Watcher機(jī)制的工作原理。

這里要注意的,一旦watcher被觸發(fā), zk就會(huì)將其從WatcherManager中刪除,當(dāng)需要再使用時(shí)客戶端會(huì)再向zk重新注冊(cè) watcher。但注冊(cè)watcher需要時(shí)間,在注冊(cè)期間有新的數(shù)據(jù)變更,客戶端是感知不到的。所以zk的watcher機(jī)制限制了zk不適合監(jiān)聽(tīng)變化非常頻繁的場(chǎng)景

Zookeeper經(jīng)典應(yīng)用場(chǎng)景

Master選舉

現(xiàn)在所有的互聯(lián)網(wǎng)軟件架構(gòu)基本離不開(kāi)高并發(fā)與高可用,這里就不得不用到了集群,每個(gè)集群中都會(huì)存在一個(gè)Master,用于協(xié)調(diào)集群中的其它 Slave主機(jī)。Master對(duì)于Slave的狀態(tài)具有決定權(quán),而Master就是通過(guò)某種選舉機(jī)制產(chǎn)生的,這就是我們說(shuō)的Master選舉,其原理就是使用zk中多個(gè)客戶端對(duì)同一節(jié)點(diǎn)創(chuàng)建時(shí),只有一個(gè)客戶端可以成功。

分布式同步

分布式同步是分布式系統(tǒng)中不可缺少的環(huán)節(jié),它是將不同的分布式組件有機(jī)結(jié)合起來(lái)的關(guān)鍵。對(duì)于一個(gè)在多臺(tái)機(jī)器上運(yùn)行的應(yīng)用而言,通常需要一個(gè)協(xié)調(diào)者來(lái)控制整個(gè)系統(tǒng)的運(yùn)行流程,例如執(zhí)行的先后順序,或執(zhí)行與不執(zhí)行等。

以MySQL 數(shù)據(jù)復(fù)制總線為例,這是一個(gè)實(shí)時(shí)數(shù)據(jù)復(fù)制框架,用于在不同的 MySQL 數(shù)據(jù)庫(kù)實(shí)例間進(jìn)行異構(gòu)數(shù)據(jù)復(fù)制。其核心部分由三部分組成:生產(chǎn)者、復(fù)制管道、消費(fèi)者。

從上面結(jié)構(gòu)圖中我們可以看到replicator存在單點(diǎn)問(wèn)題。為了解決這個(gè)問(wèn)題,就需要為其設(shè)置

多個(gè)熱備主機(jī)。如何協(xié)調(diào)這些熱備機(jī)工作呢?這時(shí)候就用到了zk來(lái)作為協(xié)調(diào),即由 zk 來(lái)完成分布式同步工作。

分布式鎖

分布式鎖是控制分布式系統(tǒng)同步訪問(wèn)共享資源的一種方式。 Zookeeper 可以實(shí)現(xiàn)分布式鎖功能。根據(jù)用戶操作類型的不同,可以分為排他鎖與共享鎖。

在zk上對(duì)于分布式鎖的實(shí)現(xiàn),使用 的是 類似于“/xs_lock/[ hostname]-請(qǐng)求類型-序號(hào)”的臨時(shí)順序節(jié)點(diǎn)。 當(dāng)客戶端發(fā)出讀寫請(qǐng)求時(shí)會(huì)在zk中創(chuàng)建不同的節(jié)點(diǎn)。根據(jù)讀寫操作的不同及當(dāng)前節(jié)點(diǎn)與之前節(jié)點(diǎn)的序號(hào)關(guān)系來(lái)執(zhí)行不同的邏輯。

前面的實(shí)現(xiàn)方式存在“驚群效應(yīng)”,為了解決其所帶來(lái)的性能下降,可以對(duì)前述分布式鎖的實(shí)現(xiàn)進(jìn)行改進(jìn)。

當(dāng)客戶端請(qǐng)求發(fā)出后,在zk中創(chuàng)建相應(yīng)的臨時(shí)順序節(jié)點(diǎn)后,馬上獲取當(dāng)前的 /xs_lock 的所有子節(jié)點(diǎn)列表, 但任何客戶端都不向 /xs_lock 注冊(cè)用于監(jiān)聽(tīng)子節(jié)點(diǎn)列表變化的 watcher 。 而是改為根據(jù)請(qǐng)求類型的不同向?qū)ζ溆杏绊懙淖庸?jié)點(diǎn)注冊(cè)watcher 。

其實(shí),Zookeeper的內(nèi)容遠(yuǎn)不止這些,比如前面提到的數(shù)據(jù)復(fù)制總線工作原理是什么?文中開(kāi)篇提到的五道大廠面試題答案是什么?如果有同學(xué)想深入了解Zookeeper,記得點(diǎn)擊從應(yīng)用場(chǎng)景到實(shí)現(xiàn)原理,全面解讀Zookeeper觀看公開(kāi)課回放視頻!

講師介紹

Reythor雷,開(kāi)課吧簽約講師,碩士,國(guó)家高級(jí)工程師,先后供職于亞信總部、同方知網(wǎng)、中軟國(guó)際北京總部等軟件企業(yè),現(xiàn)任某國(guó)企軟件工程中心Leader。

《Hello ,World公開(kāi)課》是由開(kāi)課吧推出的面向廣大開(kāi)發(fā)工程師的免費(fèi)加餐課,集結(jié)業(yè)內(nèi)名師大咖,聚焦熱門技術(shù)和實(shí)戰(zhàn)解決方案,以專業(yè)知識(shí)分享交流為橋梁,鏈接正在創(chuàng)造世界的一群科技主力們,向初心致敬,為技術(shù)發(fā)燒。無(wú)論你是初入職場(chǎng)的應(yīng)屆生,還是準(zhǔn)備升職加薪的職場(chǎng)精英,相信這里都有你需要的養(yǎng)料。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多