菜鳥學習Dubbo

一.什麼是dubbo?

    隨着互聯網的不斷髮展,網站的應用規模愈來愈大,常規的垂直架構已經沒法應對,尤爲是相似電商的項目,因此分佈式架構和流動計算架構已經勢在必行。
① 單一應用架構
    當網站很小時,只須要一個項目就能夠將全部功能部署到一塊兒,減小部署成本。
    此時用於簡化增刪改查工做量的數據訪問框架(ORM)是關鍵。
② 垂直應用架構
    當訪問量增大時,單一應用增長機器所帶來的加速愈來愈小,此時應當拆分單個項目爲互不相干的多個應用,提高效率。
    此時,加速前端頁面開發的web框架(MVC)是關鍵。
③ 分佈式服務架構
    當垂直應用愈來愈多,有不少相同的業務邏輯,這樣應用直接的交互不可避免,此時將核心業務抽取出來,做爲獨立的服務,逐 漸造成穩定的服務中心,以應對快速變化的外部市場環境。
    此時,用於提升業務複用整合的分佈式服務框架(RPC)是關鍵。
④ 流動計算架構
    當服務愈來愈多,容量的評估,小服務資源浪費等問題逐漸暴露,此時須要一個服務治理工具來管理集羣容量,提升利用率。
    此時,提升資源利用率的資源調度和服務治理中心(SOA)是關鍵。
 
而Dubbo就是資源調度和服務治理中心的管理工具。

二.爲何使用dubbo?

1.webservice:效率不高基於soap協議,項目中不建議使用,但它的優勢在於跨語言通訊,適用於不一樣公司相互調用接口。
2.使用restful形式服務:http+json。不少項目中的應用,若是服務太多,系統之間調用關係混亂,須要治療服務。
3.使用dubbo。使用rpc協議進行遠程調用,之間使用socket通訊,傳輸效率高,而且能夠統計出系統之間的調用關係、調用次數。
說白了dubbo就是一個服務治理工具,是一個服務的中間件,因爲dubbo是經過java編寫的,dubbo最大的缺點就出現了,它只適用於java系統間的通訊。

三.Dubbo的架構

角色說明
Provider:暴露服務的服務提供方
Container:服務運行容器
Consumer:調用服務的消費方
Registry:註冊服務與發現服務中心
Monitor:統計服務調用的監控中心(無關緊要)
調用關係說明
0:服務運行容器啓動,加載服務提供者
1:在啓動時告訴註冊中心服務方有什麼服務
2:消費者調用服務時,先到註冊中心訂閱所須要服務
3:註冊中心返回結果即該服務的地址
4:消費者經過地址調用服務(此時註冊中心沒用了)
5:服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次到監控中心

四.如何使用Dubbo

Dubbo使用Spring配置方式,只需用Spring加載Dubbo的配置便可。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
<!-- 配置包掃描器,掃描全部帶@Service註解的類 -->
<context:component-scan base-package="xxxx.service"/>
<!-- 發佈dubbo服務 -->
<!-- 提供方應用信息,用於計算依賴關係 -->
<dubbo:application name="xxxx" />
<!-- 註冊中心的地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.224.50:2181" />
<!-- 用dubbo協議在20880端口暴露服務 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 聲明須要暴露的服務接口 -->
<dubbo:service interface="xxxx.ItemService" ref="itemServiceImpl" timeout="300000"/>
<dubbo:service interface="xxxx.ItemCatService" ref="itemCatServiceImpl" timeout="300000"/>
</beans>

 

首先引入Dubbo的dtd文件頭,上述配置文件爲服務提供者,經過zookeeper暴露服務,timeout=「300000」爲debug調試時候使用。下面則是消費者引用dubbo服務。
<!-- 引用dubbo服務 -->
<dubbo:application name="xxxx"/>
<dubbo:registry protocol="zookeeper" address="192.168.224.50:2181" />
<dubbo:reference interface="xxxx.ItemService" id="itemService" />

 

Dubbo使用相對簡單,只是須要瞭解爲何使用Dubbo,在什麼狀況下使用Dubbo便可,如何搭建Dubbo和註冊中心以後介紹。
相關文章
相關標籤/搜索