ZooKeeper 是一個分布式服務框架,它主要是用來解決分布式應用中經常遇到的 一些資料管理問題,如:命名服務、狀態同步、配置中心、集群管理等,
一、命名服務
命名服務是分布式系統中比較常見的一類場景,命名服務是分布式系統最基本的 公共服務之一,在分布式系統中,被命名的物體通常可以是集群中的機器、提供 的服務地址或遠程物件等——這些我們都可以統稱它們為名字(Name),其中較 為常見的就是一些分布式服務框架(如 RPC、RMI)中的服務地址串列,通過使 用命名服務,客戶端應用能夠根據指定名字來獲取資源的物體、服務地址和提供 者的資訊等,

二、狀態同步
每個節點除了存盤資料內容和 node 節點狀態資訊之外,還存盤了已經注冊的 APP 的狀態資訊,當有些節點或 APP 不可用,就將當前狀態同步給其他服務,
三、配置中心
現在我們大多數應用都是采用的是分布式開發的應用,搭建到不同的服務器上, 我們的組態檔,同一個應用程式的組態檔一樣,還有就是多個程式存在相同 的配置,當我們組態檔中有個配置屬性需要改變,我們需要改變每個程式的配 置屬性,這樣會很麻煩的去修改配置,那么可用使用 ZooKeeper 來實作配置中心, ZooKeeper 采用的是推拉相結合的方式: 客戶端向服務端注冊自己需要關注的 節點,一旦該節點的資料發生變更,那么服務端就會向相應的客戶端發送 Watcher 事件通知,客戶端接收到這個訊息通知后,需要主動到服務端獲取最新的資料,
四、集群管理
所謂集群管理,包括集群監控與集群控制兩大塊,前者側重對集群運行時狀態的收集,后者則是對集群進行操作與控制,在日常開發和運維程序中,我們經常會 有類似于如下的需求:
①希望知道當前集群中究竟有多少機器在作業,
②對集群中每臺機器的運行時狀態進行資料收集,
③對集群中機器進行上下線操作,
五、ZooKeeper兩大特性
①客戶端如果對 ZooKeeper 的一個資料節點注冊 Watcher 監聽,那么當該資料節點的內容或是其子節點串列發生變更時,ZooKeeper 服務器就會向訂閱的客戶端發 送變更通知,
②對在 ZooKeeper 上創建的臨時節點,一旦客戶端與服務器之間的會話失效,那么 該臨時節點也就被自動清除,
Watcher(事件監聽器),是 Zookeeper 中的一個很重要的特性,Zookeeper 允許用戶在指定節點上注冊一些 Watcher,并且在一些特定事件觸發的時候, ZooKeeper 服務端會將事件通知到感興趣的客戶端上去,該機制是 Zookeeper 實作分布式協調服務的重要特性,

0 生產者啟動
1 生產者注冊至 zookeeper
2 消費者啟動并訂閱頻道
3 zookeeper 通知消費者事件
4 消費者呼叫生產者
5 監控中心負責統計和監控服務狀態
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290818.html
標籤:其他
上一篇:Zookeeper 單機部署
下一篇:SparkSQL運行流程淺析
