
Linux安装Zookeeper
zookeeper是一个分布式协调工具,可以实现注册中心功能
zookeeper服务器取代Eureka服务器,zk作为服务注册中心
windows安装可以看https://www.kylin.show/1129.html
Zookeeper官网https://zookeeper.apache.org/

下载地址https://zookeeper.apache.org/releases.html

下载后安装上传到Linux系统中,解压即可tar -zxvf 压缩包名
解压zookeeper,运行/bin/zkServer.sh ,初次运行会报错,没有zoo.cfg配置文件。将zoo_sample.cfg复制一份并改名成zoo.cfg即可
接着cd到bin目录sh zkServer.sh start运行zookeeper,运行在2181端口。(记得开放端口)

sh zkServer.sh status查看运行状态
使用sh zkCli.sh连接zookeeper

安装完成!
- 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容
- 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据
- 创建文件,并设置初始内容: create /zk “test” 创建一个新的 znode节点“ zk ”以及与它关联的字符串
- 获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串
- 修改文件内容: set /zk “zkbak” 对 zk 所关联的字符串进行设置
- 删除文件: delete /zk 将刚才创建的 znode 删除
- 退出客户端: quit
- 帮助命令: help
当前只有zookeeper一个节点

服务提供者注册
新建cloud-provider-payment8004

pom
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 
 | <dependencies><dependency>
 <groupId>com.kylin</groupId>
 <artifactId>cloud-api-commons</artifactId>
 <version>1.0-SNAPSHOT</version>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
 
 <dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
 </dependency>
 
 <dependency>
 <groupId>org.apache.zookeeper</groupId>
 <artifactId>zookeeper</artifactId>
 <version>3.4.14</version>
 </dependency>
 
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 <scope>runtime</scope>
 <optional>true</optional>
 </dependency>
 <dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <optional>true</optional>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
 </dependencies>
 
 | 
yml

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | server:
 port: 8004
 
 
 spring:
 application:
 name: cloud-provider-payment
 cloud:
 zookeeper:
 connect-string: icloud.kylin.show:2181
 
 | 
主启动类
使用@EnableDiscoveryClient注解,该注解1.可以获取服务信息,2.用于向consul或者zookeeper作为注册中心的时候提供注册服务。

| 12
 3
 4
 5
 6
 7
 8
 9
 
 | @SpringBootApplication
 @EnableDiscoveryClient
 public class PaymentMain8004 {
 
 public static void main(String[] args) {
 SpringApplication.run(PaymentMain8004.class, args);
 }
 }
 
 | 
controller

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | @RestControllerpublic class PaymentController {
 
 
 @Value("${server.port}")
 private String serverPort;
 
 @RequestMapping("/payment/zk")
 public String paymentzk(){
 return "SpringCloud with zookeeper:" + serverPort+"\t"+ UUID.randomUUID().toString();
 }
 }
 
 | 
测试
启动进行测试

ls /查看zookeeper,多了一个services节点

查看该节点ls /services

注册成功,继续深挖

可以看到该节点的详细信息,端口号,地址等等
访问http://localhost:8004/payment/zk查看

全部正常,测试成功!
临时节点
服务节点是临时节点还是持久节点?我们先关掉8004,然后等待一段时间,查看zookeeper节点


可以发现已经没有相关信息了,是临时节点
重新启动,查看节点

成功注册,并且有了一个新的流水号

服务消费者注册
新建cloud-consumerzk-order80

pom
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 
 | <dependencies><dependency>
 <groupId>com.kylin</groupId>
 <artifactId>cloud-api-commons</artifactId>
 <version>1.0-SNAPSHOT</version>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
 
 <dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
 <exclusions>
 
 <exclusion>
 <groupId>org.apache.zookeeper</groupId>
 <artifactId>zookeeper</artifactId>
 </exclusion>
 </exclusions>
 </dependency>
 
 <dependency>
 <groupId>org.apache.zookeeper</groupId>
 <artifactId>zookeeper</artifactId>
 <version>3.4.14</version>
 </dependency>
 
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 <scope>runtime</scope>
 <optional>true</optional>
 </dependency>
 <dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <optional>true</optional>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
 </dependencies>
 
 | 
yml

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | server:port: 80
 
 spring:
 application:
 name: cloud-consumer-order
 cloud:
 
 zookeeper:
 connect-string: icloud.kylin.show:2181
 
 | 
主启动类

@EnableDiscoveryClient这里作用是如果要用到服务发现功能
| 12
 3
 4
 5
 6
 7
 8
 
 | @SpringBootApplication@EnableDiscoveryClient
 public class OrderZKMain80 {
 
 public static void main(String[] args) {
 SpringApplication.run(OrderZKMain80.class,args);
 }
 }
 
 | 
RestTemplate
配置RestTemplate,编写ApplicationContextConfig类

| 12
 3
 4
 5
 6
 7
 8
 9
 
 | @Configurationpublic class ApplicationContextConfig {
 
 @Bean
 @LoadBalanced
 public RestTemplate getRestTemplate() {
 return new RestTemplate();
 }
 }
 
 | 
controller
使用RestTemplate调用服务

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 
 | @RestController@Slf4j
 public class OrderZKController {
 
 public static final String INVOKE_URL = "http://cloud-provider-payment";
 
 @Resource
 private RestTemplate restTemplate;
 
 @GetMapping("/consumer/payment/zk")
 public String paymentInfo(){
 
 String result = restTemplate.getForObject(INVOKE_URL+"/payment/zk",String.class);
 
 return result;
 }
 }
 
 | 
测试
启动ZK80(8004启动)

查看zookeeper注册中心,服务消费者成功注册

访问http://localhost/consumer/payment/zk

成功!
篇幅较短,主要重点是Nacos