1. 程式人生 > >菜鳥學習Dubbo

菜鳥學習Dubbo

資源利用率 borde nco 發現 name 結果 ren 分布式架構 無法

一.什麽是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"> <!-- 配置包掃描器,[email protected] --> <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和註冊中心之後介紹。

菜鳥學習Dubbo