日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微服务配置中心是干啥的_微服务入门到精通-分布式配置中心(续)

發(fā)布時(shí)間:2025/3/21 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务配置中心是干啥的_微服务入门到精通-分布式配置中心(续) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文接之前的《Spring Cloud構(gòu)建微服務(wù)架構(gòu)(四)分布式配置中心》,繼續(xù)來說說Spring Cloud Config的使用。

先來回顧一下,在前文中我們完成了什么:

  • 構(gòu)建了config-server,連接到Git倉庫
  • 在Git上創(chuàng)建了一個(gè)config-repo目錄,用來存儲(chǔ)配置信息
  • 構(gòu)建了config-client,來獲取Git中的配置信息

在本文中,我們繼續(xù)來看看Spring Cloud Config的一些其他能力。

高可用問題

傳統(tǒng)作法

通常在生產(chǎn)環(huán)境,Config Server與服務(wù)注冊中心一樣,我們也需要將其擴(kuò)展為高可用的集群。在之前實(shí)現(xiàn)的config-server基礎(chǔ)上來實(shí)現(xiàn)高可用非常簡單,不需要我們?yōu)檫@些服務(wù)端做任何額外的配置,只需要遵守一個(gè)配置規(guī)則:將所有的Config Server都指向同一個(gè)Git倉庫,這樣所有的配置內(nèi)容就通過統(tǒng)一的共享文件系統(tǒng)來維護(hù),而客戶端在指定Config Server位置時(shí),只要配置Config Server外的均衡負(fù)載即可,就像如下圖所示的結(jié)構(gòu):

注冊為服務(wù)

雖然通過服務(wù)端負(fù)載均衡已經(jīng)能夠?qū)崿F(xiàn),但是作為架構(gòu)內(nèi)的配置管理,本身其實(shí)也是可以看作架構(gòu)中的一個(gè)微服務(wù)。所以,另外一種方式更為簡單的方法就是把config-server也注冊為服務(wù),這樣所有客戶端就能以服務(wù)的方式進(jìn)行訪問。通過這種方法,只需要啟動(dòng)多個(gè)指向同一Git倉庫位置的config-server就能實(shí)現(xiàn)高可用了。

配置過程也非常簡單,具體如下:

config-server配置

  • 在pom.xml的dependencies節(jié)點(diǎn)中引入如下依賴,相比之前的config-server就,加入了spring-cloud-starter-eureka,用來注冊服務(wù)
org.springframework.cloudspring-cloud-config-serverorg.springframework.cloudspring-cloud-starter-eureka
  • 在application.properties中配置參數(shù)eureka.client.serviceUrl.defaultZone以指定服務(wù)注冊中心的位置,詳細(xì)內(nèi)容如下:
spring.application.name=config-serverserver.port=7001# 配置服務(wù)注冊中心eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/# git倉庫配置spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/spring.cloud.config.server.git.searchPaths=Chapter1-1-8/config-repospring.cloud.config.server.git.username=usernamespring.cloud.config.server.git.password=password
  • 在應(yīng)用主類中,新增@EnableDiscoveryClient注解,用來將config-server注冊到上面配置的服務(wù)注冊中心上去。
@EnableDiscoveryClient@EnableConfigServer@SpringBootApplicationpublic class Application {public static void main(String[] args) {new SpringApplicationBuilder(Application.class).web(true).run(args);}}
  • 啟動(dòng)該應(yīng)用,并訪問http://localhost:1111/,可以在Eureka Server的信息面板中看到config-server已經(jīng)被注冊了。

config-client配置

  • 同config-server一樣,在pom.xml的dependencies節(jié)點(diǎn)中新增spring-cloud-starter-eureka依賴,用來注冊服務(wù):
org.springframework.bootspring-boot-starter-weborg.springframework.cloudspring-cloud-starter-configorg.springframework.cloudspring-cloud-starter-eureka
  • 在bootstrap.properties中,按如下配置:
spring.application.name=didispaceserver.port=7002eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/spring.cloud.config.discovery.enabled=truespring.cloud.config.discovery.serviceId=config-serverspring.cloud.config.profile=dev

其中,通過eureka.client.serviceUrl.defaultZone參數(shù)指定服務(wù)注冊中心,用于服務(wù)的注冊與發(fā)現(xiàn),再將spring.cloud.config.discovery.enabled參數(shù)設(shè)置為true,開啟通過服務(wù)來訪問Config Server的功能,最后利用spring.cloud.config.discovery.serviceId參數(shù)來指定Config Server注冊的服務(wù)名。這里的spring.application.name和spring.cloud.config.profile如之前通過URI的方式訪問時(shí)候一樣,用來定位Git中的資源。

  • 在應(yīng)用主類中,增加@EnableDiscoveryClient注解,用來發(fā)現(xiàn)config-server服務(wù),利用其來加載應(yīng)用配置
@EnableDiscoveryClient@SpringBootApplicationpublic class Application {public static void main(String[] args) {new SpringApplicationBuilder(Application.class).web(true).run(args);}}
  • 沿用之前我們創(chuàng)建的Controller來加載Git中的配置信息
@RefreshScope@RestControllerpublic class TestController { @Value("${from}") private String from; @RequestMapping("/from") public String from() { return this.from; }}
  • 完成了上述配置之后,我們啟動(dòng)該客戶端應(yīng)用。若啟動(dòng)成功,訪問http://localhost:1111/,可以在Eureka Server的信息面板中看到該應(yīng)用已經(jīng)被注冊成功了。
  • 訪問客戶端應(yīng)用提供的服務(wù):http://localhost:7002/from,此時(shí),我們會(huì)返回在Git倉庫中didispace-dev.properties文件配置的from屬性內(nèi)容:”git-dev-1.0”。

配置刷新

有時(shí)候,我們需要對配置內(nèi)容做一些實(shí)時(shí)更新的場景,那么Spring Cloud Config是否可以實(shí)現(xiàn)呢?答案顯然是可以的。下面,我們看看如何進(jìn)行改造來實(shí)現(xiàn)配置內(nèi)容的實(shí)時(shí)更新。

在改造程序之前,我們先將config-server和config-client都啟動(dòng)起來,并訪問客戶端提供的REST APIhttp://localhost:7002/from來獲取配置信息,可以獲得返回內(nèi)容為:git-dev-1.0。接著,我們可以嘗試使用Git工具修改當(dāng)前配置的內(nèi)容,比如,將config-repo/didispace-dev.properties中的from的值從from=git-dev-1.0修改為from=git-dev-2.0,再訪問http://localhost:7002/from,可以看到其返回內(nèi)容還是git-dev-1.0。

下面,我們將在config-client端增加一些內(nèi)容和操作以實(shí)現(xiàn)配置的刷新:

  • 在config-clinet的pom.xml中新增spring-boot-starter-actuator監(jiān)控模塊,其中包含了/refresh刷新API。
org.springframework.boot spring-boot-starter-actuator
  • 重新啟動(dòng)config-clinet,訪問一次http://localhost:7002/from,可以看到當(dāng)前的配置值
  • 修改Git倉庫config-repo/didispace-dev.properties文件中from的值
  • 再次訪問一次http://localhost:7002/from,可以看到配置值沒有改變
  • 通過POST請求發(fā)送到http://localhost:7002/refresh,我們可以看到返回內(nèi)容如下,代表from參數(shù)的配置內(nèi)容被更新了
[ "from"]
  • 再次訪問一次http://localhost:7002/from,可以看到配置值已經(jīng)是更新后的值了

通過上面的介紹,大家不難想到,該功能還可以同Git倉庫的Web Hook功能進(jìn)行關(guān)聯(lián),當(dāng)有Git提交變化時(shí),就給對應(yīng)的配置主機(jī)發(fā)送/refresh請求來實(shí)現(xiàn)配置信息的實(shí)時(shí)更新。但是,當(dāng)我們的系統(tǒng)發(fā)展壯大之后,維護(hù)這樣的刷新清單也將成為一個(gè)非常大的負(fù)擔(dān),而且很容易犯錯(cuò),那么有什么辦法可以解決這個(gè)復(fù)雜度呢?后續(xù)我們將繼續(xù)介紹如何通過Spring Cloud Bus來實(shí)現(xiàn)以消息總線的方式進(jìn)行通知配置信息的變化,完成集群上的自動(dòng)化更新。

本文作者 程序猿DD-翟永超 ,

轉(zhuǎn)載自http://blog.didispace.com/spring-cloud-starter-dalston-8-6/

總結(jié)

以上是生活随笔為你收集整理的微服务配置中心是干啥的_微服务入门到精通-分布式配置中心(续)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。