【SpringCloud-6】Config配置中心

集群环境下,服务节点很多,我们不可能对每个服务都维护一套自己的配置,有修改时把每个节点都改一遍。  所以需要一个公共的配置文件,并且还能实现动态刷新。  在springcloud中,springcloud config组件就是一个配置中心(第二代中是nacos,更好用,后面介绍)。

 

 

springcloud config分为server端和client端

server端:

说明:Config Server是集中式的配置服务,⽤于集中管理应⽤程序各个环境下的配置。 默认使⽤Git存储配置⽂件内容,也可以SVN。

⽐如,我们要对简历微服务application.yml进⾏管理(区分开发环境、测试环境、⽣产环境)

  • 登录码云,创建项⽬lagou-confifig-repo
  • 上传yml配置⽂件,命名规则为: {application}-{profifile}.yml,如lagou-service-resume-dev.yml
  • 构建Confifig Server统⼀配置中⼼
    <dependencies>
        <!--eureka client 客户端依赖引入-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--config配置中心服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>
  • 配置启动类,使⽤注解@EnableConfifigServer开启配置中⼼服务器功能
  • application.yml配置,指定git地址
server:
  port: 9006
#注册到Eureka服务中心
eureka:
  client:
    service-url:
      # 注册到集群,就把多个Eurekaserver地址使用逗号连接起来即可;注册到单实例(非集群模式),那就写一个就ok
      defaultZone: http://LagouCloudEurekaServerA:8761/eureka,http://LagouCloudEurekaServerB:8762/eureka
  instance:
    prefer-ip-address: true  #服务实例中显示ip,而不是显示主机名(兼容老的eureka版本)
    # 实例名称: 192.168.1.103:lagou-service-resume:8080,我们可以自定义它
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
spring:
  application:
    name: lagou-cloud-configserver
  cloud:
    config:
      server:
        git:
          uri: https://github.com/5173098004/lagou-config-repo.git #配置git服务地址
          username: 517309804@qq.com #配置git用户名
          password: yingdian12341 #配置git密码
          search-paths:
            - lagou-config-repo
      # 读取分支
      label: master
#针对的被调用方微服务名称,不加就是全局生效
#lagou-service-resume:
#  ribbon:
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #负载策略调整
# springboot中暴露健康检查等断点接口
management:
  endpoints:
    web:
      exposure:
        include: "*"
  # 暴露健康接口的细节
  endpoint:
    health:
      show-details: always
  • 访问:http://localhost:9006/master/lagou-service-resume-dev.yml,可以查看到配置⽂件内容,说明server端已拉取到配置中心的内容。

Client端: 

  • 引入依赖:
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-config-client</artifactId>
</dependency>
  • application.yml修改为bootstrap.yml配置⽂件
    • bootstrap.yml 是系统级别的,优先级⽐ application.yml ⾼,应⽤启动时会检查这个配置⽂件,在这个配置⽂件中指定config server的服务地址,会⾃动拉取所有应⽤配置并且启⽤。
spring
  cloud:
    # config客户端配置,和ConfigServer通信,并告知ConfigServer希望获取的配置信息在哪个文件中
    config:
      name: lagou-service-resume  #配置文件名称
      profile: dev  #后缀名称
      label: master #分支名称
      uri: http://localhost:9006    #ConfigServer配置中心地址

整体是用如上面就可以了,很简单。 但是,当git上的配置内容改了,如何接收到呢?

其实,当git上内容变更时,config server端已经能结束到,只不过client端读取的是自己的缓存,所以需要刷新一下。 有两种方式:

手动刷新:

Client客户端添加依赖springboot-starter-actuator(已添加)

Client 客户端 bootstrap.yml 中添加配置(暴露refresh通信端点)
management:
  endpoints:
    web:
      exposure:
        include: refresh  
 #也可以是暴露所有的端点  include: "*"
        

Client客户端使⽤到配置信息的类上添加@RefreshScope

⼿动向Client客户端发起POST请求,http://localhost:8080/actuator/refresh, 刷新配置信息。

自动刷新:

因为手动刷新不方便,所以提供了spring cloud bus + spring cloud config,实现动态刷新。 bus的原理就是使用mq监听MQ中同一个topic (目前支持:RabbitMQ和Kafka,topic默认是springCloudBus),当config server接收到git上的变更时,手动调用接口发出消息,通知到各个client端。

 1、config server 和 config client中添加依赖:

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

2、config server 和 config client添加配置:

spring:

        rabbitmq :
                host : 127.0.0.1
                port : 5672
                username : guest
                password : guest

3、config server 和 config client中暴露bus端口:

management:
  endpoints:
    web:
      exposure:
        include: "*"  (这里暴露了所有,可以只暴露bus-refresh

4、重启各服务,连接mq,就可以使用了。 当git中配置变更时,只需要手动向config server发起请求:http://localhost:9006/actuator/bus-refresh,各个client端就能收到更新。

以上就是config配置中心的简单介绍,其实,使用起来还是不太方便,既要依赖于git和mq,还要手动去调用接口让server端推消息。 所以,现在有更方便的apollo和nacos,尽量还是不使用spring cloud config。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值