dubbo和zookeeper的關系是什么?下面本篇文章給大家介紹一下dubbo和zookeeper的關系。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
Dubbo建議使用Zookeeper作為服務的注冊中心。
1、Zookeeper的作用:
zookeeper用來注冊服務和進行負載均衡,哪一個服務由哪一個機器來提供必需讓調用者知道,簡單來說就是ip地址和服務名稱的對應關系。當然也可以通過硬編碼的方式把這種對應關系在調用方業務代碼中實現,但是如果提供服務的機器掛掉調用者無法知曉,如果不更改代碼會繼續請求掛掉的機器提供服務。zookeeper通過心跳機制可以檢測掛掉的機器并將掛掉機器的ip和服務對應關系從列表中刪除。至于支持高并發,簡單來說就是橫向擴展,在不更改代碼的情況通過添加機器來提高運算能力。通過添加新的機器向zookeeper注冊服務,服務的提供者多了能服務的客戶就多了。
2、dubbo的作用:
Dubbo是管理中間層的工具,在業務層到數據倉庫間有非常多服務的接入和服務提供者需要調度,dubbo提供一個框架解決這個問題。
注意這里的dubbo只是一個框架,至于你架子上放什么是完全取決于你的,就像一個汽車骨架,你需要配你的輪子引擎。這個框架中要完成調度必須要有一個分布式的注冊中心,儲存所有服務的元數據,你可以用zk,也可以用別的,只是大家都用zk。
3、zookeeper和dubbo的關系:
Dubbo將注冊中心進行抽象,使得它可以外接不同的存儲媒介給注冊中心提供服務。引入zookeeper作為存儲媒介,也就把zookeeper的特性引了進來。
-
首先是負載均衡:單注冊中心的承載能力是有限的,在流量達到一定程度的時候需要分流,負載均衡就是為了分流而存在的,一個zookeeper集群配合相應的web應用就很容易達到負載均衡;
-
資源同步:單單有負載均衡還不夠,節點之間的數據和資源是需要同步,zookeeper集群就天然具備有這樣的功能;
-
命名服務:將樹狀結構用于維護全局的服務地址列表,服務提供者在啟動的時候,向zookeeper上的指定節點目錄下寫入自己的URL地址,這個操作就完成了服務的發布
-
Mast:ZooKeeper能會保證客戶端無法創建一個已經存在的ZNode。也就是說,如果同時有多個客戶端請求創建同一個臨時節點,那么最終一定只有一個客戶端請求能夠創建成功。利用這個特性,就能很容易地在分布式環境中進行Master選舉了。
-
分布式鎖:分布式鎖是控制分布式系統之間同步訪問共享資源的一種方式。 當前獲得鎖的客戶端機器發生宕機或重啟,那么該臨時節點就會被刪除,釋放鎖。正常執行完業務邏輯后,客戶端就會主動將自己創建的臨時節點刪除,釋放鎖。