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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Zookeeper入门总结

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Zookeeper入门总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Zookeeper

官方定義:

zookeeper是一個分布式服務框架,是Apache Hadoop 的一個子項目,它主要是用來解決分布式應用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等。

可以簡單理解為 Zookeeper = 文件系統 + 監聽通知機制

Zookeeper的特性

注:以下server指Zookeeper的單個服務節點,client指Zookeeper的客戶端

  • 全局數據的一致:每個 server 保存一份相同的數據副本,client 無論鏈接到哪個 server,展示的數據都是一致的
  • 可靠性:如果消息被其中一臺服務器接受,那么將被所有的服務器接受
  • 順序性:包括全局有序和偏序兩種:全局有序是指如果在一臺服務器上消息 a 在消息 b 前發布,則在所有 server 上消息 a 在消息 b 前被發布,偏序是指如果一個消息 b 在消息 a 后被同一個發送者發布,a 必須將排在 b 前面
  • 數據更新原子性:一次數據更新要么成功,要么失敗,不存在中間狀態
  • 實時性:ZooKeeper 保證客戶端將在一個時間間隔范圍內獲得服務器的更新信息,或者服務器失效的信息
  • ZooKeeper的特性和功能是實現諸如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等服務的基礎

    文件系統

    Zookeeper維護一個類似文件系統的數據結構:

    ZooKeeper節點(如上圖中/NameServer)稱為 znode 。每個znode由一個名稱標識,并用路徑(/)序列分隔
    znode由三部分組成:

    • stat:此為狀態信息,描述該Znode版本、權限等信息。
    • data:與該Znode關聯的數據
    • children:該Znode下的節點

    我們能夠自由地增加、刪除znode,在一個znode下增加、刪除子znode,并且可以在znode中存儲數據

    Zone節點的類型

    • 持久節點:即使在創建該特定znode的客戶端斷開連接后,持久節點仍然存在。默認情況下,除非另有說明,否則所有znode都是持久的。
    • 臨時節點 - 客戶端活躍時,臨時節點就是有效的。當客戶端與ZooKeeper集合斷開連接時,臨時節點會自動刪除。因此,只有臨時節點不允許有子節點。如果臨時節點被刪除,則下一個合適的節點將填充其位置。臨時節點在leader選舉中起著重要作用。
    • 順序節點 - 順序節點可以是持久的或臨時的。當一個新的znode被創建為一個順序節點時,ZooKeeper通過將10位的序列號附加到原始名稱來設置znode的路徑。例如,如果將具有路徑 /myapp 的znode創建為順序節點,則ZooKeeper會將路徑更改為 /myapp0000000001 ,并將下一個序列號設置為0000000002。如果兩個順序節點是同時創建的,那么ZooKeeper不會對每個znode使用相同的數字。順序節點在鎖定和同步中起重要作用。

    監聽機制

    客戶端通過Zookeeper提供的API注冊監聽它關心的目錄節點,當目錄節點發生變化(數據改變、被刪除、子目錄節點增加刪除)時,zookeeper會通知客戶端。

    ZooKeeper應用場景

    依據ZooKeeper全局數據一致、數據更新原子性、實時性等特性及其監聽機制,可以用于實現分布式鎖、統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等。

    分布式應用配置管理

    假設我們的程序是分布式部署在多臺機器上,如果我們要改變程序的配置文件,需要逐臺機器去修改,非常麻煩,現在把這些配置全部放到zookeeper上去,保存在 zookeeper 的某個目錄節點中,然后所有相關應用程序對這個目錄節點進行監聽,一旦配置信息發生變化,每個應用程序就會收到 zookeeper 的通知,然后從 zookeeper 獲取新的配置信息應用到系統中。

    分布式鎖

    • 在 ZooKeeper 指定節點(locker)下創建臨時順序節點 node_n
    • 獲取 locker 下所有子節點 children
    • 對子節點按節點自增序號從小到大排序
    • 判斷本節點是不是第一個子節點,若是,則獲取鎖;若不是,則等待
    • 使用 ZooKeeper 感知節點的功能,對本節點的上一個節點進行感知
    • 當上一個節點被刪除了,ZooKeeper 會通知該線程,該線程就結束等待,并獲取鎖
    • 釋放鎖,并刪除該臨時節點

    詳細分布式鎖實現可以參考菜鳥教程:Zookeeper 分布式鎖實現原理

    Zookeeper安裝

    參考:W3Cschool:Zookeeper安裝步驟

    參考

    • Zookeeper入門看這篇就夠了
    • Zookeeper 概述

    總結

    以上是生活随笔為你收集整理的Zookeeper入门总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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