環境:Spring Boot 2.3.9 + Spring Cloud Hoxton.SR8
服務發現注冊請參考《SpringCloud Zookeeper服務發現及負載均衡 》
zookeeper安裝配置請參考《Kafka(zookeeper)環境配置超級詳細 》
zkui安裝配置
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>
- bootstrap.yml配置文件
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配置文件你了解多少? 》
- application.yml配置文件
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修改配置
刷新頁面
完畢!!!