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

 更新时间:2018年01月19日 13:45:01   作者:牛奋lch  
这篇文章主要介绍了详解spring cloud config整合gitlab搭建分布式的配置中心,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在前面的博客中,我们都是将配置文件放在各自的服务中,但是这样做有一个缺点,一旦配置修改了,那么我们就必须停机,然后修改配置文件后再进行上线,服务少的话,这样做还无可厚非,但是如果是成百上千的服务了,这个时候,就需要用到分布式的配置管理了。而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> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Nacos设置为windows自启动服务的步骤详解

    Nacos设置为windows自启动服务的步骤详解

    这篇文章给大家介绍了Nacos设置为windows自启动服务的操作步骤,文中通过代码示例和图文结合讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-12-12
  • java加载properties文件的六种方法总结

    java加载properties文件的六种方法总结

    这篇文章主要介绍了java加载properties文件的六种方法总结的相关资料,需要的朋友可以参考下
    2017-05-05
  • 详解如何在SpringBoot中优雅地重试调用第三方API

    详解如何在SpringBoot中优雅地重试调用第三方API

    在实际的应用中,我们经常需要调用第三方API来获取数据或执行某些操作,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • java.mail实现发送邮件

    java.mail实现发送邮件

    这篇文章主要为大家详细介绍了java.mail实现发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Java 基础之修饰符关键词整理

    Java 基础之修饰符关键词整理

    这篇文章主要介绍了Java 基础之修饰符关键词整理的相关资料,需要的朋友可以参考下
    2017-02-02
  • java实现String类型和Date类型相互转换

    java实现String类型和Date类型相互转换

    很多人表示,java将string类型转为date类型不知道应该怎样做,本文就来介绍一下java实现String类型和Date类型相互转换,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 使用Logback日志保存到相对路径的操作

    使用Logback日志保存到相对路径的操作

    这篇文章主要介绍了使用Logback日志保存到相对路径的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Java中的类加载器_动力节点Java学院整理

    Java中的类加载器_动力节点Java学院整理

    这篇文章主要为大家详细介绍了Java中类加载器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Guava轻松创建和管理不可变集合方法技巧

    Guava轻松创建和管理不可变集合方法技巧

    这篇文章主要为大家介绍了Guava轻松创建和管理不可变集合方法技巧示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 如何使用Spring AOP的通知类型及创建通知

    如何使用Spring AOP的通知类型及创建通知

    这篇文章主要给大家介绍了关于如何使用Spring AOP的通知类型及创建通知的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring AOP具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12

最新评论