SpringCloud Config 配置中心

weixin_33785972發表於2018-08-30

好久沒寫了,首先依舊是相關資料以及注意事項:

簡介:

分散式系統中,為了方便服務配置檔案統一管理,實時更新,所以需要分散式配置中心元件。在Spring Cloud中,有分散式配置中心元件springCloud Config ,它支援從遠端Git倉庫中讀取配置檔案並存放到本地Git倉庫。接下來我們來看一下服務端和客戶端分別應該如何配置。

服務端

一.Maven配置

在Maven中新增eureka-client,spring-cloud-config-server

  <dependencies>
        <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>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

二.開啟配置

還是老套路,新增@EnableConfigServer,@EnableDiscoveryClient註解來分別開啟eureka客戶端以及配置中心的服務端。

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class, args);
    }
}

三.配置檔案

主要就是三個設定

  • 設定服務的名稱
  • 設定遠端倉庫的地址使用者名稱密碼
  • 設定註冊中心地址
spring:
  application:
    name: config
  cloud:
    config:
      server:
        git:
          uri: https://github.com/BzCoder/config-repo
          username:
          password:
eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka

四.建立配置檔案並訪問

我們在遠端倉庫中建立了三個對應不同環境的配置檔案order-dev.yml,order-test.yml,order-prod.yml,假如在不同環境下有很多共用的配置,我們可以再建立一個order.yml用來存放共同配置,springcloud-config取配置時,會將你的對應環境配置與order.yml合併後再返回。在遠端倉庫檔案配置完畢後,我們就可以直接訪問http://localhost:8080/order-dev.yml來獲取配置資訊。當然我們可以更改檔案字尾名來修改配置檔案的展現方式,如.json,.properites。

配置檔案的路徑規則:

/{label}/{name}-{profiles}.{type}
  • label 分支名稱 如:master dev ,不寫就是master。
  • name 配置檔名稱
  • profiles 環境名稱,不可省略,假如我們的倉庫中配置檔案命名沒有環境名稱,可以profile可以寫為-a

在啟動後我們可以看到日誌

Adding property source: file:/C:/Users/Administrator/AppData/Local/Temp/config-repo-9115656602637453229/order-dev.yml

這樣就把遠端倉庫的配置檔案儲存在本地路徑Git了。假如需要設定儲存到指定路徑的話,可以在配置檔案中加入basedir。

  server:
        git:
          uri: https://github.com/BzCoder/config-repo
          username:
          password:
          basedir:  D:/Config/basedir

至此服務端就配置完畢了,當然如果你需要保持他高可用性,可以配置ConfigSever叢集,只需要配置到不同地址即可。

客戶端

一.Maven配置

在Maven中新增eureka-client,config-server

 <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

二.開啟服務發現

@EnableDiscoveryClient
@SpringBootApplication
public class ConfigClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}

三.配置檔案

在配置檔案上就比較講究了,我們需要建立一個bootstrap.yml.bootstrap的意思是載入程式,我們需要將Eureka的配置資訊寫到bootstrap中。這裡也提一下配置載入的順序是:

  1. bootstrap 2.遠端config的配置 3.application

bootstrap.yml檔案

spring:
  application:
    name: client
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: dev
eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:8762/eureka/

配置檔案中name對應配置檔案的名稱,profile對應環境,service-id對應我們配置中心的服務名稱。

四.測試

最後我們寫一個測試介面,檢視是否能正確的讀取配置中心的資料:

@RestController
public class ConfigController {
    @Value("${env}")
    private String env;

    @GetMapping("/env")
    public String getEnv()
    {
        return env;
    }
11197254-988c913290371447.png
訪問成功

到此對於SpringCloud Config的初步學習就到這裡了

相關文章