说明:关于SpringCloud系列的文章中的代码都在码云上面
地址:https://gitee.com/zh_0209_java/springcloud-alibaba.git
简介
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等
Docker安装zookeeper
- 下载zookeeper 3.4.9 版本
docker pull zookeeper:3.4.9
- 启动zookeeper
docker run -d -p 2181:2181 --name zookeeper zookeeper:3.4.9
- 查看启动日志
docker logs 容器id
SpringCloud 集成 zookeeper
- 引入zookeeper依赖
<!--zk-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<!-- 排除spring-cloud-starter-zookeeper-discovery中所自带的zookeeper包-->
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
</dependency>
- 修改配置文件
# =========== 注册zookeeper ========
spring:
application:
name: cloud-provider-payment
# 将当前客户端注册到zookeeper注册中心上
cloud:
zookeeper:
connect-string: 10.10.0.211:2181
- 启动文件上添加客户端注解
@SpringBootApplication
// 使用@EnableDiscoveryClient 来开启客户端,代表客户端
@EnableDiscoveryClient
@MapperScan("com.zh.springcloud.mapper")
public class PaymentApplication8004 {
public static void main(String[] args) {
SpringApplication.run(PaymentApplication8004.class,args);
}
}
- 使用ZooInspector 连接工具连接zookeeper可以查看客户端连接信息
注意:当客户端注册进zookeeper时,会生成一个流水号,当服务器停止后,zookeeper就会删除这个流水号,由此可见zookeeper是强一致性的。也就是说zookeeper是CAP定理中的CP原则。