欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年01月19日 13:45:01   作者:牛奮lch  
這篇文章主要介紹了詳解spring cloud config整合gitlab搭建分布式的配置中心,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

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

一、配置Server

1、添加依賴

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

2、在Application主類開(kāi)啟支持

@EnableConfigServer 

3、配置application.yml文件

server: 
 port: 8888 
spring: 
 application: 
  name: config 
 cloud: 
  config: 
   server: 
    git: 
     uri: https://gitlab.xxx.com/xxxxx/xxxxx.git   # 配置gitlab倉(cāng)庫(kù)的地址,注意,此處必須以.git結(jié)尾 
     search-paths: /config-repo # gitlab倉(cāng)庫(kù)地址下的相對(duì)地址,可以配置多個(gè),用,分割。 
     username: your username                       # gitlab倉(cāng)庫(kù)的賬號(hào) 
     password: your password                       # gitlab倉(cāng)庫(kù)的密碼 

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

4、啟動(dòng)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端已經(jīng)可以從gitlab上讀取到配置文件了??梢酝ㄟ^(guò)如下表單中的方式訪問(wèn)gitlab上的資源

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

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

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文件中,因?yàn)閏onfig的相關(guān)配置會(huì)先于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服務(wù)端的url 
   profile: dev           # 指定profile 
   label: master           # 指定gitlab倉(cāng)庫(kù)的分支 

3、驗(yàn)證客戶端

在客戶端新增一個(gè)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客戶端在服務(wù)器配置改變時(shí),也刷新注入的屬性值 
public class SpringcloudConfigClientApplication { 
 
  public static void main(String[] args) { 
    SpringApplication.run(SpringcloudConfigClientApplication.class, args); 
  } 
 
  @Value("${hello}") // 讀取gitlab配置文件中的屬性,如果我們讀取到了值,說(shuō)明客戶端是OK的 
  private String profile; 
 
  @GetMapping("/hello") 
  public String hello() { 
    return this.profile; 
  } 
} 

在瀏覽器中訪問(wèn):http://localhost:8889/hello,結(jié)果如下:

i'm the king of the world!!! 

說(shuō)明客戶端已經(jīng)可以從服務(wù)端獲取到值了。

三、動(dòng)態(tài)刷新

無(wú)需重新啟動(dòng)客戶端,即可更新Spring Cloud Config管理的配置

1、更新gitlab倉(cāng)庫(kù)中configserver-dev.properties配置文件中hello對(duì)應(yīng)的屬性值

2、訪問(wèn)http://localhost:8888/configserver/dev/master,發(fā)現(xiàn)server端內(nèi)容已經(jīng)更新

3、對(duì)Conf客戶端發(fā)一個(gè)POST請(qǐng)求http://localhost:8889/refresh,返回200 OK。再次訪問(wèn)http://localhost:8889/hello,可見(jiàn)在并未重啟客戶端服務(wù)的情況下,讀到的屬性值已經(jīng)動(dòng)態(tài)更新

PS:要想實(shí)現(xiàn)動(dòng)態(tài)刷新,需要在pom文件中添加以下starter

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺析Java中的SPI原理

    淺析Java中的SPI原理

    SPI:由調(diào)用方制定接口標(biāo)準(zhǔn),實(shí)現(xiàn)方來(lái)針對(duì)接口提供不同的實(shí)現(xiàn),SPI其實(shí)就是"為接口查找實(shí)現(xiàn)"的一種服務(wù)發(fā)現(xiàn)機(jī)制。本文將淺談一下SPI機(jī)制的原理,需要的可以參考一下
    2022-09-09
  • 詳解Java如何有效避免空指針

    詳解Java如何有效避免空指針

    空指針,也就是NullPointerException 簡(jiǎn)稱NPE的,怕一下子寫(xiě)出NPE,部分的伙伴看不懂,索性就改成了空指針,在實(shí)際的開(kāi)發(fā)中,我們最討厭的就是遇到空指針了,業(yè)務(wù)跑著跑著發(fā)現(xiàn)了空指針,所以本文詳細(xì)介紹了Java如何有效的避免空指針,需要的朋友可以參考下
    2023-12-12
  • Java下http下載文件客戶端和上傳文件客戶端實(shí)例代碼

    Java下http下載文件客戶端和上傳文件客戶端實(shí)例代碼

    這篇文章主要介紹了Java下http下載文件客戶端和上傳文件客戶端實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • java中Hutool工具類的常見(jiàn)使用場(chǎng)景詳解

    java中Hutool工具類的常見(jiàn)使用場(chǎng)景詳解

    在日常開(kāi)發(fā)中,我們會(huì)使用很多工具類來(lái)提升項(xiàng)目開(kāi)發(fā)的速度,而國(guó)內(nèi)用的比較多的 Hutool 框架,就是其中之一,本文我們就來(lái)介紹一下Hutool的具體使用吧
    2023-12-12
  • Java 異步實(shí)現(xiàn)的幾種方式小結(jié)

    Java 異步實(shí)現(xiàn)的幾種方式小結(jié)

    這篇文章主要介紹了Java 異步實(shí)現(xiàn)的幾種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中SpringSecurity密碼錯(cuò)誤5次鎖定用戶的實(shí)現(xiàn)方法

    Java中SpringSecurity密碼錯(cuò)誤5次鎖定用戶的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java中SpringSecurity密碼錯(cuò)誤5次鎖定用戶的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • Java延時(shí)執(zhí)行的三種實(shí)現(xiàn)方式

    Java延時(shí)執(zhí)行的三種實(shí)現(xiàn)方式

    本文主要介紹了Java延時(shí)執(zhí)行的三種實(shí)現(xiàn)方式,主要包括了Thread.sleep()方法,.sleep()使用Timer類或使用ScheduledExecutorService接口,感興趣的可以了解一下
    2023-12-12
  • spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn)的實(shí)例代碼

    spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn)的實(shí)例代碼

    最近公司重構(gòu)項(xiàng)目,重構(gòu)為最熱的微服務(wù)框架 spring boot, 重構(gòu)的時(shí)候遇到幾個(gè)可以統(tǒng)一處理的問(wèn)題。這篇文章主要介紹了spring boot+自定義 AOP 實(shí)現(xiàn)全局校驗(yàn) ,需要的朋友可以參考下
    2019-04-04
  • Java實(shí)現(xiàn)猜數(shù)字小游戲

    Java實(shí)現(xiàn)猜數(shù)字小游戲

    大家好,本篇文章主要講的是Java實(shí)現(xiàn)猜數(shù)字小游戲,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • springboot內(nèi)置tomcat之NIO處理流程一覽

    springboot內(nèi)置tomcat之NIO處理流程一覽

    這篇文章主要介紹了springboot內(nèi)置tomcat之NIO處理流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論