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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springCloud学习1(集中式配置管理)

發布時間:2023/12/31 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springCloud学习1(集中式配置管理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

springcloud 總集:www.tapme.top/blog/detail…

一、前言

??在開發普通的 web 應用中,我們通常是將配置項寫在單獨的配置文件中,比如application.yml,application.properties,但是在微服務架構中,可能會出現數百個微服務,如果每個微服務將配置文件寫在自身的配置文件中,會導致配置文件的管理非常復雜。因此集中式的配置管理是非常有必要的,每個服務啟動時從集中式的存儲庫中讀取需要的配置信息。其模型如下:

簡單來說就是如下幾點:

  • 啟動一個微服務實例時向配置管理服務請求獲取其所在環境的特定配置文件
  • 實際的配置信息駐留在存儲庫中。可以選擇不同的實現來保存配置數據,包含:源代碼控制下的文件、關系數據庫或鍵值數據存儲
  • 應用程序配置數據的實際管理和應用程序無關。配置的更改通常通過構建和部署管道來處理
  • 進行配置管理更改時,必須通知使用該配置的服務實例
  • ??由于本系列為 spring cloud,所以使用Spring Cloud Config來構建配置管理,當然還有很多其他優秀的解決方案(Etcd,Eureka,Consul...)。

    二、構建配置服務

    ??spring cloud 是建立在 spring boot 的基礎上的,因此需要有 spring boot 的構建基礎。

    1、pom 編寫

    ??pom 主要依賴如下(篇幅原因列出主要內容,完整代碼請到 github 上查看),spring boot 版本和 spring cloud 版本如下,之后不在贅述:

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.4.RELEASE</version> </parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Camden.SR5</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Camden.SR5</spring-cloud.version> </properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> </dependencies> 復制代碼

    2、注解引導類

    ??只需在 spring boot 啟動類上加入一個@EnableConfigServer注解即可。

    3、配置服務配置編寫(使用文件存儲)

    ??這里是給配置服務使用的配置文件,用于聲明端口,存儲庫類別等信息,并不是給其他微服務使用的配置。配置如下(使用文件存儲配置信息):

    server: port: 8888 spring: profiles:# 使用文件系統來存儲配置信息,需要設置為native active: native cloud: config: server: native:# 使用文件來存放配置文件,為每個應用程序提供用逗號分隔的文件夾列表 searchLocations: file:///D:/configFolder/licensingservice 復制代碼

    4、創建供應用程序使用的配置文件

    ??通過上面的searchLocations可知目前有一個名為 licensingservice 的應用程序,在對應目錄下創建如下三個配置文件:

    • licensingservice.yml
    server: port: 10010 spring: application: name: licensingservice 復制代碼
    • licensingservice-dev.yml
    server: port: 10011 復制代碼
    • licensingservice-prod.yml
    server: port: 10012 復制代碼

    配置文件命名約定為:應用程序名稱-環境名稱.yml。現在啟動應用便能通過 http 請求來獲取配置了。

    ??請求localhost:8888/licensingservice/default,返回結果如下:

    {"name": "licensingservice","profiles": ["default"],"label": null,"version": null,"state": null,"propertySources": [{"name": "file:///D:/configFolder/licensingservice/licensingservice.yml","source": {"server.port": 10001,"spring.application.name": "licensingservice"}}] } 復制代碼

    ??請求localhost:8888/licensingservice/dev,返回結果如下:

    {"name": "licensingservice","profiles": ["dev"],"label": null,"version": null,"state": null,"propertySources": [{"name": "file:///D:/configFolder/licensingservice/licensingservice-dev.yml","source": {"server.port": 10011}},{"name": "file:///D:/configFolder/licensingservice/licensingservice.yml","source": {"server.port": 10001,"spring.application.name": "licensingservice"}}] } 復制代碼

    二、和 spring boot 客戶端集成

    ??上面寫了如何使用 spring cloud config 構建配置服務,這一節來構建 licensingserivce 服務,使用上面的配置服務來獲取配置文件。

    1、創建 springboot 工程

    ??創建 springboot 項目 licensingservice,主要依賴如下:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-client</artifactId> </dependency> 復制代碼

    2、編寫配置文件

    ??共兩個配置文件,application.yml,bootstrap.yml

    • application.yml

      本配置文件用于存放留在本地配置信息,如果存在同名配置,本地的會被覆蓋,不會生效

      server: port: 10099 復制代碼
    • bootstrap.yml

      給 spring cloud config client 讀取的配置文件,根據該配置向配置中心請求

      spring: application:#指定名稱,以便spring cloud config客戶端知道查找哪個配置 name: licensingservice profiles:#指定環境(default,dev,prod) active: dev cloud: config:#指定config server地址 uri: http://localhost:8888 復制代碼

      PS:如果想要覆蓋 bootstrap.yml 的配置可在啟動命令加上-d 參數,如:

      java -Dsptring.cloud.config.uri=.... -Dspring.profiles.active=prod xxxxx.jar

    3、啟動

    ??啟動 licensingservice 可以發現啟動端口為 10011,說明遠程讀取配置生效了。

    三、使用 git 作為配置服務的數據源

    1、創建源配置文件

    ??在 github 某個倉庫下創建配置文件,比如在github.com/FleyX/demo-…倉庫下的springcloud/config目錄下創建 licengingservice 服務的配置文件。

    2、修改 config server 配置文件

    ??修改 confsvr 中的 application.yml

    server: port: 8888 spring: profiles:# 使用文件系統來存儲配置信息,需要設置為native,git設置為git active: git application: name: test cloud: config: server: native:# 使用文件來存放配置文件,為每個應用程序提供用逗號分隔的文件夾列表 searchLocations: file:///D:/configFolder/licensingservice git: uri: https://github.com/FleyX/demo-project# 查找配置文件路徑(,分隔) search-paths: springcloud/config/licensingservice#如果為公開倉庫,用戶名密碼可不填寫 username: password:#配置git倉庫的分支 label: master 復制代碼

    3、啟動

    ??重新啟動,即可發現配置成功生效。

    四、配置刷新

    ??使用 spring cloud 配置服務器時,有一個問題是如何在屬性變化時動態刷新應用程序。spring cloud 配置服務始終提供最新版本的屬性,對低層存儲庫屬性的更改將會是最新的。但是 config client 并不會知道配置的變更,因此不會自動刷新屬性。

    ??Spring Boot Actuator 提供了一個@RefreshScope屬性來重新讀取應用程序配置信息,開發人員可通過/refresh進行刷新。該注釋需要注釋在啟動入口類上。注意:只會加載自定義 Spring 屬性,例如數據庫,端口等配置不會重新加載

    總結

    ??本篇只是用到了 spring-cloud-config 這個來進行配置集中管理,并沒有涉及到微服務,在下一篇將開始微服務的學習。 ??本篇兩個項目代碼存放于:點擊跳轉

    總結

    以上是生活随笔為你收集整理的springCloud学习1(集中式配置管理)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。