摘要:Spring 结合 Dubbo,SpringBoot 结合 Dubbo
dubbo —— one day
dubbo官方网站:Apache Dubbo
Java微服务快速开始文档:Dubbo 入门 | Apache Dubbo
环境搭建
- 搭建注册中心 zookeeper
- 搭建管理控制台
搭建zookeeper
官网下载zookeeper,安装
在bin目录下的命令提示符下运行 zkServer.cmd
修改 环境变量 jdk的值,编辑变量,将最后的分号删除即可
- 修改zookeeper配置文件,/conf/zoo-sample.conf修改为zoo.conf,编辑该文件,datadir=当前的安装目录下的新建的文件夹data
- 启动zkserver
安装监控中心
进入dubboGitHub仓库
找到管理员控制台apache/dubbo-admin: The ops and reference implementation for Apache Dubbo (github.com)
- 下载压缩包,解压
- 找到 dubbo-admin,检查项目中的配置文件,properties.xml中的zookeeper地址是否正确,127.0.0.1:2181
- 在dubbo-admin的安装目录下,执行cmd ,执行 mvn clean package
创建服务提供者、服务消费者和公共接口
公共接口存放服务的接口和服务的模型、异常等
服务提供者和服务消费者存放对应接口的实现类,各自POM文件中引入公共接口的依赖
此时服务消费者仍然不能直接调用服务提供者的服务接口
将服务提供者注册到注册中心zookeeper
服务提供者引入Dubbo依赖
引入搭建的注册中心的客户端(zookeeper,nacos)对应的依赖
创建配置文件
添加dubbo的命名空间,可以有提示interface写的是公共接口中的接口
ref写真正实现的服务的对现象
将真正的实现类交给容器管理
加载Spring的配置
配置服务消费者
引入dubbo依赖
创建spring配置文件
配置注册中心的远程地址
<dubbo:application name="order-service-consumer"></dubbo:application>
<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry
声明需要调用的远程服务的接口;生成远程服务代理
引用服务提供者暴露的接口
<dubbo:reference interface="服务提供者暴露给注册中心的接口" id="userService"></dubbo:reference>
服务消费者调用注入容器的bean
添加spring启动类,根据类路径加载spring配置文件,创建容器
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(“配置文件.xml”)OrderService orderService = applicationContext.getBean(OrderService.class);
orderService.initOrder(“1”);
System.in.read();
安装dubbo监控中心
dubbo-monitor-simple
进入根目录,使用mvn clean package打包监控中心
打包成功之后,target目录下有一个打包好的jar包,和一个压缩的jar包
将压缩的jar包解压出来
检查修改其中的配置文件中的注册中心的地址是不是与我们的注册中心地址一致
记录我们监控中心的端口号jetty.port=8080web端口
protocol.port=7070 这是进行通信的接口
启动
进入assembly.bin
双击start.bat 启动
浏览器上访问localhost:8080端口
监控中心监控服务
在消费者和提供者的配置文件中,添加配置
<dubbo:monitor protocol="registry"></dubbo:monitor>
自动发现监控中心
直连
<dubbo:monitor address="127.0.0.1:7070"></dubbo:monitor>
分别启动消费者和提供者的启动类
再一次进入网址刷新
dubbo —— 2day
⭐SpringBoot 结合 dubbo
服务提供者
创建spring boot项目
服务提供者导入dubbo-spring-boot-starter
根据springboot的版本选择dubbo-starter的版本,大于2.0选择dubbo-starter0.2.0版本
导入dubbo的其他依赖
创建配置文件
内容根据spring的配置方法相对应的配置
基础配置
随着项目的增大,要暴露的服务越来越多
在实现类的开头添加注解 @Service 这是dubbo提供的注解
spring
服务提供者暴露服务需要两步
- 在spring配置文件中添加标签
<dubbo:service interface= ref= ></dubbo:service>
,interface填暴露的服务接口,来自公共接口;ref指向真正的服务提供者的对应的实现类- 使用bean标签,将服务接口UserService接口实现类UserServiceImpl注入到容器中,
要与spring提供的@Service 区分开(可以使用@Component )
此时就暴露服务,相比使用配置文件的方式方便了许多
在启动类上添加Springboot的基于注解的dubbo功能的注解 @EnableDubbo
服务消费者
创建spring boot web 项目
导入dubbo-spring-boot-starter依赖
服务消费者的application.properties文件中配置基本的名称,注册中心的地址,通信协议
在消费者的实现类中,将之前通过自动注入提供者的服务接口注解改为 @Reference
远程的调用注册中心的服务提供者暴露的接口spring
消费者引入暴露的接口需要两步
配置文件中添加
<dubbo:reference></dubbo:reference>
标签,引用服务提供者暴露的接口在消费者的实现类中添加注入服务提供者的bean
@Bean
private UserService userService;
创建controller
在服务的消费者的启动类中,添加启动dubbo的注解 @EnableDubbo 注解
由于springboot web项目 默认使用的是tomcat服务器,端口默认是8080;与我们的监控中心的jetty端口冲突;修改端口号为808
启动
❗关键三步
pom文件中添加dubbo-spring-boot-starter依赖
在配置文件中,添加服务提供者或者消费者需要的配置
提供者
dubbo.application.name
dubbo.registry.address
// 通信协议
dubbo.protocol.name=dubbo // 通信协议端口名
dubbo.protocol.port=20880 // 通信协议端口
// 监控中心,自动发现
dubbo.monitor.protocol=registry
消费者
dubbo.application.name
dubbo.registry.address
dubbo.monitor.protocol
提供者暴露服务直接在服务接口实现类中添加注解 @Service (dubbo)即可;消费者引用服务,在消费者实现类中,原本通过@Bean注入方式调用服务的方法改为 @Reference