溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)處理之中Zookeeper

發(fā)布時(shí)間:2021-12-24 10:11:19 來(lái)源:億速云 閱讀:128 作者:柒染 欄目:大數(shù)據(jù)

大數(shù)據(jù)處理之中Zookeeper,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

Zookkeeper概述

    是一個(gè)分布式協(xié)調(diào)服務(wù)的開(kāi)源框架

    本質(zhì)上是一個(gè)分布式的小文件存儲(chǔ)系統(tǒng),提供基于類似文件系統(tǒng)的目錄樹(shù)方式的數(shù)據(jù)存儲(chǔ)。

    解決的問(wèn)題:分布式集群中應(yīng)用系統(tǒng)一致性問(wèn)題

    特性:

        數(shù)據(jù)全局一致

        可靠性:消息被一臺(tái)服務(wù)器接收,則可以被其它服務(wù)器接收

        順序性:全局有序和偏序兩種,消息發(fā)布的順序性

        數(shù)據(jù)更新的原子性:一次性數(shù)據(jù)更新成功(半數(shù)機(jī)器/節(jié)點(diǎn)以上)

        實(shí)時(shí)性:在一個(gè)時(shí)間范圍內(nèi)獲取服務(wù)器的更新信息,或者失效的信息

Zookeeper集群角色

    主節(jié)點(diǎn)(Leader):1、集群工作的核心,事務(wù)請(qǐng)求(寫)的唯一調(diào)度和處理者,保證集群事務(wù)處理的順序性。2、集群內(nèi)部各個(gè)服務(wù)器的調(diào)度者

    從節(jié)點(diǎn)(Follower):1、處理客戶端非事務(wù)請(qǐng)求。2、轉(zhuǎn)發(fā)事務(wù)請(qǐng)求給主節(jié)點(diǎn),3、參與集群主節(jié)點(diǎn)選舉投票

    觀察者(Observer):1、更新集群最新?tīng)顟B(tài)變化并同步這些狀態(tài),對(duì)非事務(wù)請(qǐng)求進(jìn)行響應(yīng),2

將事務(wù)請(qǐng)求轉(zhuǎn)發(fā)給主節(jié)點(diǎn)。3、不參與主節(jié)點(diǎn)選舉投票,通常用于不影響集群事務(wù)處理能力的前提下提升非事務(wù)處理的能力,或集群訪問(wèn)量較大的情況下

Zookeeper集群搭建。。。。。

Zookeeper的數(shù)據(jù)模型:

    與標(biāo)準(zhǔn)文件系統(tǒng)相似,采用樹(shù)形層次結(jié)構(gòu),樹(shù)中的節(jié)點(diǎn)被稱為Znode,每個(gè)節(jié)點(diǎn)可以擁有子節(jié)點(diǎn)

    不同:

            1、Znode兼具文件和目錄兩種特點(diǎn)。

            2、Znode具有原子性操作

            3、存儲(chǔ)數(shù)據(jù)大小有限制。最大是1M

            4、Znode通過(guò)路徑引用。路徑唯一

            5、序列化特性。創(chuàng)建節(jié)點(diǎn)時(shí)會(huì)在節(jié)點(diǎn)名后添加不斷增加 的序列號(hào),其對(duì)于父節(jié)點(diǎn)來(lái)說(shuō)是唯一的,可以辨別節(jié)點(diǎn)創(chuàng)建的先后順序,是一個(gè)10位的數(shù)字

    節(jié)點(diǎn)組成:

            stat:狀態(tài)信息、描述其Znode的版本、權(quán)限信息等。

            data:與該Znode關(guān)聯(lián)的數(shù)據(jù)

            children:該Znode下的子節(jié)點(diǎn)

    大數(shù)據(jù)處理之中Zookeeper

    節(jié)點(diǎn)類型:臨時(shí)節(jié)點(diǎn)和永久節(jié)點(diǎn)

            臨時(shí)節(jié)點(diǎn):不允許存在子節(jié)點(diǎn)

    創(chuàng)建Znode時(shí)有四種選項(xiàng):永久節(jié)點(diǎn)、臨時(shí)節(jié)點(diǎn)、永久序列化節(jié)點(diǎn)、臨時(shí)序列化節(jié)點(diǎn)

    節(jié)點(diǎn)的屬性:

            dataVersion:數(shù)據(jù)版本號(hào)

            cversion:子節(jié)點(diǎn)版本號(hào),子節(jié)點(diǎn)變化時(shí)值+1

            acVersion:版本控制號(hào)

            cZxid:Znode創(chuàng)建事務(wù)的ID

            mZid:Zode被修改的事務(wù)ID,zk每次變化時(shí)會(huì)產(chǎn)生一個(gè)唯一的事務(wù)ID(zxid),具有先后順序

            ctim:節(jié)點(diǎn)創(chuàng)建時(shí)間戳

             mtim:節(jié)點(diǎn)最近更新時(shí)的時(shí)間戳

            ephemeralOwner:如果此節(jié)點(diǎn)時(shí)臨時(shí)節(jié)點(diǎn),則值是與該節(jié)點(diǎn)綁定的sessionid,若不是則值為0

        節(jié)點(diǎn)操作:

                客戶端鏈接:zkCli.sh -sever ip

                create [-s][-e] path data,s表示永久節(jié)點(diǎn),e表示臨時(shí)節(jié)點(diǎn)

                set path data

                delete path data

                get path   

                 quota:對(duì)節(jié)點(diǎn)添加限制,setquota [-n|-b] val path,n表示子節(jié)點(diǎn)最大個(gè)數(shù),b表示數(shù)據(jù)值最大長(zhǎng)度,val子節(jié)點(diǎn)最大個(gè)數(shù)或數(shù)據(jù)值最大長(zhǎng)度,path節(jié)點(diǎn)路徑

                listquota:查看是否設(shè)置限制即指定節(jié)點(diǎn)的quota,軟性限制(輸出警告日志)

                delquota:delquota [-n|-b] path         刪除指定節(jié)點(diǎn)的quota

                history:列出歷史命令

                redo:重新執(zhí)行命令,與hostory結(jié)合使用。redo 命令編號(hào)

Zookeeper Watcher(數(shù)據(jù)訂閱/發(fā)布模式)

    使用watcher(監(jiān)聽(tīng))機(jī)制實(shí)現(xiàn)分布式通知功能,Zookeeper允許客戶端向服務(wù)端注冊(cè)一個(gè)watcher監(jiān)聽(tīng),服務(wù)端一些事件觸發(fā)這個(gè)watcher時(shí),服務(wù)端會(huì)向客戶端發(fā)送一個(gè)事件通知來(lái)實(shí)現(xiàn)分布式通知的功能。

     過(guò)程:1、客戶端向服務(wù)端注冊(cè)一個(gè)監(jiān)聽(tīng)watcher,2、服務(wù)端觸發(fā)注冊(cè)的watcher,3、客戶端回調(diào)watcher得到觸發(fā)事件情況

    watcher機(jī)制特點(diǎn):

            一次性觸發(fā):事件觸發(fā)監(jiān)聽(tīng)后,一個(gè)watcher event(監(jiān)聽(tīng)事件)被發(fā)送到對(duì)應(yīng)的客戶端,這種效果只有一次,后續(xù)再次發(fā)生同樣的事件,不會(huì)再次觸發(fā)

            事件封裝: 使用WatcherEvent對(duì)象封裝服務(wù)端事件并傳遞,包含三個(gè)屬性,通知狀態(tài)(keeperState)、事件類型(EventType)、節(jié)點(diǎn)路徑(Path) 

            event異步發(fā)送:

            先注冊(cè)在觸發(fā):連接事件不需要先注冊(cè),其它的需要事先注冊(cè)

   shell客戶端設(shè)置監(jiān)聽(tīng)(Watcher):

            get path watch  注冊(cè)監(jiān)聽(tīng)事件

Zookeeper Java API(Zookeeper 操作API)

    連接操作、Watcher事件操作::

大數(shù)據(jù)處理之中Zookeeper

大數(shù)據(jù)處理之中Zookeeper

Zookeeper選舉機(jī)制

    默認(rèn)采用FastLeaderElection算法,采用投票大于把半數(shù)勝出大的邏輯

    服務(wù)器ID:服務(wù)器編號(hào),編號(hào)越大在算法中權(quán)重越大

    選舉狀態(tài):LOOKING --->競(jìng)選狀態(tài)、FOLLOWIING--->隨從狀態(tài)(參與投票)、OBSERVING--->觀察狀態(tài)(不參與投票)、LEADDING--->領(lǐng)導(dǎo)者狀態(tài)

    數(shù)據(jù)ID:服務(wù)器中存放的最新數(shù)據(jù)的版本version,數(shù)據(jù)越大說(shuō)明版本越新、在選舉算法中的權(quán)重也越大

    邏輯時(shí)鐘: 投票次數(shù),同一輪選舉過(guò)程中數(shù)值時(shí)相同的,

    全新集群選舉(剛搭建的新集群):每臺(tái)機(jī)器給自己投票,票數(shù)過(guò)半選舉結(jié)束,服務(wù)器ID大的優(yōu)先級(jí)高

    非全新集群的選舉(集群提供服務(wù)一段時(shí)間后進(jìn)行選舉):

        選舉標(biāo)準(zhǔn):1、邏輯時(shí)鐘小的選舉結(jié)果被忽略,重新投票。2、統(tǒng)一邏輯時(shí)鐘、數(shù)據(jù)ID大的勝出。3、數(shù)據(jù)ID相同的服務(wù)器ID大的勝出。

Zookeeper典型應(yīng)用:

    數(shù)據(jù)發(fā)布與訂閱(配置中心):

        1、小型數(shù)據(jù)。

         2、獲取數(shù)據(jù)的同時(shí)還要設(shè)置監(jiān)聽(tīng),拿到數(shù)據(jù)后再次設(shè)置監(jiān)聽(tīng)保證監(jiān)聽(tīng)時(shí)刻有效

    命名服務(wù):由于Zookeeper節(jié)點(diǎn)路徑的全局唯一性,對(duì)提供服務(wù)的對(duì)象進(jìn)行命名,客戶端通過(guò)應(yīng)用名字可以獲取對(duì)應(yīng)的資源和服務(wù)地址,提供者等信息,,如:dubbo將提供的服務(wù)地址存儲(chǔ)到zk上,映射到對(duì)應(yīng)的服務(wù)名稱,維護(hù)全局的服務(wù)地址列表

     分布式鎖:由于其數(shù)據(jù)的一致性,鎖服務(wù)分為:保持獨(dú)占、控制時(shí)序

           保持獨(dú)占:?jiǎn)卫i。將zk的節(jié)點(diǎn)看作一把鎖,所有的客戶端到指定的目錄創(chuàng)建節(jié)點(diǎn),同通過(guò)創(chuàng)建非序列化的臨時(shí)節(jié)點(diǎn)實(shí)現(xiàn)獨(dú)占性

        大數(shù)據(jù)處理之中Zookeeper

            控制時(shí)序:按順序訪問(wèn),如隊(duì)列。同過(guò)將zk節(jié)點(diǎn)看作一把鎖,但這次創(chuàng)建的是序列化臨時(shí)節(jié)點(diǎn),從而實(shí)現(xiàn)全局的時(shí)序性

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI