Spring Cloud 配置中心

对于传统的单体应用而言,常使用配置文件来管理所有配置,比如SpringBoot的application.yml文件, 但是在微服务架构中全部手动修改的话很麻烦而且不易维护。微服务的配置管理一般有以下需求:

  • 集中配置管理,一个微服务架构中可能有成百上千个微服务,所以集中配置管理是很重要的。
  • 不同环境不同配置,比如数据源配置在不同环境(开发,生产,测试)中是不同的。
  • 运行期间可动态调整。例如,可根据各个微服务的负载情况,动态调整数据源连接池大小等。
  • 配置修改后可自动更新。如配置内容发生变化,微服务可以自动更新配置。

综上所述对于微服务架构而言,一套统一的,通用的管理配置机制是不可缺少的总要组成部分。常见的做法就是通过配置服务器进行管理。
【个人学习总结备用,不定期更新,如有错误,欢迎路过的道友给予指正】

常见配置中心

  1. Spring Cloud Config
    Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。
  2. Apollo
    (阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置 管理场景。
  3. Disconf
    Disconf 专注于各种「分布式系统配置管理」的「通用组件」和「通用平台」, 提供统一的「配置管理服务」包括百度、滴滴出行、银联、网易、拉勾网、苏宁易购、顺丰科技等知名互联网公司正在使用! 「disconf」在「2015 年度新增开源软件排名 TOP 100(OSC开源中国提供)」中排名第16强。

Spring Cloud Config

Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。
在这里插入图片描述
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,可以为所有环境中的应用程序管理其外部属性。非常适合Spring应用,也可以使用在其他语言的应用 上。随着应用程序从开发到测试和生产的部署流程,能够对这些环境之间的配置进行管理,并确定应用程序需要迁移时需要运行的一切配置。服务器存储后端的默认实现使用git,因此它轻松支持标签(Tag)版本的配置环境,以及可以访问用于管理内容的各种工具。

Spring Cloud Config服务端特性

  • HTTP
    为外部配置提供基于资源的API(键值对,或者等价的YAML内容) - 属性值的加密和解密(对称加密和非对称加密)
  • 通过使用@EnableConfigServer在Spring boot应用中非常简单的嵌入。

Config客户端的特性(特指Spring应用)

  • 绑定Config服务端,并使用远程的属性源初始化Spring环境。
  • 属性值的加密和解密(对称加密和非对称加密)

Spring Cloud Config使用方式

项目地址:传送门【后续更新完善】
Config Server是一个可横向扩展、集中式的配置服务器,它用于集中管理应用程序各个环境下的配置, 默认使用Git存储配置文件内容,也可以使用SVN存储,或者是本地文件存储。楼主这里使用的是本地文件存储

搭建服务端

搭建的服务端也可以是本地的一个项目

  1. 引入依赖
  2. 配置启动类
  3. 配置配置文件
引入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
配置启动类
@EnableConfigServer //开启配置中心服务端功能 
  • @EnableConfigServer : 通过此注解开启注册中心服务端功能
配置配置文件
使用本地配置文件

bootstrap.yml配置文件内容

spring:
  cloud:
    config:
      profile: native
      server:
        native:
          default-label: master
          search-locations: classpath:/profiles/
  profiles:
    active: native

application.yml

spring:
  application:
    name: chenfu-cloud-config
server:
  port: 8888
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    fetch-registry: true
    register-with-eureka: true
  instance:
    #    使用IP注册
    prefer-ip-address: true
    ip-address: localhost

使用Git服务器
server:
  port: 8001
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/chenfu1201/spring-cloud.git
          username:
          password:
  • spring.cloud.config.server.git.uri : 配置git服务地址
  • spring.cloud.config.server.git.username::配置git用户名
  • spring.cloud.config.server.git.password: 配置git密码
客户端获取Config服务端配置
引入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
配置文件

bootstrap.yml

spring:
  profiles:
    active: dev
  cloud:
    config:
      profile: dev
      label: master
      discovery:
        enabled: true
        service-id: chenfu-cloud-config

注意客户端的配置一定要放在bootstrap.yml文件内,因为其比application.yml加载优先级高,放错的话,会默认从端口号8080的服务中拉取配置文件,如果自己的配置服务端口不是默认就会出现问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值