ZooKeeper入门(一)
1: ZooKeeper是什么
? ? ? Apache ZooKeeper是一個開源的分布式服務框架,為分布式應用提供協調服務,用來解決分布式應用中的數
據管理問題,如:配置管理、域名服務、分布式同步、集群管理等。
? ? 概念:
? ? 分布式
? ? 將一個大型應用的不同業務部署在不同的服務器上,解決高并發的問題
? ? 集群
? ? 將同一個業務部署在多臺服務器上,提高系統的高可用性
=======================================================
注:為了解決集群之間的分工:引入負載均衡(nginx和zookeeper都可實現)的概念,將請求分發到不同服務器(集群服務器)上。
=======================================================
2. ZooKeeper組成(文件系統、通知機制)
? 2.1? ?文件系統
? ?ZooKeeper維護一個類似Linux文件系統的數據結構,用于存儲數據
? ?數據模型結構是一種樹形結構,由許多節點構成
? ?每個節點叫做ZNode(ZooKeeper Node)
? ?每個節點對應一個唯一路徑,通過該路徑來標識節點,如 /app1/p_2
? ?每個節點只能存儲大約1M的數據
? ?節點類型有四種:
? ? 持久化目錄節點 persistent
? ? 客戶端與服務器斷開連接,該節點仍然存在
? ?持久化順序編號目錄節點 persistent_sequential
? ?客戶端與服務器斷開連接,該節點仍然存在,此時節點會被順序編號,如:000001、000002.....
? ?臨時目錄節點 ephemeral
? ?客戶端與服務器斷開連接,該節點會被刪除
? ?臨時順序編號目錄節點 ephemeral_sequential
? ?客戶端與服務器斷開連接,該節點會被刪除,此時節點會被順序編號,如:000001、000002.....
2.2? ?通知機制
? ? ? ? ZooKeeper是一個基于觀察者模式設計的分布式服務管理框架
? ? 1. ZooKeeper負責管理和維護項目的公共數據,并授受觀察者的注冊(訂閱)
? ? 2. 一旦這些數據發生變化,ZooKeeper就會通知已注冊的觀察者
? ? 3. 此時觀察者就可以做出相應的反應
? ? ? ? 簡單來說,客戶端注冊監聽它關心的目錄節點,當目錄節點發生變化時,ZooKeeper會通知客戶端
? ? ? ? ZooKeeper是一個訂閱中心(注冊中心)
3: ZooKeeper應用場景(配置管理、集群管理、負載均衡)
? ? ? ? ?3.1 配置管理
? ? ? ? ? ? ? ?場景:集群環境、服務器的許多配置都是相同的,如:數據庫連接信息,當需要修改這些配置時必須同時修改
? ? ? ? ? ?每臺服務器,很麻煩
? ? ? ? ? ? ? ?解決:把這些配置全部放到ZooKeeper上,保存在ZooKeeper的某個目錄節點中,然后所有的應用程序(客戶
? ? ? ? ? ?端)對這個目錄節點進行監視Watch,一旦配置信息發生變化,ZooKeeper會通知每個客戶端,然后從ZooKeeper獲
? ? ? ? ? ?取新的配置信息,并應用到系統中。
? ? ? ? ?3.2 集群管理
? ? ? ? ? ?場景:集群環境下,如何知道有多少臺機器在工作?是否有機器退出或加入?需要選舉一個總管master,讓總
? ? 管來管理集群
? ? ? ? ? ?解決:在父目錄GroupMembers下為所有機器創建臨時目錄節點,然后監聽父目錄節點的子節點變化,一旦有
? ? 機器掛掉,該機器與ZooKeeper的連接斷開,其所創建的臨時目錄節點被刪除,所有其他機器都會收到通知。當有
? ? 新機器加入時也是同樣的道理。
? ? 選舉master:為所有機器創建臨時順序編號目錄節點,給每臺機器編號,然后每次選取編號最小的機器作為master
? ? ? ? ?3.3 負載均衡
? ? ? ? ZooKeeper本身是不提供負載均衡策略的,需要自己實現,所以準確的說,是在負載均衡中使用ZooKeeper來
? ?做集群的協調(也稱為軟負載均衡)
? ? ? 實現思路:
? ? ?1. 將ZooKeeper作為服務的注冊中心,所有服務器在啟動時向注冊中心登陸自己能夠提供的服務
? ? ?2. 服務的調用者到注冊中心獲取能夠提供所需要服務的服務器列表,然后自己根據負載均衡算法,從中選
?取一臺服務器進行連接
? ? ?3. 當服務器列表發生變化時,如:某臺服務器宕機下線,或新機器加入,ZooKeeper會自動通知調用者重新
獲取服務列表實際上利用了ZooKeeper的特性,將ZooKeeper用為服務的注冊和變更通知中心?
總結
以上是生活随笔為你收集整理的ZooKeeper入门(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 七猫小说怎么成为作者
- 下一篇: Timer定时器Demo