springcloud之config(配置中心)和使用consul和nacos作为配置中心

什么是springcloud的config?为什么我们要使用它?

springcloud的config的组件是一种用于微服务的多环境的在外部管理我们的配置文件的组件,通过添加bootstrap.yml配置文件,在该配置文件中配置config配置中心的信息。让我们的工程能够从配置中心读取配置.
优点:
集中管理
不同环境下动态刷新
配置信息修改不需要重新启动服务.

将config注册到eureka中,当服务A需要配置文件的时候可以从eureka注册中心中拉取对应的config_server,然后config_server在远程去调用云端上的配置文件.

步骤一:
微服务连接配置中心(这里我用的是eureka)
1、添加依赖 spring-cloud-starter-netflix-eureka-client
2、启动类添加注解 @EnableEurekaClient
步骤二:
搭建配置中心服务
1、添加依赖 spring-cloud-config-server
2、启动类添加注解 @EnableConfigServer
3、配置版本库地址和注册中心地址
Git配置
SVN配置
步骤三:
创建版本库,放置配置文件
应 用 名 − {应用名}- {profile环境}.properties/yml
Git
SVN
步骤四:
当微服务使用云端的配置文件
1.添加依赖 spring-cloud-starter-config
2.添加bootstrap.yml文件

# 配置config-server地址
# 配置获得配置文件的名称等信息
spring:
  cloud:
    config:
      # 配置config-server地址
      #uri: http://localhost:9527
      # 配置获得配置文件的名称等信息
      name: config # 文件名
      profile: dev # profile指定,  config-dev.yml
      label: master # 分支
      #从注册中心去寻找服务名字是 config-server的地址
      discovery:
        enabled: true
        service-id: config-server
management:
  endpoints:
    web:
      exposure:
        include: refresh

使用config作为配置中心存在的问题:

当外部的配置文件一旦修改了我们需要做到自动的配置文件自动刷新.
通过发送一个post请求
使用springcloud的组件bus消息总线和mq
config的服务端将消发送给bus,通过消息中间件传递给每一个微服务,每一个微服务自动修改所对应的配置
在这里插入图片描述

  1. 分别在 config-server 和 config-client中引入 bus依赖:bus-amqp

        <!-- bus -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
  1. 分别在 config-server 和 config-client中配置 RabbitMQ
#配置rabbitmq信息
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtual-host: / 
  1. 在config-server中设置暴露监控断点:bus-refresh
# 暴露bus的刷新端点
management:
  endpoints:
    web:
      exposure:
        include: 'bus-refresh'
  1. 启动测试

使用consul和nacos作为配置中心

这里还可以使用consul或者nacos来取代eureka的服务治理和springcloud的config组件.
因为consul和nacos不仅可以使用服务治理的功能还有文件管理功能,使用这一个技术点可以取代eureka和spring cloud的config组件.

使用consul来作为配置中心

Consul提供的key/value存储作为配置中心
1.导入依赖

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

2.bootstrap.yml配置

spring:
  profiles:
    active: dev    #激活环境!!
  cloud:
    consul:
      host: localhost
      port: 8500
      config:
        enabled: true #开启配置中心,默认是true
        prefix: config #基础文件夹,默认值 config
        default-context: application #应用文件夹,默认值 application
        profile-separator: ',' # 环境分隔符,默认值 ","
        format: yaml #配置格式,默认 key-value,其他可选:yaml/files/properties
        data-key: data #配置 key 值,value 对应整个配置文件
        #以上配置后,我们的配置文件在consul中的完整的key为 config/application,dev/data
        watch:
          enabled: true #启用配置自动刷新
          delay: 1000 # 刷新频率,单位:毫秒
          wait-time: 55

注意:
支持配置的动态刷新 : @RefreshScope
框架级别的配置: 会自动刷新属性配置类!!!
@Bean标签不一定会自动刷新!!

使用nacos来作为配置中心

1.导入依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.0.RELEASE </version>
        </dependency>

2.bootstrap.yml配置

spring:
  profiles:
    active: dev    #激活环境!!
  cloud:
    nacos:
      config:
        enabled: true
        server-addr: 127.0.0.1:8848  #nacos的服务器地址
        prefix: user #应用名称 对应nacos配置中的dataid
        file-extension: yaml   #yaml 和 properties
        group: user-group  #对应nacos配置中的group
       #dataId: ${prefix}-${spring.profiles.active}.${file-extension}
       #user-dev.yaml

3.支持配置的动态刷新:@RefreshScope
注意:
框架级别的配置: 会自动刷新属性配置类!!!
—> @Bean标签不一定会自动刷新!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值