最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud 如何提取公共配置

 更新時間:2021年07月16日 12:02:02   作者:指尖涼  
這篇文章主要介紹了SpringCloud 提取公共配置的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringCloud 提取公共配置

在開發(fā)微服務(wù)項目時,通常會有很多服務(wù),此時會用配置中心來管理這些服務(wù)的配置,但有些服務(wù)可能會有相同的配置,比如數(shù)據(jù)源配置,eureka server注冊中心地址配置,actuator開放端口配置等,很多的服務(wù)都需要,如果每個服務(wù)都寫一份這樣相同的配置,服務(wù)一多,也挺麻煩的,并且如果要換一個數(shù)據(jù)庫或注冊中心,每個服務(wù)都得改,很麻煩,所以就需要將這些公共的配置提取出來,放到公共的配置文件中,而這些服務(wù)去引用這些配置即可。

原本服務(wù)的配置文件可能是這樣的:

spring:
  application:
    name: eureka-client
  cloud:
    config:
      uri: http://localhost:8888  #配置中心地址
      label: master
      profile: dev

此時服務(wù)默認(rèn)會去config找名字為eureka-client-dev.yml的配置文件,這個配置文件里可能有eureka server地址,數(shù)據(jù)源配置,redis配置等,而另一個服務(wù)的配置文件可能也有這些相同的配置,這時就可以將這些相同的配置提取出來,放到多個配置文件中,讓服務(wù)去讀取這些配置文件,比如可能有base-dev.yml來放各個服務(wù)公共的配置,datasource-dev.yml來存放數(shù)據(jù)源配置,而eureka-client-dev.yml是這個服務(wù)獨(dú)有的配置,這些配置文件都在config server中,則服務(wù)的工程中的配置文件則可以改成這樣:

spring:
  application:
    name: eureka-client
  cloud:
    config:
      uri: http://localhost:8888  #配置中心地址
      label: master
      profile: dev
      name: eureka-client,base,datasource

這樣eureka-client服務(wù)就會去配置中心讀取這3個配置文件,其他的服務(wù)如果需要,直接在自身的配置中在spring.cloud.config.name屬性中添加文件名即可,而不用再寫相同的配置了。

SpringCloud config 多服務(wù)共享公共配置的解決

問題描述

我們公司的項目是基于SpringCloud開發(fā)的微服務(wù),用到了Spring-Cloud-Config作為微服務(wù)統(tǒng)一的配置中心,可以將散落在各個服務(wù)的配置進(jìn)行統(tǒng)一配置管理。

雖然配置中心將各個應(yīng)用的配置文件進(jìn)行了統(tǒng)一管理, 但是涉及到的一些公共配置,比如數(shù)據(jù)庫連接,redis連接,ftp連接等,依然還散落在各個應(yīng)用的配置文件中,并沒有抽取,我們需要根據(jù)環(huán)境的不同,而動態(tài)修改它們,非常難以維護(hù)。導(dǎo)致每次涉及修改這些公共配置,就非常老火。

所以想到了利用公共文件方法,現(xiàn)在在這里簡單闡述一下如何配置。(下面例子Spring-Cloud-Config-Server都是使用本地配置方式)。

經(jīng)過網(wǎng)上查閱資料,大部分都是采用方法一進(jìn)行配置的,那么我提供了一個方式二配置,也許會讓你眼前一亮,然后留下你的想法,如果是你去選擇,會選擇哪個方法呢?

方法一:

首先在配置中心的 config/ 目錄下創(chuàng)建一個公共配置文件common.yml, 然后在各個應(yīng)用下的 bootstrap.yml 文件中 spring.cloud.config.name 這里去配置多個配置文件名。

例如:

service-a 客戶端的 bootstap.yml:

spring:
  cloud:
    config:
      name: service-a, common

service-b 客戶端的 bootstap.yml:

spring:
  cloud:
    config:
      name: service-b, common

方法二:(比較推薦)

我們還記得springboot單體應(yīng)用的時候, 是如何抽離公共配置呢?答案是用spring.profiles.include 進(jìn)行引用其他公共配置文件。而且它的文件命名有個特點,就是必須是application-開頭的配置文件。

我們也會去想,像spring-cloud-config這樣的配置集中化,這樣的配置會生效嗎?

例如:

首先,我們在 config/ 目錄下創(chuàng)建 application-common-dev.yml 配置文件

然后分別修改 service-a 和 service-b 在 config/ 目錄下的配置文件,配置如下:

service-a 客戶端的 service-a-dev.yml

spring:
  application:
    name: service-a
  #公共配置文件
  profiles:
    include: common-dev

service-b 客戶端的 service-b-dev.yml

spring:
  application:
    name: service-b
  #公共配置文件
  profiles:
    include: common-dev

分別啟動各自的服務(wù),就可以看到服務(wù)啟動成功。

那么,這兩種方式那種更好一些呢?

方法一:

缺點:如果有新加的公共配置文件,需要去每個服務(wù)的bootstrap.yml都去修改一下。并且需要重新發(fā)布jar包。

方法二:

優(yōu)點:配置可以外部化,而且修改配置文件,不需要單獨(dú)發(fā)布jar包。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談用java實現(xiàn)事件驅(qū)動機(jī)制

    淺談用java實現(xiàn)事件驅(qū)動機(jī)制

    這篇文章主要介紹了淺談用java實現(xiàn)事件驅(qū)動機(jī)制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測試方式

    MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測試方式

    這篇文章主要介紹了MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測試方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java事務(wù)回滾失敗問題分析

    java事務(wù)回滾失敗問題分析

    這篇文章主要介紹了java事務(wù)回滾失敗問題分析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 詳解SpringBoot如何開啟異步編程

    詳解SpringBoot如何開啟異步編程

    本文主要介紹了詳解SpringBoot如何開啟異步編程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 解決spring boot網(wǎng)關(guān)gateway導(dǎo)致的坑,無法下載文件問題

    解決spring boot網(wǎng)關(guān)gateway導(dǎo)致的坑,無法下載文件問題

    這篇文章主要介紹了解決spring boot網(wǎng)關(guān)gateway導(dǎo)致的坑,無法下載文件的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實現(xiàn)統(tǒng)計文件夾下所有文件的字?jǐn)?shù)

    Java實現(xiàn)統(tǒng)計文件夾下所有文件的字?jǐn)?shù)

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實現(xiàn)統(tǒng)計文件夾下所有文件的字?jǐn)?shù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • YGC前后新生代是否變大分析詳解

    YGC前后新生代是否變大分析詳解

    要解釋這個問題,我們先要弄清楚YGC的過程,parNew是新生代的gc算法,簡單來說從gc roots開始掃描對象,當(dāng)掃到一個只要是屬于新生代的對象就將其挪到to space,但是老的對象還不會做釋放,直到gc完成之后再看是否釋放老的對象
    2022-01-01
  • ArrayList和LinkedList區(qū)別及使用場景代碼解析

    ArrayList和LinkedList區(qū)別及使用場景代碼解析

    這篇文章主要介紹了ArrayList和LinkedList區(qū)別及使用場景代碼解析,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 使用Netty解決TCP粘包和拆包問題過程詳解

    使用Netty解決TCP粘包和拆包問題過程詳解

    這篇文章主要介紹了使用Netty解決TCP粘包和拆包問題過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java將集合List轉(zhuǎn)換成String字符串(或String轉(zhuǎn)換成List)詳解

    Java將集合List轉(zhuǎn)換成String字符串(或String轉(zhuǎn)換成List)詳解

    今天在寫項目的時候遇到一個問題,就是要把得到的一個集合轉(zhuǎn)換成字符串,下面這篇文章主要給大家介紹了關(guān)于Java將集合List轉(zhuǎn)換成String字符串(或String轉(zhuǎn)換成List)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評論

漳浦县| 什邡市| 林芝县| 唐海县| 贡觉县| 顺平县| 东山县| 信宜市| 阳曲县| 漯河市| 手游| 淮北市| 南开区| 平南县| 嵩明县| 台东县| 千阳县| 苍南县| 靖安县| 茶陵县| 濉溪县| 九台市| 九龙城区| 凤凰县| 上蔡县| 祁东县| 马鞍山市| 尼勒克县| 牟定县| 南郑县| 海宁市| 北辰区| 富源县| 莱芜市| 淳安县| 手游| 保靖县| 托克逊县| 雷山县| 东辽县| 武夷山市|