国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

詳解spring cloud config整合gitlab搭建分布式的配置中心

2024-07-13 10:17:00
字體:
來源:轉載
供稿:網友

在前面的博客中,我們都是將配置文件放在各自的服務中,但是這樣做有一個缺點,一旦配置修改了,那么我們就必須停機,然后修改配置文件后再進行上線,服務少的話,這樣做還無可厚非,但是如果是成百上千的服務了,這個時候,就需要用到分布式的配置管理了。而spring cloud config正是用來解決這個問題而生的。下面就結合gitlab來實現分布式配置中心的搭建。spring cloud config配置中心由server端和client端組成,

前提:在gitlab中的工程下新建一個配置文件configserver-dev.properties

一、配置Server

1、添加依賴

<dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-config-server</artifactId>     </dependency> 

2、在Application主類開啟支持

@EnableConfigServer 

3、配置application.yml文件

server:  port: 8888 spring:  application:   name: config  cloud:   config:    server:     git:      uri: https://gitlab.xxx.com/xxxxx/xxxxx.git   # 配置gitlab倉庫的地址,注意,此處必須以.git結尾      search-paths: /config-repo # gitlab倉庫地址下的相對地址,可以配置多個,用,分割。      username: your username                       # gitlab倉庫的賬號      password: your password                       # gitlab倉庫的密碼 

注意:如果配置文件放置在Git存儲庫的根目錄下,則無需使用searchPaths參數,本例中的配置文件在config-repo目錄中,因此使用searchPaths參數提示Config服務器搜索config-repo子目錄

4、啟動server,并在瀏覽器輸入http://localhost:8888/configserver/dev/master

{    "name": "configserver",   "profiles": [     "dev"   ],   "label": "master",   "version": "073cda9ce85a3eed00e406f4ebcc4651ee4d9b19",   "state": null,   "propertySources": [     {       "name": "https://gitlab.xxx.com/xxxxx/xxxxx/project/config-repo/configserver.properties",       "source": {         "name": "chhliuxyh",         "hello": "i'm the king of the world!!!",         "profile": "profile-default"       }     }   ]  } 

可以看到server端已經可以從gitlab上讀取到配置文件了。可以通過如下表單中的方式訪問gitlab上的資源

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

例如在瀏覽器中輸入:http://localhost:8888/configserver-dev.yml,結果如下:

hello: i'm the king of the world!!! name: chhliuxyh profile: profile-default 

二、配置客戶端

1、添加pom依賴

<dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-config</artifactId>     </dependency>     <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-web</artifactId>     </dependency> 

2、配置bootstrap.yml文件

注意:此處的配置文件需要放在bootstrap.properties或者是bootstrap.yml文件中,因為config的相關配置會先于application.properties,而bootstrap.properties的加載也是先于application.properties

server:  port: 8889 spring:  application:   name: configserver  # 必須與配置文件的前綴一致,例如此處我們的配置文件名是configserver-dev.properties,則此處需配置成configserver  cloud:   config:    uri: http://localhost:8888/ //配置spring cloud config服務端的url    profile: dev           # 指定profile    label: master           # 指定gitlab倉庫的分支 

3、驗證客戶端

在客戶端新增一個Controller

package com.chhliu.springcloud.config;  import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;  @SpringBootApplication @RestController @RefreshScope //注解@RefreshScope指示Config客戶端在服務器配置改變時,也刷新注入的屬性值 public class SpringcloudConfigClientApplication {    public static void main(String[] args) {     SpringApplication.run(SpringcloudConfigClientApplication.class, args);   }    @Value("${hello}") // 讀取gitlab配置文件中的屬性,如果我們讀取到了值,說明客戶端是OK的   private String profile;    @GetMapping("/hello")   public String hello() {     return this.profile;   } } 

在瀏覽器中訪問:http://localhost:8889/hello,結果如下:

i'm the king of the world!!! 

說明客戶端已經可以從服務端獲取到值了。

三、動態刷新

無需重新啟動客戶端,即可更新Spring Cloud Config管理的配置

1、更新gitlab倉庫中configserver-dev.properties配置文件中hello對應的屬性值

2、訪問http://localhost:8888/configserver/dev/master,發現server端內容已經更新

3、對Conf客戶端發一個POST請求http://localhost:8889/refresh,返回200 OK。再次訪問http://localhost:8889/hello,可見在并未重啟客戶端服務的情況下,讀到的屬性值已經動態更新

PS:要想實現動態刷新,需要在pom文件中添加以下starter

<dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-actuator</artifactId>     </dependency> 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开鲁县| 定兴县| 新泰市| 承德县| 奉化市| 临猗县| 安化县| 安泽县| 盈江县| 抚州市| 阿坝县| 太原市| 新绛县| 松江区| 合肥市| 铜鼓县| 普宁市| 玉山县| 靖宇县| 裕民县| 曲阳县| 玛沁县| 南乐县| 时尚| 邵东县| 乌拉特后旗| 沂南县| 定边县| 垣曲县| 浮山县| 商河县| 连江县| 郓城县| 枣庄市| 通化县| 宁陕县| 沭阳县| 德令哈市| 屏东县| 江北区| 盖州市|