Dubbo基本原理介紹

前言

Apache Dubbo是阿里巴巴開源的一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。

它有如下特性:

  • 面向接口代理的高性能RPC調用

提供高性能的基於代理的遠程調用能力,服務以接口爲粒度,爲開發者屏蔽遠程調用底層細節。

  • 智能負載均衡

內置多種負載均衡策略,智能感知下游節點健康狀況,顯著減少調用延遲,提高系統吞吐量。

  • 服務自動註冊與發現

支持多種註冊中心服務,服務實例上下線實時感知。

  • 高度可擴展能力

遵循微內核+插件的設計原則,所有核心能力如Protocol、Transport、Serialization被設計爲擴展點,平等對待內置實現和第三方實現。

  • 運行期流量調度

內置條件、腳本等路由策略,通過配置不同的路由規則,輕鬆實現灰度發佈,同機房優先等功能。

  • 可視化的服務治理與運維

提供豐富服務治理、運維工具:隨時查詢服務元數據、服務健康狀態及調用統計,實時下發路由策略、調整配置參數。

 

 

一、dubbo的結構

下圖示dubbo官網介紹的結構圖:

dubbo-結構

節點角色說明:

Container:服務運行容器 
Provideer:服務提供方 
Consumer:服務消費方 
Registry:註冊中心 
Monitor:統計服務調用次數和時間的監控中心

調用關係說明: 
0、服務容器負責加載、啓動、運行服務提供者。 
1、服務提供者啓動時,向註冊中心註冊自己提供的服務 。
2、服務消費者啓動時,向註冊中心訂閱自己需要的服務 。
3、註冊返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。 
4、服務消費者,從提供者地址列表中,通過軟負載均衡方法,選擇一個服務提供方調用服務,調用失敗在選擇另一臺(集羣容錯) 。
5、服務消費方和服務方,將調用次數和時間存儲到內存中,定時一分鐘發送給監控中心。

 

二、dubbo服務治理系統架構

dubbo架構圖

 

 

三、dubbo基本註解配置

服務提供者:

<!-- 服務應用名 -->
<dubbo:application name="gmall-user"></dubbo:application>

<!-- 使用zookeeper作爲註冊中心及地址和端口 --> 
<dubbo:registry address="zookeeper://118.24.44.169:2181" />

<dubbo:protocol name="dubbo" port="20880" />

<dubbo:annotation package="com.atguigu.gmall.user.impl"/>

<!-- 具體的實現bean --> 
<bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />  
 
<!-- 聲明需要暴露的服務接口  --> 
<dubbo:service interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />  

服務消費者:

<!-- 服務應用名 -->
<dubbo:application name="gmall-user"></dubbo:application>

<!-- 使用zookeeper作爲註冊中心及地址和端口 --> 
<dubbo:registry address="zookeeper://118.24.44.169:2181" />

<dubbo:protocol name="dubbo" port="20880" />

<dubbo:annotation package="com.atguigu.gmall.user.impl"/>

<!-- 具體的實現bean --> 
<bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />  
 
<!-- 聲明需要暴露的服務接口  --> 
<dubbo:reference interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />  

 

關注公衆號:nick_coding1024

覺得對你有幫助,關注博客和公衆號。不定期分享最新前沿技術框架和bat大廠常用技術等,加羣不定期分享行業內大牛直播講課以及獲得視頻課件資料等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章