SpringCloud-config分布式配置中心


 

為什么要統一管理微服務配置?

  隨着微服務不斷的增多,每個微服務都有自己對應的配置文件。在研發過程中有測試環境、UAT環境、生產環境,因此每個微服務又對應至少三個不同環境的配置文件。這么多的配置文件,如果需要修改某個公共服務的配置信息,如:緩存、數據庫等,難免會產生混亂,這個時候就需要引入Spring Cloud另外一個組件:Spring Cloud Config。 

 有哪幾種?
1.SpringCloud config
  Spring Cloud Config是一個解決分布式系統的配置管理方案。它包含了Client和Server兩個部分,Server提供配置文件的存儲、以接口的形式將配置文件的內容提供出去,Client通過接口獲取數據、並依據此數據初始化自己的應用。 

其實就是Server端將所有的配置文件服務化,需要配置文件的服務實例去Config Server獲取對應的數據。將所有的配置文件統一整理,避免了配置文件碎片化。 

如果服務運行期間改變配置文件,服務是不會得到最新的配置信息,需要解決這個問題就需要引入Refresh。可以在服務的運行期間重新加載配置文件。 

當所有的配置文件都存儲在配置中心的時候,配置中心就成為了一個非常重要的組件。如果配置中心出現問題將會導致災難性的后果,因此在生產中建議對配置中心做集群,來支持配置中心高可用性。 
2.nacos(阿里巴巴)
  Nacos 支持基於 DNS 和基於 RPC 的服務發現(可以作為springcloud的注冊中心)、動態配置服務(可以做配置中心)、動態 DNS 服務。
  官網:
  Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您實現動態服務發現、服務配置管理、服務及流量管理。
  Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平台。 Nacos 是構建以“服務”為中心的現代應用架構(例如微服務范式、雲原生范式)的服務基礎設施。
3.Apollo(阿波羅)
  

  Apollo(阿波羅)是攜程框架部門研發的配置管理平台,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端。

apollo項目基於springboot與springcloud,可以獨立部署

Apollo GitHub地址:

https://github.com/ctripcorp/apollo

今天重點 

SpringCloud-config
   接之前的Demo說:創建config-center模塊,引入Gradle
服務端Gradle
 compile 'org.springframework.cloud:spring-cloud-config-server'

客戶端Gradle

compile 'org.springframework.cloud:spring-cloud-starter-config'

啟動類引入ConfigServer代表為配置中心服務端

package org.gd;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

/**
 * @DATA 2019-03-11 09:10
 * @Author 張國偉  WeChat:17630376104
 * @Description TODO
 */
@EnableConfigServer
@SpringBootApplication
public class ConfigConter {
    public static void main(String[] args) {
        SpringApplication.run(ConfigConter.class, args);
    }
}

  創建三個bootstrap

我們把配置文件放在Gitlab上,在Gitlab上創建yml

創建yml

 

   注意:yml的名稱一定一定要和application.name一直,盡量避免沒必要的麻煩
  那我們再看下服務端yml怎么寫
spring:
  application:
    name: config-center
  cloud:
    config:
      server:
        git:
          uri: https://gitlab.com/zgw1469039806/config-center  ###git地址
          clone-on-start: true   #默認情況下,配置服務會在配置文件第一次被請求時clone遠程的配置庫.當然也可以配置為在啟動時clone遠程的配置庫
          search-paths: local    #選擇是那個配置
          username: ******       #git賬號密碼
          password: ******
server:
  port: 9999
spring:
  application:
    name: config-center
  cloud:
    config:
      server:
        git:
          uri: https://gitlab.com/zgw1469039806/config-center.git
          clone-on-start: true
          search-paths: test
          username: *****
          password: *****
server:
  port: 9999

沒錯 兩個個就是環境不一樣

spring:
  profiles:
    active: test

  用主yml來負責啟動時的切換測試環境還是生產環境,如果配置沒有錯誤的話直接訪問可以訪問到yml

直接訪問yml的名字即可,ok到這里配置中心已經配置完畢,那我們再來看下客戶端怎么配置

spring:
  application:
    name: project-shopping-mall
  cloud:
    config:
      uri: http://localhost:9999

 客戶端很簡單,指向config服務端就可以

我們可以看到客戶端直接讀取到git上面,說明配置已經成功。

項目GitHub地址:https://github.com/zgw1469039806/springcloud-project


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM