文章目录
一、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-zookeeper
cloud:
zookeeper:
connect-string: 192.168.87.128:2181 #zookeeper地址
max-retries: 10
4.使用@EnableDiscoveryClient注解声明main方法
@SpringBootApplication
@EnableDiscoveryClient
public 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模板
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
2. 调用接口
@RestController
public class TestController {
//微服务注册名称
private static final String INVOKE_URL = "http://private-cloudzk8002";
@Resource
private 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方法即可成功