日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zookeeper 创建临时顺序节点_Zookeeper学习笔记

發布時間:2024/4/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zookeeper 创建临时顺序节点_Zookeeper学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Zookeeper簡介

Zookeeper:是一個分布式的、開源的程序協調服務,是 hadoop 項目下的一個子項目。

他提供的主要功能包括:配置管理、名字服務、分布式鎖、集群管理 。

2.znode簡介:

Zookeeper 底層是一套數據結構。這個存儲結構是一個樹形 結構,其上的每一個節點,我們稱之為“znode”,每一個 znode 默認能夠存儲 1 MB的數據

1)PERSISTENT 持久化節點:

持久化節點是指在節點創建后,就一直存在,直到有刪除操作來主動清除這個節點。否則不會因為創建該節點的客戶端會話失效而消失。

2)PERSISTENT_SEQUENTIAL 持久順序節點:

持久順序節點這類節點的基本特性和上面的節點類型是一致的。額外的特性是,在 ZK 中,每個父節點會為他的第一級子節點維護一份時序,會記錄每個子節點創建的先后順序。(基于這個特性,在創建子節點的時候,可以設置這個屬性,那么在創建節點過程中,ZK 會自動為給定節點名加上一個數字后綴,作為新的節點名。這個數字后綴的范圍是整型的最大值。在創建節點的時候只需要傳入節點 “/test_”,這樣之后,zookeeper 自動會給”test_”后面補充數字。)

3)EPHEMERAL 臨時節點 :

臨時節點的生命周期和客戶端會話綁定。也就是說,如果客戶端會話失效,那么這個節點就會自動被清除掉。

4)EPHEMERAL_SEQUENTIAL 臨時自動編號節點 :

臨時自動編號節點此節點是屬于臨時節點,不過帶有順序,客戶端會話結束節點就消失。

Zookeeper安裝單機版

  • 安裝Linux
  • 安裝jdk(配置環境變量)
  • 上傳Zookeeper到LInux中的/root/temp
  • 官方資源包可在 http://zookeeper.apache.com 站點中下載。

    4)解壓Zookeeper并復制到/usr/local中

    [root@localhost temp]# tar -zxf zookeeper-3.4.6.tar.gz

    [root@localhost temp]# cp zookeeper-3.4.6 /usr/local/zookeeper -r(復制的同時修改名字)

    5)修改Zookeeper zoo_sample.cfg名字為zoo.cfg

    Zookeeper在啟動時會默認的去Zookeeper的conf目錄下查找一個名字為zoo.cfg的配置文件

    在 zookeeper 應用目錄中有子目錄 conf。其中有配置文件模板:zoo_sample.cfg

    修改zoo_sample.cfg 的名字我zoo.cfg

    cp zoo_sample.cfg zoo.cfg。

  • 修改配置文件zoo.cfg --設置緩存路徑
  • 在Zookeeper目錄下新建data文件夾并獲取絕對路徑

    7)進入conf文件夾配置zoo.cfg文件

    8)啟動Zookeeper

    默認加載配置文件:./zkServer.sh start:默認的會去 conf 目錄下加載 zoo.cfg 配置文件。

    指定加載配置文件:./zkServer.sh start 配置文件的路徑(就是加載復制zoo.cfg并改名的新的zoo.cfg)。

    啟動:

    關閉:

    查詢狀態:

    Zookeeper集群原理

    Zookeeper 集群中的角色主要有以下三類領導者 ,客戶端 ,學習者 。

    設計目的:

    順序性 :包括全局有序和偏序兩種:全局有序是指如果在一臺服務器上消息 a 在消息b 前發布,則在所有 Server 上消息 a 都將在消息 b 前被發布;偏序是指如果一個消息 b 在消息 a 后被同一個發送者發布,a 必將排在 b 前面

    可靠性 :具有簡單、健壯、良好的性能,如果消息 m 被到一臺服務器接受,那么它將被所有的服務器接受。

    實時性 :Zookeeper 保證客戶端將在一個時間間隔范圍內獲得服務器的更新信息,或者服務器失效的信息。但由于網絡延時等原因,Zookeeper 不能保證兩個客戶端能同時得到剛更新的數據,如果需要最新數據,應該在讀數據之前調用 sync()接口。

    等待無關(wait-free):慢的或者失效的 client 不得干預快速的 client 的請求,使得每個 client 都能有效的等待。

    原子性:更新只能成功或者失敗,沒有中間狀態。

    最終一致性:client 不論連接到哪個 Server,展示給它都是同一個視圖,這是 zookeeper最重要的性能。

    5.集群安裝

    使用 3 個 Zookeeper 應用搭建一個偽集群。應用部署位置是:192.168.21.128。服務監聽

    端口分別為:2181、2182、2183。投票選舉端口分別為 2881/3881、2882/3882、2883/3883。

    1)解壓Zookeeper并復制到/usr/local中

    [root@localhost temp]# tar -zxf zookeeper-3.4.6.tar.gz

    [root@localhost temp]# cp zookeeper-3.4.6 /usr/local/zookeepercluster/zookeeper1 -r(復制的同時修改名字)

    2)修改Zookeeper zoo_sample.cfg名字為zoo.cfg

    Zookeeper在啟動時會默認的去Zookeeper的conf目錄下查找一個名字為zoo.cfg的配置文件

    在 zookeeper 應用目錄中有子目錄 conf。其中有配置文件模板:zoo_sample.cfg

    修改zoo_sample.cfg 的名字我zoo.cfg

    cp zoo_sample.cfg zoo.cfg。

    3)修改配置文件zoo.cfg --設置緩存路徑

    在Zookeeper目錄下新建data文件夾并獲取絕對路徑

    4)在zookeepercluster文件夾下復制兩份 Zookeeper 應用。用于模擬集群中的 3 個節點。

    cp -r zookeeper01 zookeeper02

    cp -r zookeeper01 zookeeper03

  • 進入conf文件夾配置zoo.cfg文件--設置數據緩存路徑
  • data文件夾參數值為應用運行緩存數據保存目錄。使用絕對路徑賦值。不同的應用路徑不同。

    6)提供應用唯一標識

    在 Zookeeper 集群中,每個節點需要一個唯一標識。這個唯一標識要求是自然數。且唯

    一標識保存位置是:$dataDir/myid(data文件夾下的myid文件)。其中 dataDir 為配置文件 zoo.cfg 中的配置參數

    方式一:在 data 目錄中創建文件 myid : touch myid

    為應用提供唯一標識。本環境中使用 1、2、3 作為每個節點的唯一標識。

    vi myid

    方式二:簡化方式為: echo [唯一標識] >> myid。 echo 命令為回聲命令,系統會將命令發送的

    數據返回。 '>>'為定位,代表系統回聲數據指定發送到什么位置。 此命令代表系統回聲數

    據發送到 myid 文件中。 如果沒有文件則創建文件。

    7)修改配置文件 zoo.cfg - 設置服務、投票、選舉端口

    vi zoo.cfg

    8)啟動 ZooKeeper 應用

    可以設置啟動和關閉腳本

    腳本內容

    控制臺訪問 ZooKeeper 應用

    6.1訪問控制臺命令

    可以通過任何一個Zookeeper的zkCli.sh來訪問控制臺。

    命令格式為: zkCli.sh -server host:port。默認連接 localhost:2181。

    6.2控制臺客戶端常用命令

    1)connect host:port - 連接其他的 ZooKeeper 應用.

    示例:從2182端口到2181端口

  • ls path - 顯示列表路徑下的資源(沒有ll這個命令)。
  • 在 ZooKeeper 控制臺客戶端中,沒有默認列表功能,必須指定要列表資源的位置(即絕對路徑)。 如: ls / ; ls /path 等。

    3)create [-e] [-s] path data - 創建節點

    如: create /test 123 創建一個(永久)/test 節點,節點攜帶數據信息 123。

    create -e /test 123 創建一個臨時節點/test,攜帶數據為 123,臨時節點只在當前會話生命周期中有效,會話結束節點自動刪除。

    create -s /test 123 創建一個順序節點/test,攜帶數據123,創建的順序節點由ZooKeeper自動為節點增加后綴信息,如-/test00000001

    等。-e 和-s 參數可以聯合使用

  • get path - 查看指定節點的數據。 如: get /test。結果如下
  • [zk: 192.168.199.175:2181(CONNECTED) 22] get /abc

    123

    cZxid = 0xd # 創建節點時的事務 ID,由 ZooKeeper 維護。

    ctime = Mon Oct 07 02:00:41 PDT 2019

    mZxid = 0x1f # 當前節點攜帶數據最后一次修改的事務 ID。

    mtime = Mon Oct 07 02:00:41 PDT 2019

    pZxid = 0x21 # 子節點列表最后一次修改的事務 ID。

    cversion = 1 # 節點版本號,當節點的子節點列表發生變化時,版本變更。

    dataVersion = 2 # 數據版本號,當節點攜帶數據發生變化時,版本變更。

    aclVersion = 0

    ephemeralOwner = 0x0 # 此數據值不是 0x0 時,代表是臨時節點

    dataLength = 3 # 節點攜帶數據長度

    numChildren = 1 # 子節點數量

    5)set path data [version] - 設置對應位置節點的數據。

    如: set /test 'test data'。 如果要設

    置的數據中有空格,則使用單引號界定數據的范圍。每次修改數據后,dataVersion 屬性自增。那么在 set 命令中可以指定 version,version 數據必須與上次查詢的值一致,用于保證本次修改命令執行時,沒有其他會話修改此數據。

    6)delete path [version] - 刪除指定節點,此命令不能刪除有子節點的節點。如:delete /test。

    其中 version 參數和 set 命令的 version 含義一致

    7)rmr path - 刪除指定結點,包括子節點。

    8)quit - 退出控制臺

    7、理解zookeeper選舉機制

    7.1選舉流程簡述

    目前有5臺服務器,每臺服務器均沒有數據,它們的編號分別是1,2,3,4,5,按編號依次啟動,它們的選擇舉過程如下:

    ---服務器1啟動,給自己投票,然后發投票信息,由于其它機器還沒有啟動所以它收不到反饋信息,服務器1的狀態一直屬于Looking(選舉狀態)。

    ---服務器2啟動,給自己投票,同時與之前啟動的服務器1交換結果,由于服務器2的編號大所以服務器2勝出,但此時投票數沒有大于半數,所以兩個服務器的狀態依然是LOOKING。

    ---服務器3啟動,給自己投票,同時與之前啟動的服務器1,2交換信息,由于服務器3的編號最大所以服務器3勝出,此時投票數正好大于半數,所以服務器3成為領導者,服務器1,2成為小弟。

    ---服務器4啟動,給自己投票,同時與之前啟動的服務器1,2,3交換信息,盡管服務器4的編號大,但之前服務器3已經勝出,所以服務器4只能成為小弟。

    ---服務器5啟動,后面的邏輯同服務器4成為小弟。

    zookeeper部署奇數節點的原因(最少3個)

    1).zookeeper集群的寫操作,由leader節點負責,它會把通知所有節進行寫入操作,只有收到半數以上節點的成功反饋,才算成功。如果是部署2個節點的話,那就必須都成功。

    2).zookeeper的選舉策略也是需要半數以上的節點同意才能當選leader,如果是偶數節點可能導致票數相同的情況

    3).只有當半數以上的節點存活時 zookeeper集群才能對外服務,維持正常狀態,如果是2個節點,只要其中一個掛掉,那么剩下的1個并不滿足半數以上規則。

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的zookeeper 创建临时顺序节点_Zookeeper学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。