准备工具:tomcat,zookeeper,dubbo。
准备工作:启动zookeeper(默认端口2181),启动dubbo(端口按照tomcat的配置)
zookeeper下载链接 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
下载最新版就可以,注意要下载带bin的那个包。
下载完了后,解压,添加文件夹dataDir和dataLogSir。
然后进入conf目录下面,复制一份zoo_sample.cfg,重命名zoo.cfg.(运行时候就是用到这个)
编辑zoo.cfg,修改下面两个路径
添加完毕。到bing目录下 运行命令
./zkServer.sh start
出现,Srarting Zookeeper ... STARTED就是成功了。
要是失败率,那就是上边的路径没有配置好,重新配置一遍。
dubbo下载链接 https://github.com/apache/incubator-dubbo/releases?after=dubbo-2.5.9
下载完后,解压出来,找到dubbo-admin目录
进入dubbo-admin目录
执行 mvn install (这里就不多说了,不会的可以留言)
最后install完成,在dubbo-admin多了一个target文件夹,进去,拷贝war包。
将这个war包拷贝到tomcat的webapps下面,启动tomcat。
ok,到现在,我们的zookeeper和dubbo已经启动成功了。
按照配置的tomcat端口,打开路径。
比如我的是:8090
localhost:8090/dubbo-admin-2.6.0/
账号root密码root
进去后,界面如下
。
准备工作做完了,下面开始写代码。
一共有三个模块,分离出来的Service接口层,分离出来的ServiceImpl接口实现层,分离出来的Controller业务逻辑层。
在Service中只定义个接口。
在Impl中具体实现这个接口方法,
在Controller中调用Service的接口。
具体代码请看GitHub上代码
https://github.com/smart33690/springboot-zookeeper-dubbo
重点内容看一下,在这里ServiceImpl就是我们说的生产者。Controller就是消费者。
生产者的yml配置文件
再看一下消费者的yml配置文件
不管是生产者还是消费者,注册中心的地址都是我们本地启动的zookeeper地址。
使用的协议,都是dubbo协议,只是端口号不一样。
那么dubbo是怎么判断哪个是生产者,哪个是消费者,又是怎么把他们两者关联起来的?
其实很简单,暴露服务的就是生产者,如下图的@Service注解
要注意,这里是dubbo包下的,可不是Spring包下的。
只要配置了@Service就相当于暴露了服务,启动以后,会被dubbo识别有个生产者注册接口,TestService。
注意是接口
然后,看这边消费,有个@Refrence注解,这个注解就是相当于去生产者中找到自己想要的服务。
所以生产者和消费者就关系,就通过一个@Service,一个@Reference关联到一起。
有关这个两个注解的内容其实很多,有兴趣的可以研究一下。
我的zookeeper端口2181,Service接口(生产者)9090,Controller接口(消费者)8070
tomcat运行的dubbo端口8090.
进dubbo查看服务管理的就是tomcat的8090端口。
生产者,消费者端口只要端口不冲突,随便设置即可。
我已经把代码传到GitHub上,有兴趣的可以clone下来,试一下,还是挺简单的。
代码地址:https://github.com/smart33690/springboot-zookeeper-dubbo