一段孤独的代码 一段孤独的代码

A Lonely Code

目录
SpringCloud采用Zookeeper作为注册中心和配置中心过程中发现的一些问题
/        

SpringCloud采用Zookeeper作为注册中心和配置中心过程中发现的一些问题

项目结构

采用 SpringCloud 架构,使用 Zookeeper 作为注册中心和配置中心。

配置文件采用 bootstrap.yml放置于 jar 中外部不存在 bootstrap.yml 文件,所有非需要更改配置放置于 bootstrap 中,需要更改的放置于 application.yml 包括 zookeeper 的连接地址等信息。

1-
2|--bin
3|--cfg
4|    |--application.yml
5|--lib
6|    |--*.jar
7|    |    |--bootstrap.yml

发生的问题

当我启动项目时,项目在不停的尝试连接 Zookeeper ,但是尝试的是 localhost 也就是尝试连接本地的 Zookeeper 但是我的 Zookeeper 是启动在服务器上的,这样尝试连接时一直失败造成项目无法启动。

追踪代码调查问题

追踪代码时发现项目启动时会使用 BootStrap 加载配置系统,这时 Zookeeper 的配置信息还未进入到变量上下文中(以 BootStrap 加载的配置只能使用 bootstrap.yml 中的信息),造成使用 localhost 作为 Zookeeper 的地址

解决办法

修改了原始代码,改为采用进入到 PropertySourceLocator 中之后再产生 Zookeeper 连接,因为此时 application.ymlbootstrap.yml 全部加载完毕(这两个是最早加载的),在此时可以正常获取到 Zookeeper 的地址


标题:SpringCloud采用Zookeeper作为注册中心和配置中心过程中发现的一些问题
作者:GunVeda
地址:http://www.gunveda.top/articles/2020/02/23/1582393747070.html