天天看點

springcloud-config配置中心分布式管理

1、為什麼要使用springcloud-config配置中心?

随着系統微服務的不斷增加,首要考慮的是系統的可伸縮性、可擴充性,配置管理就是一個大問題。各自管各自的開發時沒什麼問題,到了線上之後管理就會很頭疼,到了要大規模更新就更煩了。

肯定不能為了更新你的配置去停了你的服務叢集,這是不現實的做法,是以springcloud配置中心就是一個比較好的解決方案:把微服務叢集裡面的配置抽象出來,交個檔案倉庫或者檔案伺服器去統一管理,每當想更新配置檔案是隻需要在檔案倉庫或者檔案伺服器上直接修改就成,不必再去挨個應用去修改配置檔案。

2、spring cloud config包括兩部分組成

1.spring cloud config server 作為配置中心的服務端:

  1.拉取配置時更新git倉庫副本,保證是最新結果

  2.支援資料結構豐富,yml, json, properties 等

  3.配合 eureke 可實作服務發現,配合 cloud bus 可實作配置推送更新

  4.配置存儲基于 git 倉庫,可進行版本管理

  5.簡單可靠,有豐富的配套方案

2.Spring Cloud Config Client 用戶端:

  1.Spring Boot項目不需要改動任何代碼,加入一個啟動配置檔案指明使用ConfigServer上哪個配置檔案即可

3、spring cloud config的簡單搭建

1.搭建spring cloud config server 服務端:

步驟一:建立一個springcloud-config-server工程,并引入以下依賴:

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

步驟二:在啟動類上加入@EnableConfigServer注解,表示這個是配置中心服務端:

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class SpringConfigServerApplication {

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

}
           

步驟三:添加配置檔案及配置項、application.yml配置如下:

spring:
  cloud:
    config:
      server:
        git:
#GitHub上的連結
          uri: https://github.com/****/config-git.git
#使用者名
          username: ***
#密碼
          password: *****
#服務端的服務名
  application:
    name: spring-config-server
server:
    port: 9090
eureka:
#  instanc中的配置是讓該服務使用IP注冊到注冊中心,而不是hostname
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    register-with-eureka: false
    fetch-registry: false
           

步驟四:在GitHub建立一個倉庫,在建立應用所需的配置檔案:

springcloud-config配置中心分布式管理

步驟五:啟動config服務端并通路:

springcloud-config配置中心分布式管理

2、搭建spring cloud config 用戶端:

步驟一:在現有的微服務應用上添加以下依賴:

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

步驟二:在client端中添加bootstrap.yml檔案,并添加配置

springcloud-config配置中心分布式管理
spring:
  cloud:
    config:
#服務端的服務名
      name: spring-config-server
#環境的配置檔案,生産環境、開發環境等
      profile: dev
#服務端的連結
      uri: http://localhost:9090/
#分支,master、develop等
      label: master
           

為什麼要加一個bootstrap.yml檔案呢?因為springboot工程預設的加載配置檔案順序bootstrap.yml在application之前。

步驟三:寫一段測試代碼:

springcloud-config配置中心分布式管理

步驟四:啟動并通路:

springcloud-config配置中心分布式管理

 以上為springcloud config的server端client端的簡單實作,以上模式還有一個缺陷:當檔案倉庫裡面的配置修改時,微服務client端的參數不會立即修改,得重新開機client端後才能加載修改後的配置。下一章将簡單記錄springcloud-bus怎樣解決這一問題。

繼續閱讀