微服務意味着要講單體應用中的業務拆分成一個個子服務,每個服務的力度相對較小,因此係統中會出現大量的服務。由於每個服務都有必要的配置信息才能運行,所以一套集中式的、動態的配置管理設施是必不可少的。
一、配置中心config是什麼
SpringCloud Config爲微服務架構中的微服務提供集中化的外部配置支持,配置服務器爲各個不同微服務應用的所有環境提供了一箇中心化的外部配置
SpringCloud Config分爲服務端和客戶端兩部分
1、服務端也稱爲分佈式配置中心,它是一個獨立的微服務應用,用來連接配置服務器併爲客戶端提供獲取配置信息,加密/解密信息等訪問接口
2、客戶端則是通過指定的配置中心來管理應用資源,以及與業務相關的配置內容,並在啓動的時候從配置中心獲取和加載配置信息配置服務器默認採用git來存儲配置信息,這樣就有助於對環境配置進行版本管理,並且可以通過git客戶端工具來方便的管理和訪問配置內容
簡單說,它就是集中配置中心。把所有服務的配置文件都放在一個代碼管理平臺上,通過服務去讀取對應服務所需要的配置文件
二、配置中心config的作用
(1)集中管理配置文件
(2)不同環境不同配置,動態化的配置更新,分環境部署比如dev/test/prod/beta/release
(3)運行期間動態調整配置,不再需要在每個服務部署的機器上編寫配置文件,服務會向配置中心統一拉取配置自己的信息
(4)當配置發生變動時,服務不需要重啓即可感知到配置的變化並應用新的配置
一種解決方式:Curl -X POST “http://localhost:12000/actuator/bus-refresh”
也可直接在postman裏以post方式訪問這個接口就可以
(5)將配置信息以REST接口的形式暴露
三、配置中心config的文件命名規則
{application}-{profile}.yml
{application}-{profile}.properties
application爲應用名稱,profil指的是開發環境(用於區分開發、測試、生產)
四、配置中心config的簡單使用
這裏不僅使用了config,還將config註冊在了eureka上,這樣到好處是,在客戶端使用的時候,可以通過使用config註冊在eureka上的服務id就可以了,不用寫死ip地址了
1、服務端
新建一個config服務端,目錄結構如下
(1)引入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)配置文件
server:
port: 12000
spring:
application:
name: config-demo
cloud:
config:
server:
git:
uri: https://github.com/******/test.git # git地址 https的
username: ****** # git賬號
password: ****** # git密碼
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
registry-fetch-interval-seconds: 10
instance:
lease-renewal-interval-in-seconds: 5
lease-expiration-duration-in-seconds: 15
prefer-ip-address: true
ip-address: 127.0.0.1
instance-id: ${spring.application.name}:${server.port}
(3)編寫啓動類ConfigDemoApplication
@EnableConfigServer
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigDemoApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class,args);
}
}
@EnableConfigServer 開啓配置服務
@EnableDiscoveryClient 開啓eureka客戶端
(4)啓動測試
http://localhost:12000/base-dev.yml
可以看到能讀到配置文件的內容
也可以看到config成功註冊到eureka上了
這樣證明config服務端已經搭建成功了
接下來,就配置一下服務端
2、config客戶端
客戶端要做的就是,將服務端原來的配置文件(application.yml)放到git上,然後config服務端能讀到,客戶端新建一個配置文件(bootstrap.yml)用來讀取服務端已拉到的配置文件
我這裏是在原來的項目基礎上直接更改的producer-demo
(1)引入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
(2)添加bootstrap.yml
這裏的配置,原來是直接用uri寫死地址的,但用了eureka後,就可以直接通過服務id獲取了,需要注意的是,雖然原來配置文件的內容都直接放到git上了,但是由於從eureka上讀取config的服務id,所以這裏關於eureka的地址要配置到這個bootstrap.yml中
spring:
cloud:
config:
name: producer
profile: dev
label: master
# uri: http://127.0.0.1:12000 # 這個就是剛剛已經啓動的config服務端的地址
discovery:
enabled: true
service-id: config-demo
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
原來的application.yml的內容放到了git上,並改名爲producer-dev
注意:
application.yml是用戶級的資源配置項
bootstrap.yml是系統級的,優先級更高
(3)啓動測試
只是原來能測試通的接口,改用這樣的配置方式,是否還能讀取到數據,接口還和原來一樣可以用,就代表成功了
本篇文章是與前幾篇【SpringCloud】博客成系列的,本文的代碼是在之前代碼的基礎上進行修改的,之前的源代碼鏈接:https://download.csdn.net/download/cxh6863/12385185
整合配置中心config後的源代碼鏈接:https://download.csdn.net/download/cxh6863/12449406