一、docker环境下部署zookeeper
1.下拉镜像
docker pull zookeeper
2.部署容器
docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:latest
二、SpringCloud向zookeeper中注册服务
1.引入jar包
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId></dependency>
2.完成pom文件内容
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>test-zookeeper</artifactId><version>0.0.1-SNAPSHOT</version><name>test-zookeeper</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>2021.0.1</spring-cloud.version></properties><dependencies><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3.配置application.yml
server:port: 8082# 服务别名---zookeeper注册中心名称spring:application:name: test-zookeepercloud:zookeeper:connect-string: 192.168.87.128:2181 #zookeeper地址max-retries: 10
4.使用@EnableDiscoveryClient注解声明main方法
@SpringBootApplication@EnableDiscoveryClientpublic class TestZookeeperApplication {public static void main(String[] args) {SpringApplication.run(TestZookeeperApplication.class, args);}}
5.启动服务查看zookeeper中注册的服务
进入容器内容
docker exec -it zookeeper zkCli.sh
查看注册的服务
ls /services
此处注册了三个服务
三、微服务间方法调用
1. 声明RestTemplate模板
@Configurationpublic class ApplicationContextConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();}}
2. 调用接口
@RestControllerpublic class TestController {//微服务注册名称private static final String INVOKE_URL = "http://private-cloudzk8002";@Resourceprivate RestTemplate restTemplate;@GetMapping(value = "paymentInfo")public String paymentInfo(){//微服务中接口路径String result = restTemplate.getForObject(INVOKE_URL + "/consumer/payment/zk", String.class);return result;}}
3.请求结果

8082端口返回8002端口的接口信息,调用成功
总结
- 引入jar包,配置zookeeper的配置文件
- 使用@EnableDiscoveryClient注解声明main方法即可成功
