Dubbo簡單介紹及其和zookeeper的關系


何為Dubbo

​  Dubbox 是一個分布式服務框架,其前身是阿里巴巴開源項目Dubbo ,被國內電商及互聯網項目中使用,后期阿里巴巴停止了該項目的維護,當當網便在Dubbo基礎上進行優化,並繼續維護,為了與原有的Dubbo區分,故將其命名為Dubbox

​  Dubbox 致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbox就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbox這樣的分布式服務框架的需求,並且本質上是個服務調用的東西,說白了就是個遠程服務調用的分布式框架。

  SOA是Service-Oriented Architecture的首字母簡稱,它是一種支持面向服務的架構樣式。從服務、基於服務開發和服務的結果來看,面向服務是一種思考方式。

 

Dubbo能做什么?

最簡單直接的說法就是:dubbo本身是一個程序,在開發中作為jar包供我們使用,dubbo為我們做的就是根據服務的url去調用服務(基於rpc協議的調用)。

透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。      
軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,降低成本,減少單點。
服務自動注冊與發現,不再需要寫死服務提供方地址,注冊中心基於接口名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。

 

Dubbo基於RPC(Remote Procedure Call 遠程過程調用)協議,服務提供方和服務消費方之間的調用關系:

節點角色說明:

  • Provider: 暴露服務的服務提供方。

  • Consumer: 調用遠程服務的服務消費方。

  • Registry: 服務注冊與發現的注冊中心。

  • Monitor: 統計服務的調用次調和調用時間的監控中心。

  • Container: 服務運行容器。

調用關系說明:

  1. 服務容器負責啟動,加載,運行服務提供者。

  2. 服務提供者在啟動時,向注冊中心注冊自己提供的服務

  3. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務

  4. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基於長連接推送變更數據給消費者。

  1. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。

  1. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鍾發送一次統計數據到監控中心。

 

Dubbo 屬於 RPC 框架,連接消費者和生產者,注冊中心 監控被調用對象的運行狀態

Dubbo提供的注冊中心有如下幾種類型可供選擇:

  • Multicast注冊中心
  • Zookeeper注冊中心
  • Redis注冊中心
  • Simple注冊中心

 

dubbo和zookeeper的關系:

對於注冊中心的選擇,我們一般用Zookeeper,那么zookeeper和dubbo的關系是怎么樣的

上面這個圖如果看不太懂的話,建議看一下 ZooKeeper的數據模型 ,這里簡單解釋一下:

zookeeper的數據模型跟我們windows系統下的文件模型相似,都是樹形結構的;

  windows下的文件系統有文件夾和文件兩種,文件夾只是路徑,文件才是存儲體;

  而zookeeper的數據模型也是樹結構的,每個節點叫做znode,每個znode既可以存儲數據也可以當做路徑

 

樹形結構的節點都是唯一的,而上面這個圖上的綠色圓點都是zookeeper中的一個znode,每個znode都有自己的路徑和自己的值,存儲着我們dubbo注冊的service信息,而上面這張圖的znode分為4級(root、service、type、url):

  • 一級節點root內存儲着dubbo,代表這個znode下的所有znode都是dubbo相關的
  • 二級節點service存儲着我們dubbo注冊到zk中的service名稱,每多注冊一個service服務,就會在dubbo這個znode下添加一個新的service節點
  • 三級節點type存儲着service類型,是提供者還是消費者
  • 四級節點url存儲着我們所注冊的服務的具體地址

dubbo就是通過這一層層的節點找到我們需要調用的url然后進行調用的。

 

zookeeper作為dubbo的注冊中心的角色使用

我們把提供者和消費者通過dubbo注冊到zookeeper這個注冊中心里,zookeeper中存儲的是服務的url的列表

通過消費者調用提供者服務的時候,會根據接口的名稱類型通過dubbo到zookeeper中找到對應的服務的url列表,zookeeper返回服務提供者地址列表給消費者

消費者從提供者地址列表中,基於軟負載均衡算法,選一台提供者進行調用(這個調用就是圖1 消費者和提供者的調用關系),如果調用失敗,再選另一台調用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM