Dubbo+Zookeeper+SpringBoot服务注册小demo
Posted 小样5411
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo+Zookeeper+SpringBoot服务注册小demo相关的知识,希望对你有一定的参考价值。
前言
在完成Dubbo+Zookeeper安装与配置后,我们总要知道这两个有什么用,能干什么,这篇文章就带你了解,这两个具体干什么的。
还没配置的可以先看我这篇文章配一下: Dubbo+Zookeeper配置安装
主要就是Provider到注册中心注册,然后Consumer再到注册中心拿。有点类似于生产者与消费者,我们到IDEA新建两个SpringBoot模块,分别为Provider和Consumer,如Provider卖电影票,Consumer买电影票,一个产生一个消费
一、Provider
新建一个SpringBoot项目,叫provider-server
没用的删了
假设Provider提供卖票服务
TicketService.java
public interface TicketService {
String getTicket();
}
TicketServiceImpl.java
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;
@DubboService
@Service
public class TicketServiceImpl implements TicketService{
@Override
public String getTicket() {
return "出一张电影票";
}
}
我们现在就是要从Consumer拿到Provider中的服务(卖票),Provider都有自己的启动类,启动后都对应一个端口,这个端口可以在resources下的application.properties配置,此处Provider是8001,项目一启动就会进行自动扫描注册,将服务放到注册中心
server.port=8001
server.port=8002
两个启动类分别启动就属于两个服务,启动会把自己的服务给注册中心,要给注册中心就先要导一些依赖
<dependencies>
<!-- Dubbo+Zookeeper-->
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<!-- zkclient-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!-- 引入zookeeper-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<!--排除slf4j-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--Spring Web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
下面要详细配置application.properties
我们之前看过dubbo-admin中application.properties的配置
现在和这个差不多
首先配provider中的
# 端口
server.port=8001
# 服务应用名字
dubbo.application.name=provider-server
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 哪些服务要被注册
dubbo.scan.base-packages=com.yx.service
配置后可以开始启动,首先启动zookeeper,也就是zookeeper目录下的bin下的zkServer.cmd,以管理员运行,对应dubbo也要启动,用命令
java -jar dubbo的jar包名称
这个在配置时都学过,不详细展开,可以看我开始推荐的配置文章
输入localhost:7001进入Dubbo可视化界面,可以看到自己的注册的服务,也就是启动后,扫描到@DubboService注解,那么就会注册到注册中心
点进入看一下
可以看到他将TicketService这个服务注册了,卖票服务就有了,然后就需要人买票了,也就是消费
二、Consumer
同理也创建一个consumer-server
同样先配置依赖,这个依赖和provider一样,直接复制上面的就行
依赖完了就配置application.properties
# 端口
server.port=8002
# 服务应用名字
dubbo.application.name=consumer-server
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 哪些服务要被注册
dubbo.scan.base-packages=com.yx.service
这就相当于发快递,provider发快递,然后consumer取快递
UserService.java
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
@Service
public class UserService {
//想拿到provider-server提供的票,要去注册中心拿服务
@DubboReference //两种引用方式:1、POM坐标 2、定义路径相同的接口名(不用实现类)这里用第二个
TicketService TICKET_SERVICE;
public void buyTicket(){
String ticket = TICKET_SERVICE.getTicket();
System.out.println("在注册中心拿到->"+ticket);
}
}
TicketService.java就复制一下之前写的就行,只要这个接口,因为上面代码注解也写了,引用有两种,一是通过路径相同的,如com.yx.service.TicketService,相当于通过这个路径可以访问到provider的,TICKET_SERVICE可以获取远程的方法,开发中我们会用pom坐标,但这里先介绍第二种
写个测试,在test中写
@SpringBootTest
class ConsumerServerApplicationTests {
@Autowired
UserService userService;//本地的
@Test
void contextLoads() {
userService.buyTicket();
}
}
启动一下方法contextLoads,拿到provider提供的电影票
三、视频讲解
以上是关于Dubbo+Zookeeper+SpringBoot服务注册小demo的主要内容,如果未能解决你的问题,请参考以下文章
Dubbo实战 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务
Dubbo实战 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务
[Dubbo实战]dubbo + zookeeper + spring 实战 (转)