【学习背景】

在前面学习到了使用Eureka作为注册中心,基于Spring Cloud实现服务的发布与调用。而在18年7月份,Eureka2.0宣布闭源了,将不再进行开发,所以对于公司技术选型来说,可能会换用其他方案做注册中心。本篇博客学习便是使用Zookeeper作为注册中心,下面主要是总结下搭建过程。

【学习内容】

在接触dubbo的框架的时候,用的注册中心就是Zookeeper,现在看来也不算新东西了。

1. 安装Zookeeper

先在电脑上安装好Zookeeper

下载好之后,直接在/bin目录下,启动zkServer.cmd即可,如下就表示启动成功:

zookeeper 注册与发现 zookeeper实现注册中心_Spring Cloud

2. 搭建Spring Cloud基础框架

使用Zookeeper作为注册中心,和Eureka不同的是,我们不需要再搭建一个Server,直接搭建实现服务发布和调用的客户端即可。

我继续在前面学习的Eureka注册中心的项目中新建了一个Module,作为Zookeeper注册中心的服务提供者,

zookeeper 注册与发现 zookeeper实现注册中心_Zookeeper_02


添加Zookeeper客户端依赖:

zookeeper 注册与发现 zookeeper实现注册中心_注册中心_03


3. 启动项目,报错如下:

zookeeper 注册与发现 zookeeper实现注册中心_Zookeeper_04


查询资料,在Spring Cloud Zookeeper2.0 发布相关文章中,看到第二个问题便是我遇到的问题:

zookeeper 注册与发现 zookeeper实现注册中心_zookeeper_05


问题的原因是Zookeeper服务端和Curator版本不兼容的问题。项目中的依赖是Spring Boot 2.1,zookeeper-discovery2.1版本中集成的是4.0版本,而我使用的Zookeeper Server版本是3.4。

4. 解决问题,启动成功:

在项目中添加如下依赖即可:

<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-zookeeper-all</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.10</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

至此,问题便得到了解决。我们使用ZooInspector工具,就可以看到我们注册在Zookeeper上的临时节点:

zookeeper 注册与发现 zookeeper实现注册中心_zookeeper 注册与发现_06

5. 发布服务,访问接口:

zookeeper 注册与发现 zookeeper实现注册中心_Spring Cloud_07


在自己学习的过程中,遇到问题其实是很棘手的,毕竟不知道问题所在,只能查各种文章,然后尝试各种方案。