SpringCloud-Config

木安發表於2021-03-03

config概述

配置中心提供了一箇中心化的外部配置,預設使用git儲存配置資訊,這樣就可以對配置資訊進行版本管理,下邊配置中心的搭建就是以git為基礎進行的。配置中心是單獨作為一個服務執行的。

spring cloud 允許執行時動態重新整理配置,可以重新從配置中心獲取新的配置資訊。
bootstrap.yml引導配置檔案,先於 application.yml 載入。
image.png

config實現

第一步:新建java專案config
當作一個資料夾,用來存放配置檔案。
image.png

第二步:賦值sp02、03、04、11的配置檔案至config,並重新命名
spring的profile檔案說明:

#item-service.yml - 主配置
#item-service-dev.yml - 開發  開發時啟動,主+開發合併,同時啟動。
#item-service-test.yml - 測試
#item-service-dev.prod - 生產
#item-service-xxx.yml -

image.png
第三步:config中的4個配置檔案均新增配置並註釋sp02、sp03、sp04、sp11的配置檔案

#新增配置,當遠端倉庫的配置與本地倉庫的配置衝突時,以本地倉庫的配置為主
cloud:config:override-none: true

分別建立配置檔案item-service-dev.yml:

# item-service-dev.yml
#給應用起個名,向註冊中心註冊時用這個名稱註冊
#註冊資訊:item-service ----->localhost:
spring:
  application:
    name: item-service
  #設定禁止配置中心的配置將客戶端配置覆蓋掉
 cloud:
    config:
      override-none: true
server:
  port: 8001
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka

註釋sp02、sp03、sp04、sp11的配置檔案:

## application.yml
#
##給應用起個名,向註冊中心註冊時用這個名稱註冊
##註冊資訊:item-service ----->localhost:
#spring:
#  application:
#    name: item-service
#
#server:
#  port: 8001
#
#eureka:
#  client:
#    service-url:
#      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka

第四步:建立本地倉庫
image.png
選擇本地倉庫目錄和檔案
image.png
第五步:把本地倉庫提交推送到gitee遠端倉庫
1.點選commit
image.png
2.勾選要提交的檔案,填寫提交資訊,進行提交
image.png
點選commit,提交檔案至本地倉庫
image.png
3.gitee上建立倉庫springcloud1
image.png
image.png
複製倉庫地址
image.png
4.點選push,開始從本地倉庫推送至遠端倉庫。
image.png
填寫連結點選ok
image.png
push推送
image.png
檢視是否推送成功
image.png
第六步:建立springboot專案sp12-config
image.png
第七步:新增config server、eureka依賴
image.png

<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>

第八步:配置pom檔案

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/duchaosa/springcloud1
          searchPaths: config
          #username: your-username
 #password: your-password
server:
  port: 6001
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

第九步:主程式新增註解@EnableConfigServer 和 @EnableDiscoveryClient

package cn.tedu.sp12;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;
@EnableConfigServer
@EnableDiscoveryClient
@SpringBootApplication
public class Sp12ComfigApplication {
   public static void main(String[] args) {
      SpringApplication.run(Sp12ComfigApplication.class, args);
   }
}

第十步:啟動伺服器sp12,訪問測試
http://localhost:6001/item-service-dev.yml
http://localhost:6001/item-service/dev
image.png
第十一步:配置中心客戶端
1.在sp02、sp03、sp04、sp11專案的pom
檔案中分別新增config依賴

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

2.在sp02、sp03、sp04、sp11專案中分別建立bootstrap.yml檔案
從eureka註冊中心拉取config伺服器,並獲取客戶端配置檔案。
引導配置檔案,先於 application.yml 載入。

item-service:

# bootstrap.yml
# 獲取地址表,要從登錄檔獲取配置中心得地址
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
spring:
  cloud:
    config:
      discovery:
        enabled: true
 service-id: config-server  #配置中心的服務id
 # item-service-dev.yml 
      name: item-service
      profile: dev

user-service:

# bootstrap.yml
# 獲取地址表,要從登錄檔獲取配置中心得地址
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
spring:
  cloud:
    config:
      discovery:
        enabled: true
 service-id: config-server  #配置中心的服務id
 # user-service-dev.yml 
      name: user-service
      profile: dev

order-service:

# bootstrap.yml
# 獲取地址表,要從登錄檔獲取配置中心得地址
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
spring:
  cloud:
    config:
      discovery:
        enabled: true
 service-id: config-server  #配置中心的服務id
 # order-service-dev.yml 
      name: order-service
      profile: dev

zuul-service:

# bootstrap.yml
# 獲取地址表,要從登錄檔獲取配置中心得地址
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
spring:
  cloud:
    config:
      discovery:
        enabled: true
 service-id: config-server  #配置中心的服務id
 # zuul-dev.yml 
      name: zuul
      profile: dev

3.啟動伺服器,檢視伺服器是否已成功拉起配置檔案。
image.png