為Spring Cloud Config插上管理的翅膀

最近一致在更新Spring Cloud Config的相關(guān)內(nèi)容,主要也是為這篇埋個(gè)伏筆,相信不少調(diào)研過(guò)Spring Cloud Config的用戶都會(huì)吐槽它的管理能力太弱。因此,就有了下面為講推薦的這個(gè)開(kāi)源項(xiàng)目,希望對(duì)已經(jīng)入坑Spring Cloud Config的童鞋們有所幫助!

簡(jiǎn)介

在Spring Cloud的微服務(wù)架構(gòu)方案中雖然提供了Spring Cloud Config來(lái)?yè)?dān)任配置中心的角色,但是該項(xiàng)目的功能在配置的管理層面還是非常欠缺的。初期我們可以依賴選取的配置存儲(chǔ)系統(tǒng)(比如:Gitlab、Github)給我們提供的配置管理界面來(lái)操作所有的配置信息,但是這樣的管理還是非常粗粒度的,因此這個(gè)項(xiàng)目的目的就是解決這個(gè)問(wèn)題,通過(guò)此項(xiàng)目,我們將提供一套基于Spring Cloud Config配置中心的可視化管理系統(tǒng)。

在該項(xiàng)目中,我們對(duì)于服務(wù)治理、配置存儲(chǔ)、可視化操作都做了抽象,只要目的就是為了盡可能的兼容所有Spring Cloud Config的用戶。任何Spring Cloud Config僅需要通過(guò)一些簡(jiǎn)單的配置,或者遷移工具就能將原來(lái)正在使用的配置中心統(tǒng)一的管理起來(lái)。

項(xiàng)目地址

如果您覺(jué)得該項(xiàng)目對(duì)您有用,歡迎Star、Follow支持我們!

架構(gòu)概覽

本項(xiàng)目采用了前后端分離的架構(gòu),通過(guò)core模塊抽象了前端需要的操作,再通過(guò)persistence和discovery模塊隔離不同的配置倉(cāng)庫(kù)和不同的服務(wù)注冊(cè)中心,從而達(dá)到前端程序不需要關(guān)心到底使用了什么存儲(chǔ)配置以及使用了什么注冊(cè)中心,這樣用戶可以根據(jù)自己的需要自由的組合不同的配置存儲(chǔ)和服務(wù)治理機(jī)制,盡可能的匹配大部分Spring Cloud用戶的需求。

WechatIMG126.jpeg

部署方式

由于SCCA的架構(gòu)對(duì)各個(gè)功能模塊做了比較細(xì)致的拆分,所以它存在多種不同模式的部署方式,所以它既可以為已經(jīng)在使用Spring Cloud Config提供服務(wù),也可以為從零開(kāi)始使用Spring Cloud Config的用戶。

在SCCA中我們的可部署內(nèi)容自底向上分為三個(gè)部分:

  • Spring Cloud 配置中心:基于Spring Cloud Config構(gòu)建的配置中心服務(wù)端。
  • SCCA REST 服務(wù)端:SCCA的核心模塊,實(shí)現(xiàn)了SCCA配置管理的持久化內(nèi)容以及所有的管理操作API。
  • SCCA UI 服務(wù)端:SCCA的前端模塊,實(shí)現(xiàn)了可視化的配置管理操作界面。

下面我們來(lái)看看SCCA支持哪些多樣的部署方式。

全分離模式

全分離模式就是將上述三個(gè)部分都以獨(dú)立的進(jìn)程進(jìn)行部署,每一個(gè)部分都可以做高可用,具體部署結(jié)構(gòu)可以如下圖所示:

scca-deploy-1.png

這種模式既可以適用于已經(jīng)在使用Spring Cloud Config的用戶,也適用于正準(zhǔn)備開(kāi)始適用的用戶。其中,位于最底層的Spring Cloud配置中心就是一個(gè)最原始的Spring Cloud Config Server。所以,對(duì)于已經(jīng)在使用Spring Cloud Config的用戶只需要再部署一套SCCA REST 服務(wù)端SCCA UI 服務(wù)端,并做一些配置就可以使用SCCA來(lái)管理所有的配置信息了。

案例

半分離模式

所謂的半分離模式就是將上述的三個(gè)模塊中的兩個(gè)進(jìn)行組合部署,以降低復(fù)雜度的部署方式。
SCCA UI模塊與SCCA REST模塊合并

如下圖所示,我們可以將SCCA UI服務(wù)端SCCA REST服務(wù)端組合在一個(gè)程序中來(lái)部署,這樣可以有效的降低全分離模式的部署復(fù)雜度,同時(shí)對(duì)于已經(jīng)在使用Spring Cloud Config的用戶來(lái)說(shuō)非常友好,已經(jīng)部署的配置中心可以繼續(xù)沿用。

scca-deploy-2.png

案例

注意:對(duì)接不同存儲(chǔ)配置中心的配置參考分離部署中兩個(gè)SCCA REST服務(wù)端的不同配置內(nèi)容進(jìn)行調(diào)整。

All-In-One模式

最后介紹一種比較暴力的使用模式,SCCA支持將所有三個(gè)模塊整合在一起使用和部署,在一個(gè)Spring Boot應(yīng)用中同時(shí)包含:Spring Cloud 配置中心、SCCA REST 服務(wù)端以及SCCA UI 服務(wù)端,具體如下所示:

scca-deploy-4.png

案例

配置詳解

本章節(jié)分別對(duì)三個(gè)核心模塊的構(gòu)建方式以及核心的配置內(nèi)容。下面所有的構(gòu)建都是基于Spring Boot構(gòu)建的,所以您需要對(duì)Spring Boot項(xiàng)目的構(gòu)建有基本的認(rèn)識(shí),這里不做介紹。

Spring Cloud配置中心的構(gòu)建與配置

在SCCA的架構(gòu)中,配置中心的核心完全采用Spring Cloud Config,所以如何構(gòu)建一個(gè)配置中心完全遵循Spring Cloud Config的使用方法。由于目前SCCA的REST模塊主要實(shí)現(xiàn)了對(duì)Git存儲(chǔ)和DB存儲(chǔ)的綜合管理,所以對(duì)于Spring Cloud Config的使用也只能支持這兩種模式。下面分別介紹兩種配置中心的搭建與配置。

Git存儲(chǔ)模式

這里主要介紹幾種主要的并且SCCA能夠比較好支持的配置模式:

第一種:多個(gè)項(xiàng)目使用多個(gè)不同Git倉(cāng)庫(kù)存儲(chǔ)的模式

spring.cloud.config.server.git.uri=https://github.com/dyc87112/{application}.git
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=

這種模式下不同的項(xiàng)目會(huì)對(duì)應(yīng)的不同的Git倉(cāng)庫(kù),如果項(xiàng)目中spring.application.name=user-service,那么它的配置倉(cāng)庫(kù)會(huì)定位到https://github.com/dyc87112/user-service.git倉(cāng)庫(kù)下的配置。配置文件按application-{profile}.properties的格式存儲(chǔ),{profile}代表環(huán)境名。

第二種:多個(gè)項(xiàng)目公用一個(gè)Git倉(cāng)庫(kù)不同目錄的存儲(chǔ)模式

spring.cloud.config.server.git.uri=https://github.com/dyc87112/config-repo.git
spring.cloud.config.server.git.search-paths=/{application}
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=

這種模式下不同的項(xiàng)目會(huì)對(duì)應(yīng)到https://github.com/dyc87112/config-repo.git倉(cāng)庫(kù)下的不同目錄,如果項(xiàng)目中spring.application.name=user-service,那么它的配置倉(cāng)庫(kù)會(huì)定位到https://github.com/dyc87112/config-repo.git倉(cāng)庫(kù)下的/user-service目錄。配置文件按application-{profile}.properties的格式存儲(chǔ),{profile}代表環(huán)境名。

案例:Spring Cloud 配置中心(Git存儲(chǔ))

Db存儲(chǔ)模式

在使用Db存儲(chǔ)模式的時(shí)候,必須使用Spring Cloud的Edgware版本以上。比如,可以采用下面的配置:

# config server with jdbc
spring.profiles.active=jdbc
spring.cloud.config.server.jdbc.sql=SELECT `p_key`, `p_value` FROM property a, project b, env c, label d where a.project_id=b.id and a.env_id=c.id and a.label_id=d.id and b.name=? and c.name=? and d.name=?

# Datasource, share with scca-rest-server
spring.datasource.url=jdbc:mysql://localhost:3306/config-db
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

主要分為兩個(gè)部分:

  • 激活采用DB存儲(chǔ)的模式:將spring.profiles.active設(shè)置為jdbc,同時(shí)指定獲取配置的SQL,用戶直接復(fù)制采用一樣的配置即可。
  • 指定存儲(chǔ)配置的DB連接信息,除了mysql之外也可以使用其他主流關(guān)系型數(shù)據(jù)庫(kù)。

這里需要注意的,使用的DB要與后續(xù)介紹的SCCA REST模塊采用同一個(gè)DB

案例:Spring Cloud 配置中心(DB存儲(chǔ))

SCCA REST服務(wù)端的構(gòu)建與配置

在構(gòu)建SCCA REST服務(wù)端的時(shí)候針對(duì)對(duì)接不同的配置存儲(chǔ)有一些不同的配置要求,所以下面按目前支持的存儲(chǔ)模式做不同的介紹。

Git存儲(chǔ)模式

當(dāng)對(duì)接的配置中心采用Git存儲(chǔ)的時(shí)候,需要引入以下核心依賴:

<dependency>
    <groupId>com.didispace</groupId>
    <artifactId>scca-rest</artifactId>
    <version>1.0.0-RELEASE</version>
</dependency>

<!-- scca persistence dependency -->
<dependency>
    <groupId>com.didispace</groupId>
    <artifactId>scca-persistence-git</artifactId>
    <version>1.0.0-RELEASE</version>
</dependency>

需要按如下配置:

# if config server use git, need config these properties
scca.git.username=
scca.git.password=
scca.git.repo-uri=https://github.com/dyc87112/{application}.git
scca.git.base-path=
scca.git.file-pattern=application-{profile}.properties

# Datasource
spring.datasource.url=jdbc:mysql://localhost:3306/config-db
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

主要兩部分:

  • 對(duì)接的git存儲(chǔ)的配置:
    • scca.git.username:訪問(wèn)git的用戶名
    • scca.git.password:訪問(wèn)git的密碼
    • scca.git.repo-uri:配置git倉(cāng)庫(kù)的地址,與配置中心的spring.cloud.config.server.git.uri配置一致
    • scca.git.base-path:配置文件存儲(chǔ)的相對(duì)路徑,與配置中心的spring.cloud.config.server.git.search-paths配置一致
    • scca.git.file-pattern:配置文件的命名規(guī)則
  • SCCA內(nèi)部邏輯的存儲(chǔ)庫(kù)數(shù)據(jù)源信息

案例:SCCA REST 服務(wù)端(對(duì)接Git存儲(chǔ)的配置中心)

Db存儲(chǔ)模式

當(dāng)對(duì)接的配置中心采用Git存儲(chǔ)的時(shí)候,需要引入以下核心依賴:

<dependency>
    <groupId>com.didispace</groupId>
    <artifactId>scca-rest</artifactId>
    <version>1.0.0-RELEASE</version>
</dependency>

<!-- scca persistence dependency -->
<dependency>
    <groupId>com.didispace</groupId>
    <artifactId>scca-persistence-db</artifactId>
    <version>1.0.0-RELEASE</version>
</dependency>

需要按如下配置:

# Datasource
spring.datasource.url=jdbc:mysql://localhost:3306/config-db
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

需要注意,當(dāng)配置中心采用DB存儲(chǔ)的時(shí)候,這里的數(shù)據(jù)源需要一致

案例:SCCA REST 服務(wù)端(對(duì)接DB存儲(chǔ)的配置中心)

服務(wù)發(fā)現(xiàn)支持

如果SCCA REST模塊在訪問(wèn)配置中心的時(shí)候基于服務(wù)發(fā)現(xiàn)的話還需要引入對(duì)應(yīng)的支持依賴和配置

與Eureka的整合

如果使用eureak,那么需要引入如下依賴:

<!-- scca discovery dependency-->
<dependency>
    <groupId>com.didispace</groupId>
    <artifactId>scca-discovery-eureka</artifactId>
    <version>1.0.0-RELEASE</version>
</dependency>

并且在配置中加入eureka的配置,比如:

eureka.client.serviceUrl.defaultZone=http://eureka.didispace.com/eureka/

更多相關(guān)配置請(qǐng)參與Spring Cloud Netflix Eureka的配置文檔。

與Consul的整合

如果使用consul,那么需要引入如下依賴:

<!-- scca discovery dependency-->
<dependency>
    <groupId>com.didispace</groupId>
    <artifactId>scca-discovery-consul</artifactId>
    <version>1.0.0-RELEASE</version>
</dependency>

并且在配置中加入consul的相關(guān)配置,比如:

spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

更多相關(guān)配置請(qǐng)參與Spring Cloud Consul的配置文檔。

公共配置

SCCA REST模塊還有一個(gè)特別的配置scca.rest.context-path=/xhr,該配置主要用來(lái)配置所有SCCA REST模塊接口的前綴,該接口主要用于與SCCA UI模塊對(duì)接時(shí)候使用,兩邊必須對(duì)接一致才能順利對(duì)接。

SCCA UI服務(wù)端的構(gòu)建與配置

SCCA UI服務(wù)端需要引入以下核心依賴:

<dependency>
    <groupId>com.didispace</groupId>
    <artifactId>scca-ui</artifactId>
    <version>1.0.0-RELEASE</version>
</dependency>

另外,還需要在配置中指定具體要訪問(wèn)的SCCA REST模塊的位置,主要有兩種模式:

  • 指定地址的配置:
scca.ui.rest-server-url=http://localhost:10130
  • 基于服務(wù)發(fā)現(xiàn)的配置:
scca.ui.rest-server-name=scca-rest-server

除了上面的配置之后,還需要引入eureka或consul的依賴以及做對(duì)應(yīng)的配置

最后,還有一個(gè)scca.ui.rest-server-context-path=/xhr配置,用來(lái)描述要訪問(wèn)的SCCA REST模塊接口的前綴,與SCCA REST服務(wù)端的scca.rest.context-path=/xhr配置相對(duì)應(yīng)。

案例:SCCA UI 服務(wù)端

管理功能

通過(guò)之前介紹的任何一個(gè)部署方式搭建了配置中心和管理端之后,我們就可以打開(kāi)瀏覽器訪問(wèn)我們的UI模塊實(shí)現(xiàn)對(duì)配置中心的管理了。

訪問(wèn)地址為:http://localhost:10032/admin/,ip與端口根據(jù)實(shí)際部署UI模塊的情況進(jìn)行調(diào)整。

系統(tǒng)配置

在管理各個(gè)項(xiàng)目的配置之前,我們需要先做一些基礎(chǔ)配置,比如:環(huán)境的配置、環(huán)境所屬的參數(shù)配置,加密相關(guān)的配置等。

環(huán)境配置

環(huán)境配置主要用來(lái)維護(hù)要使用SCCA統(tǒng)一管理的環(huán)境以及對(duì)應(yīng)的Spring Cloud Config服務(wù)端信息。

![user-guilder-2.png](https://upload-images.jianshu.io/upload_images/1447174-3c2629f8a8b1f448.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

如上圖所示,通過(guò)“新增環(huán)境”按鈕可以添加一個(gè)部署環(huán)境。當(dāng)我們使用了Eureka、Consul等注冊(cè)中心時(shí),只需要配置注冊(cè)中心的訪問(wèn)地址和配置中心的服務(wù)名以及配置中心訪問(wèn)的前綴,后續(xù)就可以方便的使用這個(gè)環(huán)境的配置中心來(lái)進(jìn)行加密解密、拉取配置等一系列的操作了。

如果不采用服務(wù)發(fā)現(xiàn)的機(jī)制取找到配置中心,也可以將注冊(cè)中心地址留空,配置中心服務(wù)名一欄直接配置訪問(wèn)注冊(cè)中心的URL即可。

環(huán)境參數(shù)配置

環(huán)境參數(shù)配置主要用來(lái)配置每個(gè)環(huán)境所屬的一些特有配置信息,比如:redis的地址,eureka的地址等等。這些配置信息將用戶后續(xù)為各項(xiàng)目在各個(gè)環(huán)境配置的時(shí)候給予參考和快捷的替換操作提供元數(shù)據(jù)。

加密管理

加密管理主要用來(lái)維護(hù)一些通常需要加密的Key,這樣可以在后續(xù)編輯配置內(nèi)容的時(shí)候,方便的進(jìn)行批量加密操作。

配置中心

在完成了上面的系統(tǒng)配置之后,用戶就可以進(jìn)入配置中心模塊,這里會(huì)提供具體的管理配置內(nèi)容的功能。目前主要有兩部分組成:項(xiàng)目管理和配置管理。

項(xiàng)目管理

項(xiàng)目管理主要用來(lái)維護(hù)需要在各個(gè)環(huán)境部署的應(yīng)用的配置信息,這里可以維護(hù)這個(gè)項(xiàng)目需要部署在什么環(huán)境,有多少配置的版本。

user-guilder-4.png

這里的三個(gè)基本概念與Spring Cloud Config的幾個(gè)概念的對(duì)應(yīng)關(guān)系如下:

  • 項(xiàng)目名稱:application
  • 部署環(huán)境:profile
  • 配置版本:label

這里配置版本(label),我們會(huì)默認(rèn)采用master。需要同時(shí)存在多個(gè)配置版本,實(shí)現(xiàn)灰度配置的時(shí)候,用戶也可以自己添加label。

配置管理

配置管理功能是SCCA的核心,在這里用戶可以方便對(duì)各個(gè)應(yīng)用、各個(gè)環(huán)境、各個(gè)版本的配置進(jìn)行編輯、加密等操作。同時(shí),也提供了一些快捷的操作,比如:根據(jù)環(huán)境參數(shù)配置一鍵替換、根據(jù)加密Key清單實(shí)現(xiàn)一鍵加密、通過(guò)配置中心可以加載到的配置信息等(更多便捷功能持續(xù)添加中...)

user-guilder-5.png

客戶端接入

本頁(yè)主要提供給沒(méi)有使用過(guò)Spring Cloud Config的用戶閱讀。如果您已經(jīng)使用過(guò)Spring Cloud Config,那么客戶端如何通過(guò)Spring Cloud Config的配置中心加載配置相信已經(jīng)掌握,在使用本項(xiàng)目的時(shí)候,無(wú)非就是搭建SCCA-REST模塊和SCCA-UI模塊來(lái)幫助管理您目前的配置內(nèi)容。

客戶端加載

通過(guò)前面幾節(jié)內(nèi)容,如果您已經(jīng)完成了SCCA中幾個(gè)要素的搭建,下面就來(lái)看看如何創(chuàng)建一個(gè)Spring Boot項(xiàng)目并通過(guò)配置中心來(lái)加載配置信息。

絕對(duì)地址接入

1. 創(chuàng)建一個(gè)基本的Spring Boot項(xiàng)目,并在pom.xml中引入依賴

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

2. 創(chuàng)建應(yīng)用主類

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}

3. 創(chuàng)建bootstrap.properties配置文件(也可以使用yaml可以)

spring.application.name=config-client
server.port=12000

spring.cloud.config.uri=http://localhost:10032/scca-config-server
spring.cloud.config.profile=stage
spring.cloud.config.label=master

上述配置參數(shù)與scca中維護(hù)元素的對(duì)應(yīng)關(guān)系如下:

  • spring.application.name:對(duì)應(yīng)scca中的項(xiàng)目名
  • spring.cloud.config.profile:項(xiàng)目配置的環(huán)境名
  • spring.cloud.config.label:項(xiàng)目配置的版本名
  • spring.cloud.config.uri:配置中心的訪問(wèn)絕對(duì)地址

服務(wù)發(fā)現(xiàn)接入

1. 創(chuàng)建一個(gè)基本的Spring Boot項(xiàng)目,并在pom.xml中引入依賴

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

上面以通過(guò)eureka做注冊(cè)中心的依賴,如果用consul,只需要將spring-cloud-starter-eureka換成spring-cloud-starter-consul-discovery即可。

2. 創(chuàng)建應(yīng)用主類

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}

3. 創(chuàng)建bootstrap.properties配置文件(也可以使用yaml可以)

spring.application.name=config-client
server.port=12000

spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.profile=stage
spring.cloud.config.label=master

上述配置參數(shù)與scca中維護(hù)元素的對(duì)應(yīng)關(guān)系如下:

  • spring.application.name:對(duì)應(yīng)scca中的項(xiàng)目名
  • spring.cloud.config.profile:項(xiàng)目配置的環(huán)境名
  • spring.cloud.config.label:項(xiàng)目配置的版本名
  • spring.cloud.config.discovery.enabled:開(kāi)啟服務(wù)發(fā)現(xiàn)功能
  • spring.cloud.config.discovery.serviceId:配置中心的服務(wù)名

讀取配置

通過(guò)上面的兩種方式從配置中心拉取配置之后,在Spring Boot項(xiàng)目中就可以輕松的使用所有配置內(nèi)容了,比如:

@RefreshScope
@RestController
public class TestController {

    @Value("${a.b.c}")
    private String abc;

    @RequestMapping("/abc")
    public String abc() {
        return this.abc;
    }

}

兩個(gè)主要注解的說(shuō)明:

  • @Value("${a.b.c}"):讀取配置key為a.b.c的value值
  • @RefreshScope:下面的配置信息可以通過(guò)/refresh端點(diǎn)實(shí)現(xiàn)動(dòng)態(tài)刷新

其他參考

如果您還不了解Spring Cloud Config,您也可以閱讀下面的幾篇了解一下最原始的Spring Cloud Config配置中心和客戶端接入方式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評(píng)論 6 342
  • 微服務(wù)架構(gòu)模式的核心在于如何識(shí)別服務(wù)的邊界,設(shè)計(jì)出合理的微服務(wù)。但如果要將微服務(wù)架構(gòu)運(yùn)用到生產(chǎn)項(xiàng)目上,并且能夠發(fā)揮...
    程序員技術(shù)圈閱讀 2,839評(píng)論 10 27
  • 軟件是有生命的,你做出來(lái)的架構(gòu)決定了這個(gè)軟件它這一生是坎坷還是幸福。 本文不是講解如何使用Spring Cloud...
    Bobby0322閱讀 22,990評(píng)論 3 166
  • 前言 Spring Cloud Config是Spring Cloud團(tuán)隊(duì)創(chuàng)建的一個(gè)全新項(xiàng)目,用來(lái)為分布式系統(tǒng)中的...
    Chandler_玨瑜閱讀 4,977評(píng)論 9 27

友情鏈接更多精彩內(nèi)容