SpringCloud学习七:config 配置中心

springcloud config 还有apollo也是做配置中心的

官方文档1:https://spring.io/guides/gs/centralized-configuration/

官方文档2:https://cloud.spring.io/spring-cloud-config/reference/html/

代码地址:https://download.youkuaiyun.com/download/qq_16946803/12377913

一、创建Git(码云)代码管理仓库

1.1、示例

 1.2、获取三个参数:https://gitee.com/xxxxxxxx/springcloud-config.git 和 目录名(每个项目配置文件的分类)和master

1.3、定义的文件名字必须与下面图片中的名字相同(区分服务名-下面4.5还会提到)

spring.application.name=service-config-client

 

1.4、Git命名规范与发布(注意命名规范

 

二、创建注册中心eureka项目

      此过程省略搭建过程

 

三、创建config-server项目

3.1、引入需要的jar包

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
   <version>2.2.1.RELEASE</version>
</dependency>
<!--配置中心-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-config-server</artifactId>
   <version>2.2.1.RELEASE</version>
</dependency>

3.2、主配置类添加注解

@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer

3.3、 yml文件中添加配置(这里要用到上面准备的三个参数)

注:只需要复制连接到Git配置就行

server.port=2000

#注册中心服务名
spring.application.name=service-config-server

#服务端地址(多个用,号隔开)
eureka.client.serviceUrl.defaultZone=http://admin:admin@127.0.0.1:8002/eureka/

# 采用IP注册
eureka.instance.preferIpAddress=true
# 定义实例ID格式
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

#连接到Git
    #上面准备的地址
spring.cloud.config.server.git.uri=https://gitee.com/whzhang110/springcloud-config.git
    #上面准备的目录名
spring.cloud.config.server.git.search-paths=csconfigclient
    #上面准备的分支
spring.cloud.config.label=master
#spring.cloud.config.server.git.username=******
#spring.cloud.config.server.git.password=******

 

四、创建config-client项目

4.1、引入jar包

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-client</artifactId>
	<version>2.2.1.RELEASE</version>
</dependency>

 

4.2、主配置文件只配置eureka

@SpringBootApplication
@EnableEurekaClient

4.3、配置文件新增bootstrap.properties文件,为了避免No instances found of configserver (config-server)错误,将application.properties文件中的配置全部移入bootstrap.properties中

server.port=2001

#注册中心服务名
spring.application.name=service-config-client

#服务端地址(多个用,号隔开)
eureka.client.serviceUrl.defaultZone=http://admin:admin@127.0.0.1:8002/eureka/
# 定义实例ID格式
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

#读取环境 开发|测试|试运营
spring.cloud.config.profile=sit
#config-server项目的环境
spring.cloud.config.discovery.service-id=service-config-server
#开启读取权限
spring.cloud.config.discovery.enabled=true
#
spring.cloud.config.label=master

4.4、在controller中添加以下代码(做测试,正式环境会直接更改配置文件信息)

@RestController
public class TestController {

    @Value("${configInfo}")
    private String configInfo;

    @GetMapping("/getConfigInfo")
    public Object getConfigInfo(){
        return configInfo;
    }
}

4.5、先访问  http://127.0.0.1:2001/ser vice-config-client-slt.properties  看看文件是否改变

4.6、测试是否能拿到码云中的配置

4.7、注意事项

注:以下的参数对应bootstrap.properties配置文件和controller中的属性名

——————————重点-原理-必读——————————

 

 

 

4.6、以上操作只能证明config-server服务可以冲Git(码云)中拿到数据,还是无法热更配置文件(配置文件在服务启动时已经放进JVM虚拟机中,一般无法更改)

上面的更新在config-service中可以更新,但是config-client中无法热更,需要再config-client中添加以下配置

以下配置都在config-client中

———————————————————————————

五、手动刷新JVM中的配置文件——refresh手动刷新

5.1、不重启服务器更新配置文件,两种方法:

    5.1.1、定时刷新(影响性能)

    5.1.2、手动刷新(推荐)缺点:还是无法做到热更

5.2、第4点缺点说明

    5.2.1、修改Git(码云)中的参数

    5.2.2、config-server项目请求Git(码云),数据已经更新

    5.2.3、config-client请求后参数没有变化,说明JVM中的配置文件没有更新

5.3、开始主题——在config-client中添加

    5.3.1、导入新的jar包

<!-- 以上省略其它jar包,复制本文档上方的jar包即可-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

    5.3.2、controller层中添加注解

注:@RefreshScope会刷新在sprign ioc中所有bean中使用@Value的值,但是在配置类中使用方法去配置的其他类参数并不会改变,其它类的@Value值不会刷新

@RefreshScope
@RestController
public class TestController {

    5.3.3、配置文件中添加

management.endpoints.web.exposure.include=*

    5.3.4、启动项目

 5.4、测试是否成功

    5.4.1、请求前:

    5.4.2、请求中:http://127.0.0.1:2001/actuator/refresh

    5.4.3、请求后:

5.5、refresh手动刷新成功

 

六、中文乱码

参考链接:https://www.cnblogs.com/huanzi-qch/p/10149547.html  中文乱码

七、其它

7.1、

7.2、有哪些分布式配置中心

7.3、Springcloudconfig分布式配置中心原理http://www.mayikt.com/course/video/2403

    7.3.1、Git&码云存放分布式配置文件(持久存储)

    7.3.2、ConfigServer:缓存配置文件服务器(临时存储)

    7.3.3、ConfigClient:读取ConfigServer临时存储配置文件信息

7.4、

7.5、

7.6、ConfigServer为什么要放到eureka中

  1. 做集群
  2. 通过别名调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值