菜鳥學習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和注冊中心之后介紹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM