微服务:SpringBoot整合Dubbo+Zookeeper
环境准备:
jdk 1.8
springboot 1.5.9
dubbo 1.0
1.首先新建一个空的工程 (工程名为springboot-dubbo)
建好以后工程结构如下图所示
2.首先我们先创建服务提供者(以售票业务为例)
3.选择springboot快速创建向导构建项目
接下来就一路下一步就行,工程结构如下:
4.在提供者的项目里面新建一个TicketService,提供售票方法
5.再创建一个服务消费者的子工程 步骤跟刚才一样就不再多说
6.在User的项目里面新建一个UserService,如果我们想在这使用提供者项目里面的TicketService,那么就需要使用RPC远程调用框架,进行远程通讯
(1)先在提供者项目的pom.xml引入依赖
<!-- 引入dubbo依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<!-- 引入zookeeper客户端工具 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
(2)在提供者项目的application.properties配置文件中配置
dubbo.application.name=provider-ticket #当前应用的名字
dubbo.registry.address=zookeeper://192.168.0.103:2181 #虚拟机的ip路径 2181为端口号 需要先在虚拟机上安装zookeeper、
dubbo.scan.base-packages=com.dream.providerticket.service #要扫描的包
(3)在TicketServiceImpl.class中加@Service和@Component注解,@Service要导bubbo的包,因为需要把服务注册到注册中心,@Component是将类放在spring容器中便于管理
注意:Dubbo中的@Service注解只能标注到接口或具体实现类上面
(4)接下来启动提供者项目
7.同样我们在消费者项目里面引入dubbo和zookeeper的依赖(同上),在消费者项目application.properties配置文件中配置如下:
dubbo.application.name=user #当前应用的名字
dubbo.registry.address=zookeeper://192.168.0.103:2181 #虚拟机的ip路径 2181为端口号 需要先在虚拟机上安装zookeeper、
9.在消费者项目里面创建TicketService接口 路径要和提供者项目的一样,也可以复制过来,如下:
10.在UserService.class中引用TicketServce,并加上@Reference注解
12.编写一个hello方法,远程调用服务提供者的getTicket()方法
13.最后在服务消费者项目里进行单元测试
注意:服务提供者项目不能关闭服务
大功告成!!!!!
总结:Dubbo是阿里巴巴开源的分布式服务框架,现在由apache公司在维护,就目前来说,dubbo还是非常火的,但是由于SpringCloud的问世,老杨预计Spring全家桶的时代将会占领市场,因为springcloud提供了一整套微服务架构的解决方案,这是与Dubbo最大的不同。我会在后续给同学们更新SpringBoot整合SpringCloud的文章,请大家持续关注哦!有任何问题可以在评论区提出。谢谢大家!