SpringCloud-config分佈式配置中心

 

爲何要統一管理微服務配置?git

  隨着微服務不斷的增多,每一個微服務都有本身對應的配置文件。在研發過程當中有測試環境、UAT環境、生產環境,所以每一個微服務又對應至少三個不一樣環境的配置文件。這麼多的配置文件,若是須要修改某個公共服務的配置信息,如:緩存、數據庫等,不免會產生混亂,這個時候就須要引入Spring Cloud另一個組件:Spring Cloud Config。 github

 有哪幾種?
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(阿波羅)是攜程框架部門研發的配置管理平臺,可以集中化管理應用不一樣環境、不一樣集羣的配置,配置修改後可以實時推送到應用端。spring

apollo項目基於springboot與springcloud,能夠獨立部署數據庫

Apollo GitHub地址:bootstrap

https://github.com/ctripcorp/apollo緩存

今天重點 

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

客戶端Gradlespringboot

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);
    }
}

  建立三個bootstrapapp

咱們把配置文件放在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遠程的配置庫
          search-paths: local    #選擇是那個配置
          username: ******       #git帳號密碼
          password: ******
server:
  port: 9999clone
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

相關文章
相關標籤/搜索