Spring Cloud Zookeeper 中心化配置文件
為什麼要使用zookeeper來管理項目配置?
每當我們的項目需要更改配置文件的時候,我們都會重新打包並重新部署項目。如果一個項目還好說,如果是分布式的服務,那麼我們需要停掉左右機器上的服務,上傳新的包,然後重啟。如果是10台,如果是100台如果是1000台.......
基於zookeeper配置中心,我們隻需要更改zk中相應項目的配置,直接重啟服務就可以了,省去了衝洗打包,上傳,部署等大量操作。且配置中心化易於管理。
準備工作
基於SpringBoot
基於SpringCloud
基於zooKeeper 集群服務
假設你是基於SpringBoot開發,因為Spring對zk的集成整合在了SpringCloud的子項目中,所以我們需要引入SpringCloud,點擊鏈接參考官方文檔配置你的pom.xml文件,我使用的是目前Dalston SR2這個release。
然後在pom.xml的依賴中引入如下依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-config</artifactId>
</dependency>
<!-- zookeeper 依賴的健康檢查的jar,所以需要引入actuator這個依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Spring官網對zookeeper這個子項目有個說明,就是項目的配置文件不可以叫application*,需要改成bootstrap*開頭,否則沒辦法正常讀取配置。例如原先叫application.yaml / application.properties,現在改成bootstrap.yaml / bootstrap.properties。
配置ZooKeeper
#ZooKeeper的連接字符串,如果是集群,逗號分隔節點,格式:ip:port[,ip2:port2,.....] spring.cloud.zookeeper.connect-string = ${ZOOKEEPER_CONNECT_STRING} #指定zookeeper目錄的根目錄 spring.cloud.zookeeper.config.root = <ZK_directory> #啟用zk的配置 spring.cloud.zookeeper.config.enabled = <true | false> #定義了你的項目的名稱,zk會在你指定的 根目錄下尋找以這個項目名命名的目錄下的配置 spring.application.name = <Define Name>
關於如何在zookeeper下創建目錄,並填寫配置,請參考其他資料。
舉例說明
spring.cloud.zookeeper.config.enabled = true
在你指定zookeeper下的根目錄,zk會在這個根目錄下尋找跟你項目名稱相同的文件夾,然後找到其下麵的所有配置。
例如指定的根目錄root(即/root),項目名稱叫project,(即/root/project),上麵的配置對應就是 /root/project/spring/cloud/zookeeper/config/enabled這個key,enabled的值是true
啟動項目即可
最後更新:2017-08-13 22:36:46