Dubbo簡介
Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。
Dubbo架構
節點角色說明
節點 | 角色說明 |
---|---|
Provider |
暴露服務的服務提供方 |
Consumer |
調用遠程服務的服務消費方 |
Registry |
服務註冊與發現的註冊中心 |
Monitor |
統計服務的調用次數和調用時間的監控中心 |
Container |
服務運行容器 |
調用關係說明
- 服務容器負責啓動,加載,運行服務提供者。
- 服務提供者在啓動時,向註冊中心註冊自己提供的服務。
- 服務消費者在啓動時,向註冊中心訂閱自己所需的服務。
- 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
- 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
- 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
Dubbo 架構具有以下幾個特點,分別是連通性、健壯性、伸縮性、以及向未來架構的升級性。
快速體驗
快速體驗需要的資源:zookeeper、dubbo。
獲取資源:
zookeeper:https://zookeeper.apache.org/
dubbo:https://github.com/apache/dubbo
配置啓動zookeeper
進入conf目錄 ..\zookeeper-3.4.11\conf 修該zoo.cfg客戶端口:
clientPort=2181
啓動bin\zkcli.cmd 和bin\zkserver.cmd
導入啓動dubbo
使用maven或者IDE解決maven依賴。官方提供的dubbo中有demo:(基於Spring)
demo提供三種開發方式:基於註解的、基於dubboAPI的和基於xml的,我們以基於xml爲例進行修改並運行:
提供商和消費者都註冊到zookeeper
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
和zookeeper保持一致哈
提供商暴露服務
dubbo-provider.xml加入配置
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/>
消費者訂閱服務需求
dubbo-consumer.xml加入配置
<dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.demo.DemoService"/>
模塊說明
由interface模塊提供接口,提供方模塊對接口進行實現,並將實現類進行bean註冊對外提供服務:
<!--我的服務提供者註冊-->
<bean id="myService" class="org.apache.dubbo.demo.provider.MyServiceImpl"/>
<!-- 我的服務提供者-->
<dubbo:service interface="org.apache.dubbo.demo.MyService" ref="myService"/>
在消費模塊訂閱需求:
<!--我的服務消費者-->
<dubbo:reference interface="org.apache.dubbo.demo.MyService" id="myService" check="false"/>