SpringCloud-config分佈式配置中心

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

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

如果想學習Java工程化、高性能及分佈式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群裡有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

有哪幾種?

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

SpringCloud-config分佈式配置中心

服務端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

SpringCloud-config分佈式配置中心

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

SpringCloud-config分佈式配置中心

創建yml

SpringCloud-config分佈式配置中心

如果想學習Java工程化、高性能及分佈式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群裡有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

注意: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

SpringCloud-config分佈式配置中心

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

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

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

SpringCloud-config分佈式配置中心

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

歡迎工作一到八年的Java工程師朋友們加入Java高級交流:854630135

本群提供免費的學習指導 架構資料 以及免費的解答

不懂得問題都可以在本群提出來 之後還會有直播平臺和講師直接交流噢


分享到:


相關文章: