spring boot-18.使用dubbo发布分布式服务
Posted 脆皮香蕉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot-18.使用dubbo发布分布式服务相关的知识,希望对你有一定的参考价值。
我们新建两个项目分别模拟服务的提供者和服务的消费者,spring boot 集成dubbo主要分为以下几个步骤:
1.安装zookeeper
推荐使用docker 安装,使用以下几个命令即可完成
(1)docker pull zookeeper:3.4.11
(2)docker run --name zookeeper -p 2181:2181 --restart always -d 56d414270ae3 (-d 后面为镜像ID)
2.服务提供者和服务消费者的项目中分别添加dubbo 和zookeeper依赖
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.1.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>
3.安装dubbo管理后台
在dubbo发布的项目中有个dubbo-admin项目,可以将这个项目打成一个war包,准备一个tomcat ,将wabapps 下的ROOT 文件夹下 内容删除,将dubbo-admin.war解压至ROOT下,修改WEN-INF下的dubbo.properties中 的zookeeper地址改成自己的,为了防止端口冲突可以修改tomcat 下的conf 下的server.xml 中的端口号,然后运行bin 下的startup.bat 即可启动dubbo的管理后台,输入用户名和密码(root/root 或guest/guest)
4.编写服务代码
(1)新建一个接口,表明我们要提供的服务
package com.springboot.service.ticket; public interface TicketService { public String getTicket() ; }
(2)实现服务接口,并使用dubbo的@service标注这个服务,并将服务作为一个组件注入到IOC容器中
package com.springboot.service.ticket; import org.springframework.stereotype.Component; import com.alibaba.dubbo.config.annotation.Service; @Service @Component public class TicketServiceImpl implements TicketService{ @Override public String getTicket() { // TODO Auto-generated method stub return "《碟中谍6》"; } }
(3)配置服务
#服务名称
dubbo.application.name=springboot-dubbo-provider
#zookeeper地址
dubbo.registry.address=zookeeper://192.168.1.215:2181
#服务的扫描路径,改路径下被@service注解的都将被当成一个服务发布
dubbo.scan.base-packages=com.springboot.service
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
5.编写消费端代码
(1)新建和服务端一模一样的接口,包括接口所在路径也要一致
(2)调用服务。使用@Reference 将服务接口注入
package com.springboot.service.user; import org.springframework.stereotype.Service; import com.alibaba.dubbo.config.annotation.Reference; import com.springboot.service.ticket.TicketService; @Service public class UserService { @Reference TicketService ticketService; public String BuyTicket() { String ticket = ticketService.getTicket(); System.out.println("买到电影票:"+ticket); return ticket; } }
(3)配置
server.port=8081
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.application.name=springboot-dubbo-consumer
dubbo.registry.address=zookeeper://192.168.1.215:2181
(4)调用消费端服务
package com.springboot.contrller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import com.springboot.service.user.UserService; @RestController public class buyController { @Autowired UserService userService; @GetMapping("/buy") public String buy() { return userService.BuyTicket(); } }
6.发布服务,订阅服务。
分别启动服务端项目和消费端项目,即可在dubbo的管理后台看到服务提供者和消费者
调用消费端服务
以上是关于spring boot-18.使用dubbo发布分布式服务的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot(18)——使用Alibaba Druid DataSource
启动 dubbo-admin 必须要启动zookeeper吗
springcloud --- spring cloud sleuth和zipkin日志管理(spring boot 2.18)