1. 程式人生 > >Dubbo-一個分散式服務框架

Dubbo-一個分散式服務框架

Dubbo的簡單介紹

  • Dubbo是一個分散式服務框架,致力於提供高效能和透明化的RPC遠端服務呼叫方案,說的簡單點,其最最最基本作用就是:高效的應用程式之間的通訊。如果服務越來越多,容量的評估,小服務資源的浪費等問題,這時Dubbo就是資源排程和治理中心的管理工具。

Dubbo的架構

架構圖如下

在這裡插入圖片描述

節點角色說明

  • Provider:暴露服務的服務提供方
  • Consummer:呼叫遠端服務的服務消費方
  • Registry:服務註冊與發現的註冊中心
  • Monitor:統計服務的呼叫次數和通用時間的監控中心
  • Container:服務執行容器

呼叫關係說明

  • 0 服務容器負責啟動、載入、執行服務提供者;
  • 1 服務提供者在啟動時,向註冊中心註冊自己提供的服務;
  • 2 服務消費者在啟動時,向註冊中心訂閱自己所需的服務;
  • 3 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者;
  • 4 服務消費者,從提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,如果呼叫失敗,再選另一臺呼叫;
  • 5 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心。

Dubbo的核心

  • 遠端通訊:提供對多種基於長連線的NIO框架抽象封裝,包括多種執行緒模型、序列化以及“請求-響應”模式的資訊交換方式。
  • 叢集容錯:提供基於介面方法的透明遠端過程呼叫,包括多協議支援,以及軟負載均衡、失敗容錯、地址路由、動態配置等叢集支援。
  • 自動發現:基於註冊中心服務目錄,使服務消費方能動態的查詢服務提供方,使地址透明,使服務提供方可以平滑增加或者減少機器。

Dubbo的優點

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

Dubbo的使用

Dubbo採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring載入Dubbo的配置即可,Dubbo基於Spring的Schema擴充套件進行載入。

  1. 在spring的配置檔案中,加入如下兩行 在這裡插入圖片描述
  2. 在服務提供者的spring配置檔案中配置:
<!-- 使用dubbo釋出服務 -->
	<!-- 提供方應用資訊,用於計算依賴關係 -->
	<dubbo:application name="test" />
	<dubbo:registry protocol="zookeeper"
		address="***.**.**.:2181" />
	<!-- 用dubbo協議在20880埠暴露服務 -->
	<dubbo:protocol name="dubbo" port="20880" />
	<!-- 宣告需要暴露的服務介面 -->
	<dubbo:service interface="cn.test.edu.Service" ref="ServiceImpl" timeout="600000"/>
	
  1. 在服務消費者spring中配置:
<!-- 引用dubbo服務 -->
	<dubbo:application name="test-web"/>
	<dubbo:registry protocol="zookeeper" address="***.**.**.**:2181"/>	
	<dubbo:reference interface="cn.test.edu.service" id="Service" />

註冊中心-zookeeper

註冊中心負責服務地址的註冊於查詢,相當於目錄服務,服務提供者和消費者只在啟動時與註冊中心互動,註冊中心不轉發請求,壓力較小。使用dubbo-2.3.3 以上版本,建議使用zookeeper註冊中心。 Zookeeper是Apacahe Hadoop 的子專案,是一個樹型的目錄服務,支援變更推送,適合作為Dubbo服務的註冊中心,工業強度較高,可用於生產環境,並推薦使用。 zookeeper的安裝與使用此處省略,請問度娘…

Dubbo的監控中心

  1. 網上找一個admin.war包,我用的dubbo-admin-2.5.4.war;
  2. 部署監控中心到tomcat,重啟tomcat;
  3. 訪問 http://xxx.xxx.xx.xx:8080/dubbo-admin/ 使用者名稱:root 密碼:root 注意:如果監控中心和註冊中心在同一臺伺服器上,可以不需要任何配置,如果不在同一臺伺服器,需要修改配置檔案:dubbo-admin/WEB-INF/dubbo.properties在這裡插入圖片描述