當(dāng)一個系統(tǒng)中的配置文件發(fā)生改變的時候,我們需要重新啟動該服務(wù),才能使得新的配置文件生效,spring cloud config可以實現(xiàn)微服務(wù)中的所有系統(tǒng)的配置文件的統(tǒng)一管理,而且還可以實現(xiàn)當(dāng)配置文件發(fā)生變化的時候,系統(tǒng)會自動更新獲取新的配置。
為紅河哈尼等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及紅河哈尼網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站設(shè)計、紅河哈尼網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
其架構(gòu)原理圖大致如下:
我們將配置文件放入git或者svn等服務(wù)中,通過一個Config Server服務(wù)來獲取git中的配置數(shù)據(jù),而我們需要使用的到配置文件的Config Client系統(tǒng)可以通過Config Server來獲取對應(yīng)的配置。
下面我們通過一個示例來演示一下config是如何被各個微服務(wù)系統(tǒng)獲取到的。
1.向git中上傳示例配置文件
jdbc.driverClassName=com.MySQL.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/taotao?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true jdbc.username=root jdbc.password=root
文件名分別為:
microservice-dev.properties microservice-production.properties microservice-test.properties
對應(yīng)不同的三個環(huán)境。
該文件的命名規(guī)則是:{application}-{profile}.properties
2.搭建Config Server
2.1 添加依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> </parent> <!-- 導(dǎo)入Spring Cloud的依賴管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR3</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> <exclusions> <exclusion> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <!-- 使用bus總線的方式通知所有的微服務(wù)配置文件需要刷新 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <!-- 資源文件拷貝插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- java編譯插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
2.2 編寫ConfigApplication
@EnableDiscoveryClient @EnableConfigServer //開啟配置服務(wù) @SpringBootApplication public class ConfigApplication { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class, args); } }
2.3 編寫yml配置文件
server: port: 6688 #服務(wù)端口 spring: application: name: microservice-config-server #指定服務(wù)名 cloud: config: server: git: #配置git倉庫地址 uri: 具體的配置文件的git地址 #username: #password: rabbitmq: #RabbitMQ相關(guān)的配置 host: 127.0.0.1 port: 5672 username: guest password: guest eureka: client: registerWithEureka: true #是否將自己注冊到Eureka服務(wù)中,默認(rèn)為true fetchRegistry: true #是否從Eureka中獲取注冊信息,默認(rèn)為true serviceUrl: #Eureka客戶端與Eureka服務(wù)端進(jìn)行交互的地址 defaultZone: http://cloud:cloud@127.0.0.1:6868/eureka/ instance: prefer-ip-address: true #將自己的ip地址注冊到Eureka服務(wù)中 ipAddress: 127.0.0.1 management: security: enabled: false #是否開啟actuator安全認(rèn)證
這是我們啟動該服務(wù),訪問該配置文件,訪問路徑示例如下(以該配置為例): 127.0.0.1:6688/microservice-dev.properties
訪問路徑的寫法也有多種方式:
/{application}/{profile}/[label] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties 其中{label}是指分支,默認(rèn)是master。
3. Config Client的搭建
3.1 添加依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
3.2 添加yml配置文件
eureka: client: serviceUrl: #Eureka客戶端與Eureka服務(wù)端進(jìn)行交互的地址 defaultZone: http://cloud:cloud@127.0.0.1:6868/eureka/ spring: cloud: config: name: microservice #對應(yīng)的配置服務(wù)中的應(yīng)用名稱 profile: dev #對應(yīng)配置服務(wù)中的{profile} label: master #對應(yīng)的分支 discovery: enabled: true #啟用發(fā)現(xiàn)服務(wù)功能 service-id: microservice-config-server #指定服務(wù)名稱 spring: application: name: itcasst-microservice-config-server #指定服務(wù)名 cloud: config: server: git: #配置git倉庫地址 uri: http://172.16.55.138:10080/zhangzhijun/itcast-config-server.git #username: zhangzhijun #password: 123456 rabbitmq: #RabbitMQ相關(guān)的配置 host: 127.0.0.1 port: 5672 username: guest password: guest
注意,這里的yml配置文件是:bootstrap.yml,它和application.yml文件一樣,會被spring boot加載,但是bootstrap.yml會優(yōu)先加載。
3.3 在application.yml文件中添加配置
management: security: enabled: false #是否開啟actuator安全認(rèn)證
3.4 利用git的webhook實現(xiàn)實時更新通知
這個時候,我么通過@Value的方式,就可以獲取到對應(yīng)的配置了。
@RefreshScope @Component//加入到Spring容器 public class JdbcConfigBean { @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Value("${jdbc.driverClassName}") private String driverClassName; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getDriverClassName() { return driverClassName; } public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } @Override public String toString() { return "JdbcConfigBean [url=" + url + ", username=" + username + ", password=" + password + ", driverClassName=" + driverClassName + "]"; } }
再次測試,我們發(fā)現(xiàn)當(dāng)我們修改了git中的配置文件的內(nèi)容之后,client系統(tǒng)中讀取到的屬性也是修改之后的了。
到此為止,其架構(gòu)變成如下:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
網(wǎng)頁名稱:詳解使用springcloudconfig來統(tǒng)一管理配置文件
文章位置:http://jinyejixie.com/article32/ggeipc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、外貿(mào)建站、虛擬主機(jī)、網(wǎng)站設(shè)計、網(wǎng)站改版、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)