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的管理后台看到服务提供者和消费者
调用消费端服务
最新文章
- ThreadLocal类详解:原理、源码、用法
- Oracle基本数据类型
- Android-----工程文件目录介绍
- Another app is currently holding the yum lock; waiting for it to exit...
- php中重写和final关键字的使用
- ";rel=nofollow";属性简介
- 简单计算器--hdu1237(栈的运用)
- Oracle GoldenGate 11.2 OGG-01168(转)
- A Dream
- Linux 命令备注
- DEDE数据库修改
- CentOS在安装配置 Ngnix_tomcat_PHP_Mysql
- Delphi中paramstr的用法
- 代码生成利器:IDEA 强大的 Live Templates(转)
- 网站开启cdn加速的最简单步骤
- R语言使用 multicore 包进行并行计算
- jQuery如何制作动画
- js 图片瀑布流效果实现
- 使用linux命令行调整非图形界面分辨率
- Codeforces Beta Round #55 (Div. 2)