Zookeeper入门操作

服务注册

根据上一讲Eureka基础继续讲解使用,其实原理都是一样都是注册服务。

zookepper

Eureka停止更新了你怎么办?

只要技术有用处就不怕他会消失

zookeeper是一个分布式协调工具,可以实现注册中心功能

我们用zookeeper服务器取代Eureka服务器,zk作为服务注册中心

首先应该在虚拟机下载zk,关闭防火墙可以尝试ping地址查看是否能相互ping通即可
创建支付模块cloud-provider-payment8004
  • 配置pom
1
2
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
xml复制代码 <dependencies>
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<groupId>com.cloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- SpringBoot整合zookeeper客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<!--先排除自带的zookeeper3.5.3-->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加zookeeper3.4.9版本-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</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>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
  • 配置yml,这里我们发现其实注册器配置基本相同
1
2
3
4
5
6
7
8
9
yaml复制代码server:
port: 8004

spring:
application:
name: cloud-provider-payment
cloud:
zookeeper:
connect-string: 116.62.12.158:2181
  • 启动类注解 @EnableDiscoveryClient
1
2
3
4
5
6
7
java复制代码@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8004 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8004.class,args);
}
}
  • 写Controller
1
2
3
4
5
6
7
8
9
10
java复制代码@RestController
public class PayMentController {
@Value("${server.port}")
private String port;

@GetMapping("payment/zk")
public String payment(){
return "zookeeper" + port+ UUID.randomUUID().toString();
}
}
创建客服端模块cloud-consumer-zk-order80
  • 还是按步骤来 pom配置
1
2
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
xml复制代码<dependencies>
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<groupId>com.cloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- SpringBoot整合zookeeper客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<!--先排除自带的zookeeper3.5.3-->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加zookeeper3.4.9版本-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</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>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
  • 配置yml
1
2
3
4
5
6
7
8
9
yml复制代码server:
port: 80

spring:
application:
name: cloud-order-service
cloud:
zookeeper:
connect-string: 116.62.12.158:2181
  • 启动类注解
1
2
3
4
5
6
7
8
java复制代码
@SpringBootApplication
@EnableDiscoveryClient
public class ZkOrder80 {
public static void main(String[] args) {
SpringApplication.run(ZkOrder80.class,args);
}
}
  • 配置RestTemplate
1
2
3
4
5
6
7
8
9
10
11
12
java复制代码@Configuration
public class Application {

@Bean
@LoadBalanced
public RestTemplate getRestTemplate()
{
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
return restTemplate;
}
}
  • controller
1
2
3
4
5
6
7
8
9
10
11
12
13
java复制代码@RestController
public class OrderController {

@Resource
private RestTemplate restTemplate;

private static final String PAYMENT_URL = "http://cloud-provider-payment";
@GetMapping("order/zk")
public String orderzk(){
String result = restTemplate.getForObject(PAYMENT_URL+"/payment/zk", String.class);
return result;
}
}
启动测试

zookeeper操作

​ 进入根目录下cd /usr/local/zookeeper/bin

​ 开启服务./zkServer.sh start

​ 连接./zkCli.sh

​ 显示内容 ls / 这里如果你不开启80和8001是只有zookeeper一个的

zookeeper1.jpg
查看services里面有什么ls / 这里就看到了我们所注册的服务

zookeeper2.jpg

1
bash复制代码	在进入一层ls /services/cloud-order-service   看到一串流水号

zookeeper.jpg
我们get一下获取流水号信息get /services/cloud-order-service/32717337-c70c-4653-9cd0-1c875bc4a9ad

zookeeper3.jpg
​ 就获得的一串json,我们找个人工具解析一下更容易看

zookeeper4.jpg

这是就可以清楚看到我们所注册的服务了,测试80端口也是可以的

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%