环境:Spring Boot 2.3.9 + Spring Cloud Hoxton.SR8
服务发现注册请参考《SpringCloud Zookeeper服务发现及负载均衡 》
zookeeper安装配置请参考《Kafka(zookeeper)环境配置超级详细 》
zkui是一个web界面的管理工具,虽然难看不好用,但总比敲命令舒服些。
下载地址
mvn clean install
config.cfg
修改该文件的zkServer节点
将构建后的target目录下的两个jar包复制到Docker目录下,config.cfg也拷贝到docker目录下:
修改Dockerfile文件如下内容(我按照官方文档行不通)
FROM JAVA:8
MAINTAINER ym
ADD zkui-*.jar zkui.jar
ADD config.cfg config.cfg
ENTRYPOINT ["java","-jar","zkudocker run -d --restart=always --name zkui -p 9090:9090 zkui:2.0 i.jar"]
EXPOSE 9090
docker build -t zkui:2.0 .
docker run -d --restart=always --name zkui -p 9090:9090 zkui:2.0
启动完后 访问
用户名/密码 admin/manager
到此zkui的工具就按照完成了,接下来写一个配置信息导入到zkui中,内容如下
/config : 是配置的根目录
App-config : 是应用的名称spring.application.name,
dev : spring.profiles.active 对应的配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>MySQL</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
spring:
cloud:
zookeeper:
enabled: true
connectString: 118.24.111.33:2181,118.24.111.33:2182,118.24.111.33:2183
connectionTimeout: 3000
---
spring:
application:
name: app-config
---
spring:
profiles:
active:
- dev
---
spring:
cloud:
zookeeper:
config:
enabled: true
root: /config
defaultContext: ${spring.application.name}
watcher:
enabled: true
关于bootstrap.yml配置文件请参考《SpringBoot配置文件你了解多少? 》
spring:
datasource:
driverClassName: ${driverClassName}
url: ${jdbcUrl}
username: ${username}
password: ${password}
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimumIdle: 10
maximumPoolSize: 200
autoCommit: true
idleTimeout: 30000
poolName: MasterDatabookHikariCP
maxLifetime: 1800000
connectionTimeout: 30000
connectionTestQuery: SELECT 1
这里的${xxx} 就是通过bootstrap.yml中配置的配置中心获取的。
正常启动,说明配置成功了。接下来通过一个接口获取配置信息,查看是否能实时更新
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${username}")
private String username ;
@GetMapping("/get")
public Object info() {
return username ;
}
}
注意:这里不要在类上添加@RefreshScope注解
通过zkui修改配置
刷新页面
完毕!!!