【Spring Cloud】Zookeeper注册中心实现服务发布与调用

【学习背景】

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

【学习内容】

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

1. 安装Zookeeper

先在电脑上安装好Zookeeper,下载地址链接:http://ftp.wayne.edu/apache/zookeeper/zookeeper-3.4.10/

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

在这里插入图片描述

2. 搭建Spring Cloud基础框架

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

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

在这里插入图片描述
添加Zookeeper客户端依赖:

在这里插入图片描述
3. 启动项目,报错如下:

在这里插入图片描述
查询资料,在Spring Cloud Zookeeper2.0 发布相关文章中,看到第二个问题便是我遇到的问题:
在这里插入图片描述
问题的原因是Zookeeper服务端和Curator版本不兼容的问题。项目中的依赖是Spring Boot 2.1,zookeeper-discovery2.1版本中集成的是4.0版本,而我使用的Zookeeper Server版本是3.4。

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

所以,也从中找到了解决问题的方案:https://github.com/spring-cloud/spring-cloud-zookeeper/pull/171/commits/1fac790233122ad25c7edfdc52a0786dc7329b2e

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

		<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上的临时节点:

在这里插入图片描述

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

在这里插入图片描述

【学习demo】

项目更新地址:https://github.com/huzhiting/spring-cloud/tree/master/zookeeper-service-provider

【学习总结】

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

猜你喜欢

转载自blog.csdn.net/u013034223/article/details/86747830