项目示例 - 2.服务注册 - 2.Zookeeper
关联知识:
- 分布式微服务 - 2.服务注册 - 3.Zookeeper
内容提要:
- 服务注册实现
服务注册实现
- 建Module:微服务起名为zookeeper-provider
- 改pom:引入以下依赖
<dependencies>
<!-- SpringBoot整合zookeeper客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 写yml:在resources目录下创建application.yml文件,并做以下配置
server:
port: 8001
spring:
application:
# 注册到zookeeper时使用的别名
name: zookeeper-provider
cloud:
zookeeper:
# zookeeper server地址
connect-string: localhost:2181
- 主启动:在src下创建如下主启动类
package learn.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ZookeeperProvider {
public static void main(String[] args) {
SpringApplication.run(ZookeeperProvider.class, args);
}
}
- 业务构建:创建如下controller类
package learn.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
@RestController
@RequestMapping("/zookeeper/provider/")
public class ProviderController {
@Value("${spring.application.name} ${server.port}")
private String serverInfo;
@GetMapping("test")
public String test() {
return serverInfo+"\t"+ UUID.randomUUID();
}
}
- 测试:
- 先依次启动zookeeper server和zookeeper client,在zookeeper client中输入
ls /
命令查看,没有services选项 - 启动本微服务后,浏览器中输入
localhost:8001/zookeeper/provider/test
地址,接口能正确返回信息 - 再次在zookeeper client中输入
ls /
命令后发现多了services选项,且输入ls /services
后发现本微服务成功以别名方式注册进Zookeeper中
- 先依次启动zookeeper server和zookeeper client,在zookeeper client中输入