本文介紹了SpringCloud +Zookeeper完成配置中心,分享給大家,具有如下:
使用場景
為什麼使用zookeeper
Zookeeper 作為一個分佈式的服務框架,主要用來解決分佈式集群中應用系統的一致性問題,它能提供基於類似於文件系統的目錄節點樹方式的數據存儲, Zookeeper 作用主要是用來維護和監控存儲的數據的狀態變化,通過監控這些數據狀態的變化,從而達到基於數據的集群管理。
怎麼使用
1.pom文件
<!-- 提供zookeeper整合的包--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-config</artifactId></dependency><!-- springboot 提供監聽的--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>
2.bootstrap.properties文件
提示: springboot項目啟動會優先讀取bootstrap.properties.然後獲取zookeeper中的配置內容,才啟動其他配置
#指定zookeeper的地址,多個用逗號拼接spring.cloud.zookeeper.connect-string=192.168.100.0:2181#指定springcloud 讀取zookeeper路徑的開始位置spring.cloud.zookeeper.config.root=springcloud#開始zk的配置spring.cloud.zookeeper.config.enabled=true#zk會在你指定的根目錄下尋找以這個項目名命名的目錄下的配置spring.application.name=service_config
3.獲取zookeeper中的配置
1.@value方式:
//不能動態更新值,需要重啟項目@Value("${com.xxx.username}") public String username ; 2.@ConfigurationProperties和@EnableConfigurationProperties方式
//可以動態修改值,不需要重啟@ConfigurationProperties(prefix = "com.xxx")public class UserInfo { public String username ; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}application代碼:
@SpringBootApplication//支持多個配置類@EnableConfigurationProperties({xxx.class,abc.class})public class ServiceConfigApplication { public static void main(String[] args) { SpringApplication.run(ServiceConfigApplication.class, args); }}4.獲取配置的規則
假設:
spring.cloud.zookeeper.config.root=xxxx ;spring.application.name=abc
zk 路徑:
/xxxx/abc/com/gabo/username
取值:
@value(${com.gabo.username})5. 檢驗:
啟動的時候輸出: State change: CONNECTED
代表連接zookeeper成功
修改配置中心內容,輸出:Refresh keys changed:
代表項目中的值修改成功
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。