成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為Spring Cloud Config插上管理的翅膀

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

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

[[238181]]

簡介

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

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

項目地址

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

架構概覽

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

部署方式

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

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

  • Spring Cloud 配置中心:基于Spring Cloud Config構建的配置中心服務端。
  • SCCA REST 服務端:SCCA的核心模塊,實現了SCCA配置管理的持久化內容以及所有的管理操作API。
  • SCCA UI 服務端:SCCA的前端模塊,實現了可視化的配置管理操作界面。

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

全分離模式

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

 

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

案例

SCCA UI 服務端

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

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

Spring Cloud 配置中心(DB存儲)

Spring Cloud 配置中心(Git存儲)

半分離模式

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

SCCA UI模塊與SCCA REST模塊合并

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

案例

SCCA UI與SCCA REST合并的服務端

Spring Cloud 配置中心(DB存儲)

Spring Cloud 配置中心(Git存儲)

注意:對接不同存儲配置中心的配置參考分離部署中兩個SCCA REST服務端的不同配置內容進行調整。

All-In-One模式

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

案例

All-In-One服務端

配置詳解

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

Spring Cloud配置中心的構建與配置

在SCCA的架構中,配置中心的核心完全采用Spring Cloud Config,所以如何構建一個配置中心完全遵循Spring Cloud Config的使用方法。由于目前SCCA的REST模塊主要實現了對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

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

第二種:多個項目公用一個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

這種模式下不同的項目會對應到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}代表環境名。

案例: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設置為jdbc,同時指定獲取配置的SQL,用戶直接復制采用一樣的配置即可。
  • 指定存儲配置的DB連接信息,除了mysql之外也可以使用其他主流關系型數據庫。

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

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

SCCA REST服務端的構建與配置

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

Git存儲模式

當對接的配置中心采用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:配置文件的命名規則

SCCA內部邏輯的存儲庫數據源信息

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

Db存儲模式

當對接的配置中心采用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 

需要注意,當配置中心采用DB存儲的時候,這里的數據源需要一致

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

服務發現支持

如果SCCA REST模塊在訪問配置中心的時候基于服務發現的話還需要引入對應的支持依賴和配置

與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/ 

更多相關配置請參與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的相關配置,比如:

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

更多相關配置請參與Spring Cloud Consul的配置文檔。

公共配置

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

SCCA UI服務端的構建與配置

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

  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 

基于服務發現的配置:

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

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

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

案例:SCCA UI 服務端

管理功能

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

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

系統配置

在管理各個項目的配置之前,我們需要先做一些基礎配置,比如:環境的配置、環境所屬的參數配置,加密相關的配置等。

環境配置

環境配置主要用來維護要使用SCCA統一管理的環境以及對應的Spring Cloud Config服務端信息。

環境配置

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

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

環境參數配置

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

環境參數配置

加密管理

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

加密管理

配置中心

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

項目管理

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

項目管理

這里的三個基本概念與Spring Cloud Config的幾個概念的對應關系如下:

  • 項目名稱:application
  • 部署環境:profile
  • 配置版本:label

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

配置管理

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

配置管理

客戶端接入

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

客戶端加載

通過前面幾節內容,如果您已經完成了SCCA中幾個要素的搭建,下面就來看看如何創建一個Spring Boot項目并通過配置中心來加載配置信息。

絕對地址接入

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

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

2. 創建應用主類

  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. 創建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 

上述配置參數與scca中維護元素的對應關系如下:

  • spring.application.name:對應scca中的項目名
  • spring.cloud.config.profile:項目配置的環境名
  • spring.cloud.config.label:項目配置的版本名
  • spring.cloud.config.uri:配置中心的訪問絕對地址

服務發現接入

1. 創建一個基本的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. 創建應用主類

  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. 創建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 

上述配置參數與scca中維護元素的對應關系如下:

  • spring.application.name:對應scca中的項目名
  • spring.cloud.config.profile:項目配置的環境名
  • spring.cloud.config.label:項目配置的版本名
  • spring.cloud.config.discovery.enabled:開啟服務發現功能
  • spring.cloud.config.discovery.serviceId:配置中心的服務名

讀取配置

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

  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端點實現動態刷新

【本文為51CTO專欄作者“翟永超”的原創稿件,轉載請通過51CTO聯系作者獲取授權】

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

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2015-06-25 17:19:34

云機器人浙江大學華為

2010-05-24 12:16:21

視頻會議

2017-12-04 21:17:51

華為

2017-04-13 12:37:17

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

2019-06-12 12:08:50

戴爾

2019-07-04 11:46:44

智慧安防云存儲軟件

2017-04-20 14:26:29

互聯網智能制造制造業

2018-09-12 16:10:05

2018-11-12 15:17:10

華為云

2013-11-08 17:59:56

SAP中國商業同略會

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

網頁ChromeIE

2013-02-04 11:06:07

山牡澤牡互聯網視頻服務

2011-10-09 09:42:28

用戶研究用戶體驗
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色精品| 欧美二区三区 | 免费观看一级特黄欧美大片 | 91在线视频观看免费 | 国产高清一区二区三区 | 精品视频一区二区三区在线观看 | 91av视频| 国产成人免费在线观看 | 日韩在线播放网址 | 成人国产午夜在线观看 | 日韩在线xx| 久久久久一区 | 一区二区亚洲 | 亚洲中午字幕 | 69堂永久69tangcom | 久久综合伊人 | 最新黄色毛片 | 丁香色婷婷 | 色综合天天综合网国产成人网 | 2一3sex性hd| 一区二区三区免费看 | 美女视频一区二区三区 | 日韩在线资源 | 精品日韩一区 | 国产午夜精品福利 | 亚洲国产第一页 | 日韩成人av在线 | www.久久久.com | 日韩精品视频一区二区三区 | 精品久久久久久久久久久久久久 | 亚洲一区二区中文字幕在线观看 | 91精品久久久久久久99 | 日韩在线观看网站 | 高清色| 搞黄视频免费看 | 久久国产精品视频观看 | 精品国产一二三区 | 久久久久久免费免费 | 91精品国产自产在线老师啪 | 岛国精品 | 久久久www成人免费无遮挡大片 |