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

Spring Cloud構(gòu)建微服務(wù)架構(gòu):分布式配置中心【Dalston版】

開(kāi)發(fā) 開(kāi)發(fā)工具 分布式
在本文中,我們將學(xué)習(xí)如何構(gòu)建一個(gè)基于Git存儲(chǔ)的分布式配置中心,并對(duì)客戶(hù)端進(jìn)行改造,并讓其能夠從配置中心獲取配置信息并綁定到代碼中的整個(gè)過(guò)程。

Spring Cloud Config是Spring Cloud團(tuán)隊(duì)創(chuàng)建的一個(gè)全新項(xiàng)目,用來(lái)為分布式系統(tǒng)中的基礎(chǔ)設(shè)施和微服務(wù)應(yīng)用提供集中化的外部配置支持,它分為服務(wù)端與客戶(hù)端兩個(gè)部分。其中服務(wù)端也稱(chēng)為分布式配置中心,它是一個(gè)獨(dú)立的微服務(wù)應(yīng)用,用來(lái)連接配置倉(cāng)庫(kù)并為客戶(hù)端提供獲取配置信息、加密/解密信息等訪問(wèn)接口;而客戶(hù)端則是微服務(wù)架構(gòu)中的各個(gè)微服務(wù)應(yīng)用或基礎(chǔ)設(shè)施,它們通過(guò)指定的配置中心來(lái)管理應(yīng)用資源與業(yè)務(wù)相關(guān)的配置內(nèi)容,并在啟動(dòng)的時(shí)候從配置中心獲取和加載配置信息。Spring Cloud Config實(shí)現(xiàn)了對(duì)服務(wù)端和客戶(hù)端中環(huán)境變量和屬性配置的抽象映射,所以它除了適用于Spring構(gòu)建的應(yīng)用程序之外,也可以在任何其他語(yǔ)言運(yùn)行的應(yīng)用程序中使用。由于Spring Cloud Config實(shí)現(xiàn)的配置中心默認(rèn)采用Git來(lái)存儲(chǔ)配置信息,所以使用Spring Cloud Config構(gòu)建的配置服務(wù)器,天然就支持對(duì)微服務(wù)應(yīng)用配置信息的版本管理,并且可以通過(guò)Git客戶(hù)端工具來(lái)方便的管理和訪問(wèn)配置內(nèi)容。當(dāng)然它也提供了對(duì)其他存儲(chǔ)方式的支持,比如:SVN倉(cāng)庫(kù)、本地化文件系統(tǒng)。

[[237179]]

在本文中,我們將學(xué)習(xí)如何構(gòu)建一個(gè)基于Git存儲(chǔ)的分布式配置中心,并對(duì)客戶(hù)端進(jìn)行改造,并讓其能夠從配置中心獲取配置信息并綁定到代碼中的整個(gè)過(guò)程。

準(zhǔn)備配置倉(cāng)庫(kù)

  • 準(zhǔn)備一個(gè)git倉(cāng)庫(kù),可以在碼云或Github上創(chuàng)建都可以。比如本文準(zhǔn)備的倉(cāng)庫(kù)示例:http://git.oschina.net/didispace/config-repo-demo
  • 假設(shè)我們讀取配置中心的應(yīng)用名為config-client,那么我們可以在git倉(cāng)庫(kù)中該項(xiàng)目的默認(rèn)配置文件config-client.yml:
  1. info: 
  2.   profile: default 

為了演示加載不同環(huán)境的配置,我們可以在git倉(cāng)庫(kù)中再創(chuàng)建一個(gè)針對(duì)dev環(huán)境的配置文件config-client-dev.yml:

  1. info: 
  2.   profile: dev 

構(gòu)建配置中心

通過(guò)Spring Cloud Config來(lái)構(gòu)建一個(gè)分布式配置中心非常簡(jiǎn)單,只需要三步:

  • 創(chuàng)建一個(gè)基礎(chǔ)的Spring Boot工程,命名為:config-server-git,并在pom.xml中引入下面的依賴(lài)(省略了parent和dependencyManagement部分):
  1. <dependencies> 
  2.     <dependency> 
  3.         <groupId>org.springframework.cloud</groupId> 
  4.         <artifactId>spring-cloud-config-server</artifactId> 
  5.     </dependency> 
  6. </dependencies> 
  • 創(chuàng)建Spring Boot的程序主類(lèi),并添加@EnableConfigServer注解,開(kāi)啟Spring Cloud Config的服務(wù)端功能。
  1. @EnableConfigServer 
  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.  
  • 在application.yml中添加配置服務(wù)的基本信息以及Git倉(cāng)庫(kù)的相關(guān)信息,例如:
  1. spring 
  2.   application: 
  3.     name: config-server 
  4.   cloud: 
  5.     config: 
  6.       server: 
  7.         git: 
  8.           uri: http://git.oschina.net/didispace/config-repo-demo/ 
  9. server: 
  10.   port: 1201 

到這里,使用一個(gè)通過(guò)Spring Cloud Config實(shí)現(xiàn),并使用Git管理配置內(nèi)容的分布式配置中心就已經(jīng)完成了。我們可以將該應(yīng)用先啟動(dòng)起來(lái),確保沒(méi)有錯(cuò)誤產(chǎn)生,然后再?lài)L試下面的內(nèi)容。

如果我們的Git倉(cāng)庫(kù)需要權(quán)限訪問(wèn),那么可以通過(guò)配置下面的兩個(gè)屬性來(lái)實(shí)現(xiàn);

  • spring.cloud.config.server.git.username:訪問(wèn)Git倉(cāng)庫(kù)的用戶(hù)名
  • spring.cloud.config.server.git.password:訪問(wèn)Git倉(cāng)庫(kù)的用戶(hù)密碼

完成了這些準(zhǔn)備工作之后,我們就可以通過(guò)瀏覽器、POSTMAN或CURL等工具直接來(lái)訪問(wèn)到我們的配置內(nèi)容了。訪問(wèn)配置信息的URL與配置文件的映射關(guān)系如下:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties

上面的url會(huì)映射{application}-{profile}.properties對(duì)應(yīng)的配置文件,其中{label}對(duì)應(yīng)Git上不同的分支,默認(rèn)為master。我們可以嘗試構(gòu)造不同的url來(lái)訪問(wèn)不同的配置內(nèi)容,比如,要訪問(wèn)master分支,config-client應(yīng)用的dev環(huán)境,就可以訪問(wèn)這個(gè)url:http://localhost:1201/config-client/dev/master,并獲得如下返回:

  1.     "name""config-client"
  2.     "profiles": [ 
  3.         "dev" 
  4.     ], 
  5.     "label""master"
  6.     "version"null
  7.     "state"null
  8.     "propertySources": [ 
  9.         { 
  10.             "name""http://git.oschina.net/didispace/config-repo-demo/config-client-dev.yml"
  11.             "source": { 
  12.                 "info.profile""dev" 
  13.             } 
  14.         }, 
  15.         { 
  16.             "name""http://git.oschina.net/didispace/config-repo-demo/config-client.yml"
  17.             "source": { 
  18.                 "info.profile""default" 
  19.             } 
  20.         } 
  21.     ] 

我們可以看到該Json中返回了應(yīng)用名:config-client,環(huán)境名:dev,分支名:master,以及default環(huán)境和dev環(huán)境的配置內(nèi)容。

構(gòu)建客戶(hù)端

在完成了上述驗(yàn)證之后,確定配置服務(wù)中心已經(jīng)正常運(yùn)作,下面我們嘗試如何在微服務(wù)應(yīng)用中獲取上述的配置信息。

  • 創(chuàng)建一個(gè)Spring Boot應(yīng)用,命名為config-client,并在pom.xml中引入下述依賴(lài):
  1. <dependencies> 
  2.     <dependency> 
  3.         <groupId>org.springframework.boot</groupId> 
  4.         <artifactId>spring-boot-starter-web</artifactId> 
  5.     </dependency> 
  6.     <dependency> 
  7.         <groupId>org.springframework.cloud</groupId> 
  8.         <artifactId>spring-cloud-starter-config</artifactId> 
  9.     </dependency> 
  10. </dependencies> 
  • 創(chuàng)建Spring Boot的應(yīng)用主類(lèi),具體如下:
  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.  

創(chuàng)建bootstrap.yml配置,來(lái)指定獲取配置文件的config-server-git位置,例如:

  1. spring: 
  2.   application: 
  3.     name: config-client 
  4.   cloud: 
  5.     config: 
  6.       uri: http://localhost:1201/ 
  7.       profile: default 
  8.       label: master 
  9.  
  10. server: 
  11.   port: 2001 

上述配置參數(shù)與Git中存儲(chǔ)的配置文件中各個(gè)部分的對(duì)應(yīng)關(guān)系如下:

  • spring.application.name:對(duì)應(yīng)配置文件規(guī)則中的{application}部分
  • spring.cloud.config.profile:對(duì)應(yīng)配置文件規(guī)則中的{profile}部分
  • spring.cloud.config.label:對(duì)應(yīng)配置文件規(guī)則中的{label}部分
  • spring.cloud.config.uri:配置中心config-server的地址

這里需要格外注意:上面這些屬性必須配置在bootstrap.properties中,這樣config-server中的配置信息才能被正確加載。

在完成了上面你的代碼編寫(xiě)之后,讀者可以將config-server-git、config-client都啟動(dòng)起來(lái),然后訪問(wèn)http://localhost:2001/info ,我們可以看到該端點(diǎn)將會(huì)返回從git倉(cāng)庫(kù)中獲取的配置信息:

  1.     "profile""default" 

另外,我們也可以修改config-client的profile為dev來(lái)觀察加載配置的變化。

代碼示例

樣例工程將沿用之前在碼云和GitHub上創(chuàng)建的SpringCloud-Learning項(xiàng)目,重新做了一下整理。通過(guò)不同目錄來(lái)區(qū)分Brixton和Dalston的示例。

具體工程說(shuō)明如下:

  • 基于Git倉(cāng)庫(kù)的配置中心:config-server-git
  • 使用配置中心的客戶(hù)端:config-client

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

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

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

2017-07-28 16:41:53

Spring Clou微服務(wù)架構(gòu)

2018-05-23 15:58:27

Spring Clou微服務(wù)架構(gòu)

2017-08-10 11:15:05

Spring Clou微服務(wù)架構(gòu)

2017-08-09 15:50:47

Spring Clou微服務(wù)架構(gòu)

2017-09-09 23:15:20

Spring Clou微服務(wù)架構(gòu)路由

2018-03-02 16:11:29

Spring Clou分布式服務(wù)跟蹤

2017-12-20 15:37:39

Spring Clou微服務(wù)架構(gòu)

2018-03-13 16:42:26

分布式服務(wù)跟蹤

2018-04-09 13:56:13

微服務(wù)架構(gòu)分布式

2018-04-02 15:01:31

微服務(wù)架構(gòu)分布式服務(wù)

2018-04-16 14:56:56

微服務(wù)架構(gòu)分布式服務(wù)

2018-04-18 16:07:49

Spring Clou微服務(wù)分布式

2017-09-15 23:29:53

Spring Clou微服務(wù)架構(gòu)過(guò)濾器

2017-06-26 09:06:10

Spring Clou微服務(wù)架構(gòu)

2019-10-24 11:17:57

架構(gòu)運(yùn)維技術(shù)

2017-09-04 16:15:44

服務(wù)網(wǎng)關(guān)架構(gòu)

2023-08-25 16:26:49

微服務(wù)架構(gòu)

2023-09-12 22:58:51

分布式架構(gòu)微服務(wù)

2018-07-09 09:27:10

Spring Clou微服務(wù)架構(gòu)

2017-07-03 09:50:07

Spring Clou微服務(wù)架構(gòu)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日韩国产中文字幕 | 91热爆在线观看 | 欧美自拍视频 | 亚洲人成人一区二区在线观看 | 国产草草视频 | 国产精品1区2区 | 中文在线观看视频 | 青青草原精品99久久精品66 | 欧美性一级 | 久久草在线视频 | 日韩激情网 | 国产a爽一区二区久久久 | 国产区视频在线观看 | 免费一区二区三区在线视频 | 一区二区三区中文字幕 | 亚洲欧美在线观看 | 色综合久久久久 | 国产sm主人调教女m视频 | 日韩午夜精品 | 日韩中文视频 | 亚洲欧美久久 | 成人高清视频在线观看 | 国产一区二区三区久久久久久久久 | 国产精品久久久久久吹潮日韩动画 | 国产视频久久久 | www.yw193.com| 男女羞羞视频在线看 | 久久成人一区二区三区 | 欧美综合视频 | 久久国产精品无码网站 | 久久久91精品国产一区二区三区 | 久久国产精品网 | 国产成人99久久亚洲综合精品 | 国产精品美女久久久久久不卡 | 国产真实精品久久二三区 | 日韩三级在线观看 | 色av一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 麻豆国产精品777777在线 | 久久最新| 免费精品 |