1. 程式人生 > 實用技巧 >[微服務-sc-07] SpringCloud-Config

[微服務-sc-07] SpringCloud-Config

Config

在分散式系統中,由於服務數量巨多,為了方便服務配置檔案統一管理,實時更新,所以需要分散式配置中心元件。在Spring Cloud中,有分散式配置中心元件spring cloud config ,它支援配置服務放在配置服務的記憶體中(即本地),也支援放在遠端Git倉庫中。在spring cloud config 元件中,分兩個角色,一是config server,二是config client。
Spring Cloud Config 用於為分散式系統中的基礎設施和微服務應用提供集中化的外部配置支援,它分為服務端和客戶端兩部分。服務端(config server)也稱為分散式配置中心,是一個獨立的微服務應用,用來連線配置倉庫併為客戶端提供獲取配置資訊,加密/解密資訊等訪問介面。而客戶端(config client)則是微服務架構中各微服務應用或基礎設施,通過指定的配置中心來管理應用資源與業務相關的配置內容,並在啟動的時候從配置中心獲取和載入配置資訊。
當 Config Client 首次啟動時會向 Config Server 獲取配置資訊,Config Server 接收到請求再從遠端私有倉庫獲取配置(連線不上專案會報錯),並儲存到本地倉庫中。
當 Config Client 再次啟動時會向 Config Server 獲取配置資訊,Config Server 還是會先從遠端私有倉庫拉去資料。如果網路問題或認證問題導致無法連線遠端私有庫,Config Server 才會從本地倉庫獲取配置資訊返回給 Config Client。

服務端

1 依賴

<dependencies>
      <!-- eureka 客戶端 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

      <!-- config 服務端 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
</dependencies>

2 配置

server:
  port: 10000

spring:
  application:
    name: CONFIG
  cloud:
    config:
      server:
        git:
          uri: https://github.com/moonlightL/spring-cloud-config.git
          username: moonlightL
          password: xxx
          basedir: d:/data # 本地庫目錄         
eureka:
  instance:
      instance-id: config-api
  client:
      service-url:
          defaultZone: http://localhost:9000/eureka/  # 註冊中心訪問地址

3 啟動類

@EnableConfigServer
@EnableEurekaClient
@SpringBootApplication
public class ConfigApplication {

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

Client

1 依賴

<!-- config 客戶端 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>

2 配置

刪除 application.yml,並新建 bootstrap.yml,儲存如下內容:
spring:
  application:
    name: ORDER
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG  # config-server 在註冊中心的名稱
      profile: dev  # 指定配置檔案的環境
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/  # 註冊中心訪問地址
必須保留 eureka 註冊中心的配置,否則 order-server 無法連線註冊中心,也就無法獲取配置中心(config-server)的訪問資訊。