Apache Dubbo實踐:15分鐘構建分佈式集群服務

Apache Dubbo讓調用遠程方法像調用本地一樣。

Apache Dubbo實踐:15分鐘構建分佈式集群服務

相信很多小夥伴都知道,最近很流行使用springcloud,全家桶用起來不亦樂乎。但是本文介紹的恰巧相反,是阿里巴巴開源的一款性能優異的分佈式RPC框架。隨著阿里巴巴重新維護Apache Dubbo,相信會有越來越多的小夥伴會接觸到並喜歡上它。本文介紹的是2.7.1版本Dubbo,結合springboot使用註解方式開發,註冊中心使用Zookeeper 3.4.11,快速開發你的分佈式集群服務。

Dubbo架構

Apache Dubbo實踐:15分鐘構建分佈式集群服務

Provider:服務提供方。比如電商系統中的用戶服務、訂單服務、支付服務、庫存服務、日誌服務等等。

Consumer:服務消費方。消費方通過註冊中心訂閱服務,調用服務提供方。

Registry:註冊中心。比如Zookeeper,進行服務註冊與發現。

Monitor:監控中心。統計服務調用次數和時間。

服務提供方在啟動服務時,向註冊中心註冊自己提供的服務。服務消費方在啟動服務時,向註冊中心訂閱自己所需要消費的服務。

讓咱們來一起做個Demo吧!

搭建父工程 dubbo-all

新建maven父工程dubbo-all,子模塊有三個:

dubbo-demo-api
dubbo-demo-provider(springboot工程)
dubbo-demo-consumer(springboot工程)

dubbo-demo-api中定義服務提供接口,dubbo-demo-provider中做實現。dubbo-demo-consumer為服務消費方,調用dubbo-demo-provider提供的服務。

Apache Dubbo實踐:15分鐘構建分佈式集群服務

父工程dubbo-all pom文件如下:


 4.0.0
 
 2.1.1.RELEASE
 2.7.1
 
 
 org.springframework.boot
 spring-boot-starter-parent
 2.1.5.RELEASE
   
 
 com.dubbo.demo
 dubbo-all
 1.0-SNAPSHOT
 pom
 
 dubbo-demo-api
 dubbo-demo-provider
 dubbo-demo-consumer
 

服務接口 dubbo-demo-api

在dubbo-demo-api工程中定義接口方法sayHello()如下:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

pom文件如下:(依賴版本應該定義在父工程中)


 4.0.0
 
 com.dubbo.demo
 dubbo-all
 1.0-SNAPSHOT
 
 com.dubbo.demo.api
 dubbo-demo-api
 1.0.0
 dubbo-demo-api
 Demo project for Spring Boot
 
 1.8
 
 
 
 org.springframework.boot
 spring-boot-starter-web
 
 
 org.springframework.boot
 spring-boot-starter-test
 test
 
 
 org.apache.dubbo
 dubbo
 2.7.1
 
 
 org.apache.zookeeper
 zookeeper
 3.4.13
 
 
 org.apache.curator
 curator-framework
 2.8.0
 
 
 org.apache.curator
 curator-recipes
 2.8.0
 
 
 
 
 
 org.springframework.boot
 spring-boot-maven-plugin
 
 
 

服務提供方 dubbo-demo-provider

在dubbo-demo-provider中引入dubbo-demo-api依賴,實現sayHello接口:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

注意需在springboot啟動類中加入@EnableDubbo註解

Apache Dubbo實踐:15分鐘構建分佈式集群服務

dubbo-demo-provider pom文件如下:


 4.0.0
 
 com.dubbo.demo
 dubbo-all
 1.0-SNAPSHOT
 
 com.dubbo.demo.provider
 dubbo-demo-provider
 1.0.0
 dubbo-demo-provider
 provider project for Spring Boot
 
 1.8
 
 
 
 org.springframework.boot
 spring-boot-starter
 
 
 org.springframework.boot
 spring-boot-starter-test
 test
 
 
 com.dubbo.demo.api
 dubbo-demo-api
 1.0.0
 
 
 
 
 
 org.springframework.boot
 spring-boot-maven-plugin
 
 
 

dubbo-demo-provider 配置文件如下:

application.yml

spring:
 application:
 name: dubbo-demo-provider
server:
 port: 8088
dubbo:
 application:
 name: dubbo-demo-provider
 registry:
 address: zookeeper://localhost:2181
 protocol:
 name: dubbo
 port: 20880

服務消費方 dubbo-demo-consumer

此時我們便可以在consumer中注入HelloService接口,遠程調用sayHello方法。


Apache Dubbo實踐:15分鐘構建分佈式集群服務

dubbo-demo-consumer中引入dubbo-demo-api依賴,pom文件如下:


 4.0.0
 
 com.dubbo.demo
 dubbo-all
 1.0-SNAPSHOT
 
 com.dubbo.demo.consumer
 dubbo-demo-consumer
 0.0.1-SNAPSHOT
 dubbo-demo-consumer
 Consumer project for Spring Boot
 
 1.8
 
 
 
 org.springframework.boot
 spring-boot-starter
 
 
 org.springframework.boot
 spring-boot-starter-test
 test
 
 
 com.dubbo.demo.api
 dubbo-demo-api
 1.0.0
 
 
 
 
 
 org.springframework.boot
 spring-boot-maven-plugin
 
 
 

dubbo-demo-consumer 配置文件如下:

application.yml

spring:
 application:
 name: dubbo-demo-consumer
server:
 port: 8089
dubbo:
 application:
 name: dubbo-demo-consumer
 registry:
 address: zookeeper://localhost:2181
 protocol:
 name: dubbo
 port: 20880

開發步驟到此完成。

註冊中心 Zookeeper

下載zookeeper解壓到本地,在conf目錄下新建zoo.cfg文件,啟動zookeeper。注意:使用JAVA8沒有配置環境變量的小夥伴,啟動Zookeeper可能會報錯。建議配置一下環境變量。假如實在不想配置,可更改bin目錄下zkEnv.cmd文件,去掉java home校驗,設置JAVA目錄如下:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

啟動zookeeper:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

驗證結果

啟動服務提供方dubbo-demo-provider:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

啟動服務消費方dubbo-demo-consumer:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

在瀏覽器中訪問服務消費方提供的地址:

http://localhost:8089/test/sayHello

可以看到服務遠程調用成功!


Apache Dubbo實踐:15分鐘構建分佈式集群服務

服務監控 dubbo-admin

平常大家啟動dubbo-admin基本都是下載dubbo-admin代碼打成war包部署到tomcat上。本次展示springboot版本dubbo-admin,無需打包。

上Github找到dubbo-admin,下載master分支代碼。(要求使用dubbo 2.6版本以上)

https://github.com/apache/incubator-dubbo-admin
Apache Dubbo實踐:15分鐘構建分佈式集群服務

將下載好的代碼導入IntelliJ IDE中:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

更改application.properties文件中用戶名密碼:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

啟動dubbo-admin springboot工程:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

在瀏覽器中輸入地址:(端口可自行更改)

http://localhost:7001

輸入用戶名密碼:

Apache Dubbo實踐:15分鐘構建分佈式集群服務

登陸之後即可對咱們的服務進行管理,比如升降權等。

Apache Dubbo實踐:15分鐘構建分佈式集群服務


Apache Dubbo實踐:15分鐘構建分佈式集群服務

原創不易,客觀點個贊吧!


分享到:


相關文章: