天天看點

搭建JEESZ分布式架構4--Dubbo簡介

1.Dubbo是什麼?

Dubbo是一個分布式服務架構,緻力于提供高性能和透明化的RPC遠端服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務架構,如果沒有分布式的需求,其實是不需要用的,隻有在分布式的時候,才有dubbo這樣的分布式服務架構的需求,并且本質上是個服務調用的東東,說白了就是個遠端服務調用的分布式架構(告别WebService模式中的WSdl,以服務者與消費者的方式在dubbo上注冊)

其核心部分包含:

1. 遠端通訊: 提供對多種基于長連接配接的NIO架構抽象封裝,包括多種線程模型,序列化,以及“請求-響應”模式的資訊交換方式。

2. 叢集容錯: 提供基于接口方法的透明遠端過程調用,包括多協定支援,以及軟負載均衡,失敗容錯,位址路由,動态配置等叢集支援。

3. 自動發現: 基于注冊中心目錄服務,使服務消費方能動态的查找服務提供方,使位址透明,使服務提供方可以平滑增加或減少機器。

2.Dubbo能做什麼?

1.透明化的遠端方法調用,就像調用本地方法一樣調用遠端方法,隻需簡單配置,沒有任何API侵入。     

2.軟負載均衡及容錯機制,可在内網替代F5等硬體負載均衡器,降低成本,減少單點。

3. 服務自動注冊與發現,不再需要寫死服務提供方位址,注冊中心基于接口名查詢服務提供者的IP位址,并且能夠平滑添加或删除服務提供者。

Dubbo采用全spring配置方式,透明化接入應用,對應用沒有任何API侵入,隻需用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴充進行加載。

3.dubbo的架構

dubbo架構圖如下所示:

搭建JEESZ分布式架構4--Dubbo簡介

節點角色說明:

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

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

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

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

      Container: 服務運作容器。

這點我覺得非常好,角色分明,可以根據每個節點角色的狀态來确定該服務是否正常。

調用關系說明:

0 服務容器負責啟動,加載,運作服務提供者。

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

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

3. 注冊中心傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推送變更資料給消費者。

4. 服務消費者,從提供者位址清單中,基于軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。

5. 服務消費者和提供者,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計資料到監控中心。

dubbo的容錯性顯而易見,性能方面還沒有還得及測,我們系統某頁面需要掉5次接口,本來想建議做個緩存,但業務關系不能采納,還需要研究下dubbo的性能調優問題...

4.dubbo使用方法。

Dubbo采用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,隻需用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴充進行加載。如果不想使用Spring配置,而希望通過API的方式進行調用(不推薦)

下面我們一步一步的來剖解dubbo如何使用

想了解更多詳細請點選源碼位址擷取:mingli

有興趣的朋友們可以前往球球哦~一起分享學習技術:2042849237

請大家持續關注搭建分布式架構5--Dubbo管控台的安裝