Alibaba Dubbo工做原理(從問題出發,發散開來)【上】

Dubbo它最大的特色是按照分層的方式來架構:這樣可使得各個層之間解耦合。css

一、那麼各個層指的是什麼呢?java

答:從服務模型的角度來看,Dubbo採用的是一種很是簡單的模型:提供方提供服務,消費方消費服務,還有一箇中間商也就是接口層。spring

因此基於這一點能夠抽象出服務提供方(Provider)、tomcat

服務消費方(Consumer)、springboot

接口層(Interface)三個角色。如圖:架構

blob.png

二、怎麼實現Consumer經過Interface來訪問它的實現Provider?app

答:【Adubbo註冊中心】提到這個問題,咱們不得不先了解dubbo註冊中心分佈式

Dubbo的註冊中心有不少種,像Multicast、Zookeeper、Redis、Simple等,Dubbo官方推薦使用Zookeeper註冊中心ide

【BZooKeeper】ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務【下篇講解並學習它】。學習

【Capplication.properties

要理解SpringBoot集成Dubbo application.properties配置文件,首先要理解SpringBoot依賴注入【在SpringBoot基礎裏面有講到】

spring.application.name=dubbo-auto-configuration-provider-demo
dubbo.scan.base-packages=com.css.*.provider
dubbo.protocol.name=dubbo
dubbo.protocol.port=12345
dubbo.registry.address=zookeeper://xxx.xxx.xxx.xxx:2181

【DProvider的application.properties配置文件

spring.application.name表示 【服務名】
dubbo.scan.base-packages提到這個我們不得不講講【dubbo整合springboot的三種方式】

【方式1】

導入dubbo-starter,在application.properties配置屬性,使用@Service暴露服務,使用@Reference引用服務

blob.png

blob.png


【方式2】保留dubbo的xml配置文件方式,能夠作到精確配置,首先導入dubbo-starter,而後只須要在啓動入口處加上:

 使用@ImportResource(locations="classpath:provider.xml")便可

 這種方式就不須要開啓@EnableDubbo註解了

【方式3】使用註解API的方式

  每個dubbo組件標籤手動建立到容器中,在一個被@configuration的java文件中建立每個標籤的方法,使用@Bean註解加載到spring容器,而後指定掃描包的路徑要包含這個java文件。

dubbo.protocol.name表示用dubbo協議暴露服務
dubbo.protocol.port表示用dubbo協議暴露服務的端口號
dubbo.registry.address表示使用暴露服務地址
【EConsumer的application.properties配置文件】
===
server.port由於dubbo集成tomcat,這裏代指tomcat中間件的端口號

三、怎麼實現Consumer調用遠程Interface來訪問它的本地實現Provider?

答:要想理解這個問題,我們得先理解Maven的倉庫和settings.xml配置文件,

blob.png

blob.png

blob.png

【配置完setting.xml以後】

咱們加入遠程Interface的依賴


<dependency>

    <groupId>com.framework.test.services</groupId>

    <artifactId>fmw-svc-deputies</artifactId>

    <version>1.0.0-SNAPSHOT</version>

</dependency>

此時Idea就經過設置,進行遠程調用

blob.png【接下來就是下載文件到本地的過程】

blob.png

相關文章
相關標籤/搜索