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分钟构建分布式集群服务

原创不易,客观点个赞吧!


分享到:


相關文章: