偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為Spring Cloud Config插上管理的翅膀

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

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

[[238181]]

簡介

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

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

項目地址

Github: https://github.com/dyc87112/spring-cloud-config-admin

Gitee:https://gitee.com/didispace/spring-cloud-config-admin

前端Github: https://github.com/stone-jin/spring-cloud-config-admin-web

前端Gitee: https://gitee.com/stone-jin/spring-cloud-config-admin-web

架構(gòu)概覽

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

部署方式

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

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

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

下面我們來看看SCCA支持哪些多樣的部署方式。

全分離模式

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

 

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

案例

SCCA UI 服務(wù)端

SCCA REST 服務(wù)端(對接DB存儲的配置中心)

SCCA REST 服務(wù)端(對接Git存儲的配置中心)

Spring Cloud 配置中心(DB存儲)

Spring Cloud 配置中心(Git存儲)

半分離模式

所謂的半分離模式就是將上述的三個模塊中的兩個進行組合部署,以降低復(fù)雜度的部署方式。

SCCA UI模塊與SCCA REST模塊合并

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

案例

SCCA UI與SCCA REST合并的服務(wù)端

Spring Cloud 配置中心(DB存儲)

Spring Cloud 配置中心(Git存儲)

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

All-In-One模式

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

案例

All-In-One服務(wù)端

配置詳解

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

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

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

Git存儲模式

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

***種:多個項目使用多個不同Git倉庫存儲的模式

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

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

第二種:多個項目公用一個Git倉庫不同目錄的存儲模式

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

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

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

Db存儲模式

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

  1. # config server with jdbc 
  2. spring.profiles.active=jdbc 
  3. 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=? 
  4.  
  5. # Datasource, share with scca-rest-server 
  6. spring.datasource.url=jdbc:mysql://localhost:3306/config-db 
  7. spring.datasource.username=root 
  8. spring.datasource.password
  9. spring.datasource.driver-class-name=com.mysql.jdbc.Driver 

主要分為兩個部分:

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

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

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

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

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

Git存儲模式

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

  1. <dependency> 
  2.     <groupId>com.didispace</groupId> 
  3.     <artifactId>scca-rest</artifactId> 
  4.     <version>1.0.0-RELEASE</version> 
  5. </dependency> 
  6.  
  7. <!-- scca persistence dependency --> 
  8. <dependency> 
  9.     <groupId>com.didispace</groupId> 
  10.     <artifactId>scca-persistence-git</artifactId> 
  11.     <version>1.0.0-RELEASE</version> 
  12. </dependency> 

需要按如下配置:

  1. # if config server use git, need config these properties 
  2. scca.git.username= 
  3. scca.git.password
  4. scca.git.repo-uri=https://github.com/dyc87112/{application}.git 
  5. scca.git.base-path= 
  6. scca.git.file-pattern=application-{profile}.properties 
  7.  
  8. # Datasource 
  9. spring.datasource.url=jdbc:mysql://localhost:3306/config-db 
  10. spring.datasource.username=root 
  11. spring.datasource.password
  12. spring.datasource.driver-class-name=com.mysql.jdbc.Driver 

主要兩部分:

對接的git存儲的配置:

  • scca.git.username:訪問git的用戶名
  • scca.git.password:訪問git的密碼
  • scca.git.repo-uri:配置git倉庫的地址,與配置中心的spring.cloud.config.server.git.uri配置一致
  • scca.git.base-path:配置文件存儲的相對路徑,與配置中心的spring.cloud.config.server.git.search-paths配置一致
  • scca.git.file-pattern:配置文件的命名規(guī)則

SCCA內(nèi)部邏輯的存儲庫數(shù)據(jù)源信息

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

Db存儲模式

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

  1. <dependency> 
  2.     <groupId>com.didispace</groupId> 
  3.     <artifactId>scca-rest</artifactId> 
  4.     <version>1.0.0-RELEASE</version> 
  5. </dependency> 
  6.  
  7. <!-- scca persistence dependency --> 
  8. <dependency> 
  9.     <groupId>com.didispace</groupId> 
  10.     <artifactId>scca-persistence-db</artifactId> 
  11.     <version>1.0.0-RELEASE</version> 
  12. </dependency> 

需要按如下配置:

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

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

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

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

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

與Eureka的整合

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

  1. <!-- scca discovery dependency--> 
  2. <dependency> 
  3.     <groupId>com.didispace</groupId> 
  4.     <artifactId>scca-discovery-eureka</artifactId> 
  5.     <version>1.0.0-RELEASE</version> 
  6. </dependency> 

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

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

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

與Consul的整合

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

  1. <!-- scca discovery dependency--> 
  2. <dependency> 
  3.     <groupId>com.didispace</groupId> 
  4.     <artifactId>scca-discovery-consul</artifactId> 
  5.     <version>1.0.0-RELEASE</version> 
  6. </dependency> 

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

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

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

公共配置

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

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

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

  1. <dependency> 
  2.     <groupId>com.didispace</groupId> 
  3.     <artifactId>scca-ui</artifactId> 
  4.     <version>1.0.0-RELEASE</version> 
  5. </dependency> 

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

指定地址的配置:

  1. scca.ui.rest-server-url=http://localhost:10130 

基于服務(wù)發(fā)現(xiàn)的配置:

  1. scca.ui.rest-server-name=scca-rest-server 

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

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

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

管理功能

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

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

系統(tǒng)配置

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

環(huán)境配置

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

環(huán)境配置

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

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

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

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

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

加密管理

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

加密管理

配置中心

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

項目管理

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

項目管理

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

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

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

配置管理

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

配置管理

客戶端接入

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

客戶端加載

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

絕對地址接入

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

  1. <dependency> 
  2.     <groupId>org.springframework.cloud</groupId> 
  3.     <artifactId>spring-cloud-starter-config</artifactId> 
  4. </dependency> 

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

  1. @SpringBootApplication 
  2. public class Application { 
  3.  
  4.     public static void main(String[] args) { 
  5.         new SpringApplicationBuilder(Application.class).web(true).run(args); 
  6.     } 
  7.  

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

  1. spring.application.name=config-client 
  2. server.port=12000 
  3.  
  4. spring.cloud.config.uri=http://localhost:10032/scca-config-server 
  5. spring.cloud.config.profile=stage 
  6. spring.cloud.config.label=master 

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

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

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

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

  1. <dependency> 
  2.     <groupId>org.springframework.cloud</groupId> 
  3.     <artifactId>spring-cloud-starter-config</artifactId> 
  4. </dependency> 
  5. <dependency> 
  6.     <groupId>org.springframework.cloud</groupId> 
  7.     <artifactId>spring-cloud-starter-eureka</artifactId> 
  8. </dependency> 

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

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

  1. @EnableDiscoveryClient 
  2. @SpringBootApplication 
  3. public class Application { 
  4.  
  5.     public static void main(String[] args) { 
  6.         new SpringApplicationBuilder(Application.class).web(true).run(args); 
  7.     } 
  8.  

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

  1. spring.application.name=config-client 
  2. server.port=12000 
  3.  
  4. spring.cloud.config.discovery.enabled=true 
  5. spring.cloud.config.discovery.serviceId=config-server 
  6. spring.cloud.config.profile=stage 
  7. spring.cloud.config.label=master 

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

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

讀取配置

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

  1. @RefreshScope 
  2. @RestController 
  3. public class TestController { 
  4.  
  5.     @Value("${a.b.c}"
  6.     private String abc; 
  7.  
  8.     @RequestMapping("/abc"
  9.     public String abc() { 
  10.         return this.abc; 
  11.     } 
  12.  

兩個主要注解的說明:

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

【本文為51CTO專欄作者“翟永超”的原創(chuàng)稿件,轉(zhuǎn)載請通過51CTO聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2015-06-25 17:19:34

云機器人浙江大學(xué)華為

2010-05-24 12:16:21

視頻會議

2017-12-04 21:17:51

華為

2017-04-13 12:37:17

智能制造石油和化工智慧云

2019-06-12 12:08:50

戴爾

2017-04-20 14:26:29

互聯(lián)網(wǎng)智能制造制造業(yè)

2019-07-04 11:46:44

智慧安防云存儲軟件

2018-09-12 16:10:05

2018-11-12 15:17:10

華為云

2013-11-08 17:59:56

SAP中國商業(yè)同略會

2024-09-26 17:50:33

2009-03-24 13:20:56

Nehalem多核Intel

2024-11-21 15:36:49

微軟AI Shell

2014-10-11 16:30:49

機場信息化華為

2009-06-16 10:33:30

IPv6無線寬帶阿德利亞

2013-07-02 11:45:29

2016-10-20 08:57:17

網(wǎng)頁ChromeIE

2013-02-04 11:06:07

山牡澤牡互聯(lián)網(wǎng)視頻服務(wù)

2022-07-11 15:19:32

數(shù)字孿生數(shù)據(jù)中心
點贊
收藏

51CTO技術(shù)棧公眾號