springboot整合dubbo和zookeeper

在做springboot整合dubbo前先要搭好zookeeper环境

 

我把zookeeper镜像安装在docker中,所以先启动docker(sudo service docker start),docker启动后,再在docker中启动zookeeper镜像(docker container start zookeeper),zookeeper启动后,这里我还用了可视化dubbo,即dubbo admin,如果已经有了dubbo admin 的包,那么java -jar  就可以跑起该服务,页面如下:

 

 

接下来可以正式开始整合了

 

dubbo的作用就是一个RPC框架,让一个服务能够远程调用另一个服务的方法并返回值。所以这里需要消费和,注册中心,提供者。

那么首先来配置提供者吧,提供者的目的就是将自己提供的服务注册到注册中心。所以我们需要知道注册中心的地址吧,我这里在服务者和提供者中都是用的yml方式,spring.dubbo.registry.address来声明注册中心的ip地址,port声明注册中心的端口,因为一台服务器会有多个端口,所以要自己声明暴露哪个端口。提供者还必须要提供自己所暴露的方法,这里用spring.dubbo.base-package来声明暴露的方法所在的包。同理提供者也要暴露端口。提供者的配置如下:

springboot整合dubbo和zookeeper

 

消费者的配置类似,如下:

springboot整合dubbo和zookeeper

 

 

如果一个module要能使用dubbo,必须使用这个注解:@EnableDubbo

假如消费者要远程调用提供者的方法,那么在消费者中就不能是@Autowired自动注入了,而是要使用@Reference远程引用。

我们知道一个类如果要想能够被自动注入,那么得使用注解@Service或者@Component,假如提供者想让消费者能够调用自己的类,那么这个时候使用@Service,注意,这里的@Service不是Spring家的,而是dubbo的,那么这个时候提供者也想要能够自动注入怎么办呢?那就是在使用一个@Component,如下:

springboot整合dubbo和zookeeper

 

为了解耦合,我们将提供者和消费者的共同接口放在一个新module(api)中,然后在提供者中只需要使用这个接口就好,注意,提供者和消费者都要依赖该api

springboot整合dubbo和zookeeper

 

还有一个要注意的是版本号,版本号的好处官方文档这样说的:

springboot整合dubbo和zookeeper

 

所以最好声明版本

 

哦,对了,还有在api中声明依赖,不然怎么使用dubbo呢?

springboot整合dubbo和zookeeper

 

dubbo的官网:

http://dubbo.apache.org/zh-cn/docs/user/demos/multi-versions.html