㈠ zookeeper 用到哪些設計模式
ZooKeeper作為發現服務的問題
ZooKeeper(註:ZooKeeper是著名Hadoop的一個子項目,旨在解決大規模分
布式應用場景下,服務協調同步(Coordinate
Service)的問題;它可以為同在一個分布式系統中的其他服務提供:統一命名服務、配置管理、分布式鎖服務、集群管理等功能)是個偉大的開源項目,它
很成熟,有相當大的社區來支持它的發展,而且在生產環境得到了廣泛的使用;但是用它來做Service發現服務解決方案則是個錯誤。
在分布式系統領域有個著名的 CAP定理(C-
數據一致性;A-服務可用性;P-服務對網路分區故障的容錯性,這三個特性在任何分布式系統中不能同時滿足,最多同時滿足兩個);ZooKeeper是個
CP的,即任何時刻對ZooKeeper的訪問請求能得到一致的數據結果,同時系統對網路分割具備容錯性;但是它不能保證每次服務請求的可用性(註:也就
是在極端環境下,ZooKeeper可能會丟棄一些請求,消費者程序需要重新請求才能獲得結果)。但是別忘了,ZooKeeper是分布式協調服務,它的
職責是保證數據(註:配置數據,狀態數據)在其管轄下的所有服務之間保持同步、一致;所以就不難理解為什麼ZooKeeper被設計成CP而不是AP特性
的了,如果是AP的,那麼將會帶來恐怖的後果(註:ZooKeeper就像交叉路口的信號燈一樣,你能想像在交通要道突然信號燈失靈的情況嗎?)。而且,
作為ZooKeeper的核心實現演算法 Zab,就是解決了分布式系統下數據如何在多個服務之間保持同步問題的。
作為一個分布式協同服務,ZooKeeper非常好,但是對於Service發現服務來說就不合適了;因為對於Service發現服務來說就算
是
返回了包含不實的信息的結果也比什麼都不返回要好;再者,對於Service發現服務而言,寧可返回某服務5分鍾之前在哪幾個伺服器上可用的信息,也不能
因為暫時的網路故障而找不到可用的伺服器,而不返回任何結果。所以說,用ZooKeeper來做Service發現服務是肯定錯誤的,如果你這么用就慘
了!
而且更何況,如果被用作Service發現服務,ZooKeeper本身並沒有正確的處理網路分割的問題;而在雲端,網路分割問題跟其他類型的
故障一樣的確會發生;所以最好提前對這個問題做好100%的准備。就像 Jepsen在
ZooKeeper網站上發布的博客中所說:在ZooKeeper中,如果在同一個網路分區(partition)的節點數(nodes)數達不到
ZooKeeper選取Leader節點的逗法定人數地時,它們就會從ZooKeeper中斷開,當然同時也就不能提供Service發現服務了。
如果給ZooKeeper加上客戶端緩存(註:給ZooKeeper節點配上本地緩存)或者其他類似技術的話可以緩解ZooKeeper因為網
絡故障造成節點同步信息錯誤的問題。 Pinterest與 Airbnb公
司就使用了這個方法來防止ZooKeeper故障發生。這種方式可以從表面上解決這個問題,具體地說,當部分或者所有節點跟ZooKeeper斷開的情況
下,每個節點還可以從本地緩存中獲取到數據;但是,即便如此,ZooKeeper下所有節點不可能保證任何時候都能緩存所有的服務注冊信息。如果
ZooKeeper下所有節點都斷開了,或者集群中出現了網路分割的故障(註:由於交換機故障導致交換機底下的子網間不能互訪);那麼ZooKeeper
會將它們都從自己管理范圍中剔除出去,外界就不能訪問到這些節點了,即便這些節點本身是逗健康地的,可以正常提供服務的;所以導致到達這些節點的服務請求
被丟失了。(註:這也是為什麼ZooKeeper不滿足CAP中A的原因)
更深層次的原因是,ZooKeeper是按照CP原則構建的,也就是說它能保證每個節點的數據保持一致,而為ZooKeeper加上緩存的做法
的
目的是為了讓ZooKeeper變得更加可靠(available);但是,ZooKeeper設計的本意是保持節點的數據一致,也就是CP。所以,這樣
一來,你可能既得不到一個數據一致的(CP)也得不到一個高可用的(AP)的Service發現服務了;因為,這相當於你在一個已有的CP系統上強制栓了
一個AP的系統,這在本質上就行不通的!一個Service發現服務應該從一開始就被設計成高可用的才行!
如果拋開CAP原理不管,正確的設置與維護ZooKeeper服務就非常的困難;錯誤會 經常發生,
導致很多工程被建立只是為了減輕維護ZooKeeper的難度。這些錯誤不僅存在與客戶端而且還存在於ZooKeeper伺服器本身。Knewton平台
很多故障就是由於ZooKeeper使用不當而導致的。那些看似簡單的操作,如:正確的重建觀察者(reestablishing
watcher)、客戶端Session與異常的處理與在ZK窗口中管理內存都是非常容易導致ZooKeeper出錯的。同時,我們確實也遇到過
ZooKeeper的一些經典bug: ZooKeeper-1159 與 ZooKeeper-1576;
我們甚至在生產環境中遇到過ZooKeeper選舉Leader節點失敗的情況。這些問題之所以會出現,在於ZooKeeper需要管理與保障所管轄服務
群的Session與網路連接資源(註:這些資源的管理在分布式系統環境下是極其困難的);但是它不負責管理服務的發現,所以使用ZooKeeper當
Service發現服務得不償失。
做出正確的選擇:Eureka的成功
我們把Service發現服務從ZooKeeper切換到了Eureka平台,它是一個開
源的服務發現解決方案,由Netflix公司開發。(註:Eureka由兩個組件組成:Eureka伺服器和Eureka客戶端。Eureka伺服器用作
服務注冊伺服器。Eureka客戶端是一個java客戶端,用來簡化與伺服器的交互、作為輪詢負載均衡器,並提供服務的故障切換支持。)Eureka一開
始就被設計成高可用與可伸縮的Service發現服務,這兩個特點也是Netflix公司開發所有平台的兩個特色。(
他們都在討論Eureka)。自從切換工作開始到現在,我們實現了在生產環境中所有依賴於Eureka的產品沒有下線維護的記錄。我們也被告知過,在雲平
台做服務遷移註定要遇到失敗;但是我們從這個例子中得到的經驗是,一個優秀的Service發現服務在其中發揮了至關重要的作用!
首先,在Eureka平台中,如果某台伺服器宕機,Eureka不會有類似於ZooKeeper的選舉leader的過程;客戶端請求會自動切
換
到新的Eureka節點;當宕機的伺服器重新恢復後,Eureka會再次將其納入到伺服器集群管理之中;而對於它來說,所有要做的無非是同步一些新的服務
注冊信息而已。所以,再也不用擔心有逗掉隊地的伺服器恢復以後,會從Eureka伺服器集群中剔除出去的風險了。Eureka甚至被設計用來應付范圍更廣
的網路分割故障,並實現逗0地宕機維護需求。當網路分割故障發生時,每個Eureka節點,會持續的對外提供服務(註:ZooKeeper不會):接收新
的服務注冊同時將它們提供給下游的服務發現請求。這樣一來,就可以實現在同一個子網中(same side of
partition),新發布的服務仍然可以被發現與訪問。
但是,Eureka做到的不止這些。正常配置下,Eureka內置了心跳服務,用於淘汰一些逗瀕死地的伺服器;如果在Eureka中注冊的服
務,
它的逗心跳地變得遲緩時,Eureka會將其整個剔除出管理范圍(這點有點像ZooKeeper的做法)。這是個很好的功能,但是當網路分割故障發生時,
這也是非常危險的;因為,那些因為網路問題(註:心跳慢被剔除了)而被剔除出去的伺服器本身是很地健康逗的,只是因為網路分割故障把Eureka集群分割
成了獨立的子網而不能互訪而已。
幸運的是,Netflix考慮到了這個缺陷。如果Eureka服務節點在短時間里丟失了大量的心跳連接(註:可能發生了網路故障),那麼這個
Eureka節點會進入地自我保護模式逗,同時保留那些逗心跳死亡逗的服務注冊信息不過期。此時,這個Eureka節點對於新的服務還能提供注冊服務,對
於地死亡逗的仍然保留,以防還有客戶端向其發起請求。當網路故障恢復後,這個Eureka節點會退出地自我保護模式逗。所以Eureka的哲學是,同時保
留地好數據逗與地壞數據逗總比丟掉任何地好數據逗要更好,所以這種模式在實踐中非常有效。
最後,Eureka還有客戶端緩存功能(註:Eureka分為客戶端程序與伺服器端程序兩個部分,客戶端程序負責向外提供注冊與發現服務接
口)。
所以即便Eureka集群中所有節點都失效,或者發生網路分割故障導致客戶端不能訪問任何一台Eureka伺服器;Eureka服務的消費者仍然可以通過
Eureka客戶端緩存來獲取現有的服務注冊信息。甚至最極端的環境下,所有正常的Eureka節點都不對請求產生相應,也沒有更好的伺服器解決方案來解
決這種問題時;得益於Eureka的客戶端緩存技術,消費者服務仍然可以通過Eureka客戶端查詢與獲取注冊服務信息,這點很重要。
Eureka的構架保證了它能夠成為Service發現服務。它相對與ZooKeeper來說剔除了Leader節點的選取或者事務日誌機制,
這
樣做有利於減少使用者維護的難度也保證了Eureka的在運行時的健壯性。而且Eureka就是為發現服務所設計的,它有獨立的客戶端程序庫,同時提供心
跳服務、服務健康監測、自動發布服務與自動刷新緩存的功能。但是,如果使用ZooKeeper你必須自己來實現這些功能。Eureka的所有庫都是開源
的,所有人都能看到與使用這些源代碼,這比那些只有一兩個人能看或者維護的客戶端庫要好。
維護Eureka伺服器也非常的簡單,比如,切換一個節點只需要在現有EIP下移除一個現有的節點然後添加一個新的就行。Eureka提供了一
個
web-based的圖形化的運維界面,在這個界面中可以查看Eureka所管理的注冊服務的運行狀態信息:是否健康,運行日誌等。Eureka甚至提供
了Restful-API介面,方便第三方程序集成Eureka的功能。
㈡ Zookeeper在哪些系統中使用,又是怎麼用的
ZooKeeper作為發現服務的問題 ZooKeeper(註:ZooKeeper是著名Hadoop的一個子項目,旨在解決大規模分 布式應用場景下,服務協調同步(Coordinate Service)的問題;它可以為同在一個分布式系統中的其他服務提供:統一命名服務、配置管理、分布式鎖服務、集群管理等功能)是個偉大的開源項目,它 很成熟,有相當大的社區來支持它的發展,而且在生產環境得到了廣泛的使用;但是用它來做Service發現服務解決方案則是個錯誤。 在分布式系統領域有個著名的 CAP定理(C- 數據一致性;A-服務可用性;P-服務對網路分區故障的容錯性,這三個特性在任何分布式系統中不能同時滿足,最多同時滿足兩個);ZooKeeper是個 CP的,即任何時刻對ZooKeeper的訪問請求能得到一致的數據結果,同時系統對網路分割具備容錯性;但是它不能保證每次服務請求的可用性(註:也就 是在極端環境下,ZooKeeper可能會丟棄一些請求,消費者程序需要重新請求才能獲得結果)。但是別忘了,ZooKeeper是分布式協調服務,它的 職責是保證數據(註:配置數據,狀態數據)在其管轄下的所有服務之間保持同步、一致;所以就不難理解為什麼ZooKeeper被設計成CP而不是AP特性 的了,如果是AP的,那麼將會帶來恐怖的後果(註:ZooKeeper就像交叉路口的信號燈一樣,你能想像在交通要道突然信號燈失靈的情況嗎?)。而且, 作為ZooKeeper的核心實現演算法 Zab,就是解決了分布式系統下數據如何在多個服務之間保持同步問題的。 作為一個分布式協同服務,ZooKeeper非常好,但是對於Service發現服務來說就不合適了;因為對於Service發現服務來說就算 是 返回了包含不實的信息的結果也比什麼都不返回要好;再者,對於Service發現服務而言,寧可返回某服務5分鍾之前在哪幾個伺服器上可用的信息,也不能 因為暫時的網路故障而找不到可用的伺服器,而不返回任何結果。所以說,用ZooKeeper來做Service發現服務是肯定錯誤的,如果你這么用就慘 了! 而且更何況,如果被用作Service發現服務,ZooKeeper本身並沒有正確的處理網路分割的問題;而在雲端,網路分割問題跟其他類型的 故障一樣的確會發生;所以最好提前對這個問題做好100%的准備。就像 Jepsen在 ZooKeeper網站上發布的博客中所說:在ZooKeeper中,如果在同一個網路分區(partition)的節點數(nodes)數達不到 ZooKeeper選取Leader節點的「法定人數」時,它們就會從ZooKeeper中斷開,當然同時也就不能提供Service發現服務了。 如果給ZooKeeper加上客戶端緩存(註:給ZooKeeper節點配上本地緩存)或者其他類似技術的話可以緩解ZooKeeper因為網 絡故障造成節點同步信息錯誤的問題。 Pinterest與 Airbnb公 司就使用了這個方法來防止ZooKeeper故障發生。這種方式可以從表面上解決這個問題,具體地說,當部分或者所有節點跟ZooKeeper斷開的情況 下,每個節點還可以從本地緩存中獲取到數據;但是,即便如此,ZooKeeper下所有節點不可能保證任何時候都能緩存所有的服務注冊信息。如果 ZooKeeper下所有節點都斷開了,或者集群中出現了網路分割的故障(註:由於交換機故障導致交換機底下的子網間不能互訪);那麼ZooKeeper 會將它們都從自己管理范圍中剔除出去,外界就不能訪問到這些節點了,即便這些節點本身是「健康」的,可以正常提供服務的;所以導致到達這些節點的服務請求 被丟失了。(註:這也是為什麼ZooKeeper不滿足CAP中A的原因) 更深層次的原因是,ZooKeeper是按照CP原則構建的,也就是說它能保證每個節點的數據保持一致,而為ZooKeeper加上緩存的做法 的 目的是為了讓ZooKeeper變得更加可靠(available);但是,ZooKeeper設計的本意是保持節點的數據一致,也就是CP。所以,這樣 一來,你可能既得不到一個數據一致的(CP)也得不到一個高可用的(AP)的Service發現服務了;因為,這相當於你在一個已有的CP系統上強制栓了 一個AP的系統,這在本質上就行不通的!一個Service發現服務應該從一開始就被設計成高可用的才行! 如果拋開CAP原理不管,正確的設置與維護ZooKeeper服務就非常的困難;錯誤會 經常發生, 導致很多工程被建立只是為了減輕維護ZooKeeper的難度。這些錯誤不僅存在與客戶端而且還存在於ZooKeeper伺服器本身。Knewton平台 很多故障就是由於ZooKeeper使用不當而導致的。那些看似簡單的操作,如:正確的重建觀察者(reestablishing watcher)、客戶端Session與異常的處理與在ZK窗口中管理內存都是非常容易導致ZooKeeper出錯的。同時,我們確實也遇到過 ZooKeeper的一些經典bug: ZooKeeper-1159 與 ZooKeeper-1576; 我們甚至在生產環境中遇到過ZooKeeper選舉Leader節點失敗的情況。這些問題之所以會出現,在於ZooKeeper需要管理與保障所管轄服務 群的Session與網路連接資源(註:這些資源的管理在分布式系統環境下是極其困難的);但是它不負責管理服務的發現,所以使用ZooKeeper當 Service發現服務得不償失。 做出正確的選擇:Eureka的成功 我們把Service發現服務從ZooKeeper切換到了Eureka平台,它是一個開 源的服務發現解決方案,由Netflix公司開發。(註:Eureka由兩個組件組成:Eureka伺服器和Eureka客戶端。Eureka伺服器用作 服務注冊伺服器。Eureka客戶端是一個java客戶端,用來簡化與伺服器的交互、作為輪詢負載均衡器,並提供服務的故障切換支持。)Eureka一開 始就被設計成高可用與可伸縮的Service發現服務,這兩個特點也是Netflix公司開發所有平台的兩個特色。( 他們都在討論Eureka)。自從切換工作開始到現在,我們實現了在生產環境中所有依賴於Eureka的產品沒有下線維護的記錄。我們也被告知過,在雲平 台做服務遷移註定要遇到失敗;但是我們從這個例子中得到的經驗是,一個優秀的Service發現服務在其中發揮了至關重要的作用! 首先,在Eureka平台中,如果某台伺服器宕機,Eureka不會有類似於ZooKeeper的選舉leader的過程;客戶端請求會自動切 換 到新的Eureka節點;當宕機的伺服器重新恢復後,Eureka會再次將其納入到伺服器集群管理之中;而對於它來說,所有要做的無非是同步一些新的服務 注冊信息而已。所以,再也不用擔心有「掉隊」的伺服器恢復以後,會從Eureka伺服器集群中剔除出去的風險了。Eureka甚至被設計用來應付范圍更廣 的網路分割故障,並實現「0」宕機維護需求。當網路分割故障發生時,每個Eureka節點,會持續的對外提供服務(註:ZooKeeper不會):接收新 的服務注冊同時將它們提供給下游的服務發現請求。這樣一來,就可以實現在同一個子網中(same side of partition),新發布的服務仍然可以被發現與訪問。 但是,Eureka做到的不止這些。正常配置下,Eureka內置了心跳服務,用於淘汰一些「瀕死」的伺服器;如果在Eureka中注冊的服 務, 它的「心跳」變得遲緩時,Eureka會將其整個剔除出管理范圍(這點有點像ZooKeeper的做法)。這是個很好的功能,但是當網路分割故障發生時, 這也是非常危險的;因為,那些因為網路問題(註:心跳慢被剔除了)而被剔除出去的伺服器本身是很」健康「的,只是因為網路分割故障把Eureka集群分割 成了獨立的子網而不能互訪而已。 幸運的是,Netflix考慮到了這個缺陷。如果Eureka服務節點在短時間里丟失了大量的心跳連接(註:可能發生了網路故障),那麼這個 Eureka節點會進入」自我保護模式「,同時保留那些「心跳死亡「的服務注冊信息不過期。此時,這個Eureka節點對於新的服務還能提供注冊服務,對 於」死亡「的仍然保留,以防還有客戶端向其發起請求。當網路故障恢復後,這個Eureka節點會退出」自我保護模式「。所以Eureka的哲學是,同時保 留」好數據「與」壞數據「總比丟掉任何」好數據「要更好,所以這種模式在實踐中非常有效。 最後,Eureka還有客戶端緩存功能(註:Eureka分為客戶端程序與伺服器端程序兩個部分,客戶端程序負責向外提供注冊與發現服務接 口)。 所以即便Eureka集群中所有節點都失效,或者發生網路分割故障導致客戶端不能訪問任何一台Eureka伺服器;Eureka服務的消費者仍然可以通過 Eureka客戶端緩存來獲取現有的服務注冊信息。甚至最極端的環境下,所有正常的Eureka節點都不對請求產生相應,也沒有更好的伺服器解決方案來解 決這種問題時;得益於Eureka的客戶端緩存技術,消費者服務仍然可以通過Eureka客戶端查詢與獲取注冊服務信息,這點很重要。 Eureka的構架保證了它能夠成為Service發現服務。它相對與ZooKeeper來說剔除了Leader節點的選取或者事務日誌機制, 這 樣做有利於減少使用者維護的難度也保證了Eureka的在運行時的健壯性。而且Eureka就是為發現服務所設計的,它有獨立的客戶端程序庫,同時提供心 跳服務、服務健康監測、自動發布服務與自動刷新緩存的功能。但是,如果使用ZooKeeper你必須自己來實現這些功能。Eureka的所有庫都是開源 的,所有人都能看到與使用這些源代碼,這比那些只有一兩個人能看或者維護的客戶端庫要好。 維護Eureka伺服器也非常的簡單,比如,切換一個節點只需要在現有EIP下移除一個現有的節點然後添加一個新的就行。Eureka提供了一 個 web-based的圖形化的運維界面,在這個界面中可以查看Eureka所管理的注冊服務的運行狀態信息:是否健康,運行日誌等。Eureka甚至提供 了Restful-API介面,方便第三方程序集成Eureka的功能。
㈢ bbo使用zookeeper連接,zookeeper宕機後怎麼處理
zookeeper宕機後,因為消費者會緩存提供者的信息,所以應用不會有問題。但是,此時提供者和消費者都無法重連zookeeper,因為bbo貌似配置的zkclient不會重連zookeeper,所以一旦重啟一台服務提供者,那麼這台就從服務消費者的緩存中消失了,此時服務消費者又連不上zookeeper,所以如果同時重啟,消費者就沒有提供者可用了,所以只能重啟一台提供者後,再重啟一個消費者,交錯重啟。
㈣ 如果 zookeeper掛了 我們以前調用過的 服務 還能用嗎是不是緩存在本地
可以的,啟動bbo時,消費者會從zk拉取注冊的生產者的地址介面等數據,緩存在本地。每次調用時,按照本地存儲的地址進行調用
注冊中心對等集群,任意一台宕掉後,會自動切換到另一台注冊中心全部宕掉,服務提供者和消費者仍可以通過本地緩存通訊
服務提供者無狀態,任一台 宕機後,不影響使用服務提供者全部宕機,服務消費者會無法使用,並無限次重連等待服務者恢復
㈤ 為什麼bbo使用zkclient作為zookeeper的客戶端
本文內容並非原創,使用資料均來自互聯網。
bbo使用了zkClient而不是使用zookeeper本身的客戶端與zookeeper進行交互,為什麼呢?
先看看zookeeper本身自帶的客戶端的問題。
1 ) ZooKeeper的Watcher是一次性的,用過了需要再注冊;
2 )
session的超時後沒有自動重連,生產環境中如果網路出現不穩定情況,那麼這種情況出現的更加明顯;
3
)
沒有領導選舉機制,集群情況下可能需要實現stand by,一個服務掛了,另一個需要接替的效果;
4
) 客戶端只提供了存儲byte數組的介面,而項目中一般都會使用對象。
5 )客戶端介面需要處理的異常太多,並且通常,我們也不知道如何處理這些異常。
I0Itec這個zookeeper客戶端基本上解決了上面的所有問題,主要有以下特性:
1) 提供了zookeeper重連的特性------能夠在斷鏈的時候,重新建立連接,無論session失效與否.
2) 持久的event監聽器機制------ ZKClient框架將事件重新定義分為了stateChanged、znodeChanged、dataChanged三種情況,用戶可以注冊這三種情況下的監聽器(znodeChanged和dataChanged和路徑有關),而不是注冊Watcher。
3) zookeeper異常處理-------zookeeper中繁多的Exception,以及每個Exception所需要關注的事情各有不同,I0Itec簡單的做了封裝.
4) data序列化------簡單的data序列化.(Serialzer/Deserialzer)
5)有默認的領導選舉機制
請注意使用I0Itect-zkClient暫時有幾個方法仍需要重寫:
1) create方法 : 創建節點時,如果節點已經存在,仍然拋出NodeExistException,可是我期望它不在拋出此異常.
2) retryUtilConnected : 如果向zookeeper請求數據時(create,delete,setData等),此時鏈接不可用,那麼調用者將會被阻塞直到鏈接建立成功;不過我仍然需要一些方法是非阻塞的,如果鏈接不可用,則拋出異常,或者直接返回.
3) create方法 : 創建節點時,如果節點的父節點不存在,我期望同時也要創建父節點,而不是拋出異常.
4) data監測: 我需要提供一個額外的功能來補充watch的不足,開啟一個線程,間歇性的去zk server獲取指定的path的data,並緩存起來..歸因與watch可能丟失,以及它不能持續的反應znode數據的每一次變化,所以只能手動去同步獲取。
㈥ java zookeeper怎麼清除緩存
掌握zookeeper事件監聽機制,非常重要,可以說是跨入了進階的門檻,只有掌握了如何監聽某個節點或路徑,我們才能在節點變化後,做一些我們想做的事,包括: 1,配置文件同步 2,主從切換 3,分布式隊列 4,分布式鎖
㈦ bbo使用zookeeper連接,zookeeper宕機後怎麼處理
1、配置文件同步
2、主從切換
3、分布式隊列
4、分布式鎖
㈧ 那 如果 zookeeper 掛了 我們以前調用過的 服務 還能用嗎是不是緩存在本地
不可用了,zk是強一致性
㈨ 為什麼不使用ZooKeeper
ZooKeeper作為發現服務的問題;
ZooKeeper(註:ZooKeeper是著名Hadoop的一個子項目,旨在解決大規模分 布式應用場景下,服務協調同步(Coordinate Service)的問題;
它可以為同在一個分布式系統中的其他服務提供:統一命名服務、配置管理、分布式鎖服務、集群管理等功能)是個偉大的開源項目;
有相當大的社區來支持它的發展,而且在生產環境得到了廣泛的使用;但是用它來Service發現服務解決方案則是個錯誤。
㈩ zookeeper 節點 是緩存嗎
Zookeeper作為一個分布式的服務框架,主要用來解決分布式集群中應用系統的一致性問題,它能提供基於類似於文件系統的目錄節點樹方式的數據存儲,但是Zookeeper並不是用來專門存儲數據的,它的作用主要是用來維護和監控你存儲的數據的狀態變化。...