Mac安裝Zookeeper帶來的Zookeeper簡單介紹及思考

什么是Zookeeper

在Zookeeper的官網上有這么一句話:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services。

這大概描述了Zookeeper主要是一個分布式服務協調框架,實現同步服務,配置維護和命名服務等分布式應用。是一個高性能的分布式數據一致性解決方案。

Zookeeper是集中式存儲和管理分布式系統的配置中心

CP系統

Zookeeper是個CP(一致性+分區容錯性)的,即任何時刻對Zookeeper的訪問請求能得到一致的數據結果,同時系統對網絡分割具備容錯性;但是它不能保證每次服務請求的可用性。也就是在極端環境下,ZooKeeper可能會丟棄一些請求,消費者程序需要重新請求才能獲得結果。

brew安裝zookeeper

brew search zookeepker

zookeeper 支持brew安裝

安裝

brew install zookeeper

安裝成功后主要安裝文件路徑

/usr/local/Cellar/zookeeper/3.4.13

配置文件路徑

/usr/local/etc/zookeeper

包含四個主要文件

Zookeeper的簡單介紹-Zookeeper配置-圖南科技

這里引申說明一下 windows系統和Linux及Mac系統的區別:配置文件與安裝文件分離.這種思維方式的區別很有用

啟動

$ zkServer start:

查看狀態

$ zkServer status:

ZooKeeper JMX enabled by default
Using config: /usr/local/etc/zookeeper/zoo.cfg
Mode: standalone

這里的standalone指的是單機模式

PHP客戶端

sudo pecl install zookeeper 。 【直接終端運行,mac的生產力的表現之一】

Build process completed successfully
Installing '/usr/local/Cellar/php@7.2/7.2.18/pecl/20170718/zookeeper.so'
install ok: channel://pecl.php.net/zookeeper-0.6.4
Extension zookeeper enabled in php.ini

https://pecl.php.net/package/zookeeper

Zookeeper主要作用

它的作用主要是用來維護和監控你存儲的數據的狀態變化。通過監控這些數據狀態的變化,從而可以達到基于數據的集群管理。

ZNode

ZNode是Zookeeper中數據的最小單元,每個ZNode都可以保存數據,同時還可以掛載子節點,因此構成了一個層次化的命名空間,稱為樹。

ZooKeeper的簡單介紹-ZNode-圖南科技

Watcher數據變更通知

Zookeeper使用Watcher機制實現分布式數據的發布/訂閱功能。

ZooKeeper的簡單介紹-Watcher機制-圖南科技

分布式協調的具體案例

來源于公眾號javaEdge

image.png

如上圖所示,系統A發送一個請求到MQ,然后系統B消費消息之后處理了。那系統A如何知道系統B的處理結果?

用ZK就可實現分布式系統之間的協調工作!

系統A發送請求之后可以在ZK上對某個節點的值注冊監聽器,一旦系統B處理完了就修改ZK那個節點的值,A立馬就可以收到通知,完美解決~

以上是一種典型的實時通知與通信模型

不同的客戶端都對ZooKeeper上同一個數據節點進行Watcher注冊,監聽數據節點的變化(包括數據節點本身及其子節點),如果數據節點發生變化,那么所有訂閱的客戶端都能夠接收到相應的Watcher通知,并做出相應的處理

總結

本篇以PHP環境下Zookeeper擴展安裝為起點,簡單介紹了Zookeeper基本概念和使用場景,不是很完整。如果PHP和Zookeeper作為一個分布式系統的客戶端而言,網上的使用案例非常有限,跟PHP環境下熔斷組建的使用一樣,案例非常少,穩定性不能保證。

從兩方面來看這個事:一,業界基本沒有這樣的使用場景和技術案例,為什么沒有,因為PHP語言生態不適合做這塊,能做嗎,或許能做,但是不適合,不是強項。二,如果有類似的需求,我們不應該選擇PHP來做這塊,因為整個業界都沒有這樣做的,我們應該把經歷花在更有意義的選擇上。

參考文章

mac使用homebrew安裝zookeeper

https://blog.csdn.net/Webben/article/details/78362362

【轉】淺談分布式服務協調技術 Zookeeper

突破Java面試(41)-ZooKeeper的適用場景

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容