SpringCloud配置中心——ConfigServer搭建

Easter79
• 阅读 615

在实际应用中,一个系统的每个微服务都会有相同的配置,如数据库配置信息等等。
为了将每个微服务的公共配置可以抽取出来。SpringCloud提供了Config配置中心的配置,作为配置中心(ConfigServer),提供给微服务(ConfigClient)读取并且加载配置。
使用git仓库存放配置文件,SpringCloudConfig读取到之后会自动加载配置。
配置文件可以是.yml、.properties后缀,SpringCloudConfig读取到之后会自动加载。

###搭建ConfigServer
######一、将写好的配置文件push到git仓库中
配置文件命名规则:
应用名-环境名.yml或者应用名-环境名.properties
push文件名为test-dev.yml的文件到git,文件内容:

serverAddress:
  activeMQ: http://192.168.10.116:61616
  redis: http://192.168.10.177:7777
  nginx: http://192.168.10.155:80
二、创建SonfigServer服务

1、添加ConfigServer依赖,由于要注册到Eureka中被其他服务发现,因此要添加EurekaClient依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

2、主程序中添加注解@EnableConfigServer

package com.huiche51.www;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@EnableConfigServer
@SpringBootApplication
public class ConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class);
    }
}

3、application.yml配置

spring:
  application:
    name: config-server #应用名称
  cloud:
    config:
      server:
        git:
          uri: root@192.168.2.220:/home/git/server-config.git #git远程仓库的地址
          search-paths: test
          basedir: /media/gao/work/project/java/Study/server-config #git本地仓库地址
          #此仓库如果是私有仓库,则需要用户名与密码
          username: root
          password: huiche51.

eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8866/eureka/

server:
  port: 8899

4、服务创建完成

客户端访问并加载ConfigServer配置文件

1、作为Config客户端,需要添加ConfigClient的依赖

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

2、创建bootstrap.yml文件。
bootstrap.properties的优先级高于application.properties,服务启动时,会优先加载bootstrap.properties,所以,对于一些优先加载的配置信息,如数据库信息、配置中心信息等,应存放在bootstrap.properties文件中,可被正常加载。

spring:
  cloud:
    config:
      name: test #对应{application}部分
      profile: dev #对应{profile}部分
      label: master #对应{label}部分
      discovery:
        enabled: true #开启Config服务发现支持(从配置中心读取文件)
        service-id: config-server #目标Config服务端名称


eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8866/eureka/ #指定Eureka服务的地址

属性解释:
name: 指定git仓库中某个配置文件的应用名。
**profile:**指定git仓库中某个配置文件的环境名。
**label:**指定目标配置文件在git仓库中的分支名。

运行测试

1、先启动Eureka服务。
2、启动配置中心服务。
3、启动Config客户端
此时config客户端通过eureka访问配置中心,配置中心从git中获取配置文件给config客户端并且加载配置。

ConfigClient动态更新配置文件

*每个ConfigClient(微服务)只有在启动时会从配置中心加载配置,这样如果微服务需要更换配置时就要重启服务。有没有办法可以不重启就可以重新加载最新配置呢?
有滴,ConfigRefresh依赖帮到你。
*

一、配置

引入Refresh依赖

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

.yml文件配置启用refresh

management:
  endpoints:
    web:
      exposure:
        include: refresh
二、触发更新

1、新的配置文件push到git后,给需要重新加载配置的Config客户端发送一个”/actuator/refresh“的post请求
SpringCloud配置中心——ConfigServer搭建
Config客户端就会重新加载新的配置文件

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
2年前
Nacos配置中心动态获取数组配置
有的时候我们需要动态获取一系列的配置项,假设我们在nacos配置中心的配置如下,nacos配置中心的其他设置请参考Nacos搭建流程(https://my.oschina.net/u/3768341/blog/3138297)skill:name:爆炸冲刺在SpringCloud代
Wesley13 Wesley13
2年前
JavaEE进阶知识学习
SpringCloudConfig配置中心概述就前面项目而言,分布面临的问题是配置问题,每一个项目都有一个yml文件,不好运维管理,所有需要一套集中式,动态的配置管理设施,SpringCloud提供了ConfigServer来解决这个问题。SpringCloudConfig是为微服务架构中的微服
Stella981 Stella981
2年前
Spring Cloud套件
SpringCloud提供的服务  配置管理服务注册服务发现断路器负载均衡智能路由服务间调用一次性令牌微代理思维导图模板全局锁控制总线分布式式会话集群状态领导选举分布式消息  子项目功能说明SpringCloudConfig配置中心,利用git来集
Stella981 Stella981
2年前
Spring Cloud 系列之 Config 配置中心(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:SpringCloud系列之Config配置中心(一)(https://my.oschina.net/u/4126211/blog/4274304)本篇文章讲解Config如何实现配置中心自动刷新。配置中心自动刷新  点击链接观看:配置中心自动刷新视频(http
Easter79 Easter79
2年前
SpringCloud微服务(06):Config组件,实现配置统一管理
一、Config简介在微服务系统中,服务较多,相同的配置:如数据库信息、缓存、参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很多的服务配置。springcloud提供配置中心,来解决这个场景问题。系统中的通用配置存储在相同的地址:GitHub,Gitee,本地配置服务等,然后配置中心读取配置以restful发布
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
SpringCloud Config(配置中心)实现配置自动刷新(十六)
一、实现原理1、ConfigServer(配置中心服务端)从远端git拉取配置文件并在本地git一份,ConfigClient(微服务)从ConfigServer端获取自己对应配置文件;2、当远端git仓库配置文件发生改变,ConfigServer如何通知到ConfigClient端,即ConfigClient如何感知到配置发生更新?S
Easter79 Easter79
2年前
SpringCloud全家桶学习之消息总线
一、概述  ConfigClient(微服务)从ConfigServer端获取自己对应的配置文件,但是目前的问题是:当远程git仓库配置文件发生改变时,每次都是需要重启ConfigCient(微服务),如果有上百上千个微服务呢?我想我们不会一个个去重启每个微服务,也就是说如何让ConfigServer端通知到ConfigClient端?即Con
京东云开发者 京东云开发者
6个月前
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k