SpringCloud微服务之Config知识总结

一、什么是Spring Cloud Config?

  • Spring Cloud Config 可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端和客户端两个部分。
  • Spring Cloud Config 服务端被称为分布式配置中心,它是个独立的应用,可以从配置仓库获取配置信息并提供给客户端使用。
  • Spring Cloud Config 客户端可以通过配置中心来获取配置信息,在启动时加载配置。
  • Spring Cloud Config 的配置中心默认采用Git来存储配置信息,所以天然就支持配置信息的版本管理,并且可以使用Git客户端来方便地管理和访问配置信息。

二、搭建GIT环境

创建仓库

创建文件

  • master分支
# config-dev.yml
config:
  info: "config info for dev(master)"
# config-test.yml
config:
  info: "config info for test(master)"
# config-prod.yml
config:
  info: "config info for prod(master)"
  • dev分支
# config-dev.yml
config:
  info: "config info for dev(dev)"
# config-test.yml
config:
  info: "config info for test(dev)"
# config-prod.yml
config:
  info: "config info for prod(dev)"

三、服务端示例

添加依赖

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

添加配置

  • 启动类
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class SpringcloudConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudConfigServerApplication.class, args);
    }
}
  • application.yml配置文件
server:
  port: 8888
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        # 配置存储配置信息的Git仓库
        git:
          uri: https://gitee.com/prochick/spring-cloud-config.git
          # Git用户名
          username: xxx
          # Git密码
          password: xxx
          # 指定是否开启启动时直接从git获取配置
          clone-on-start: true

eureka:
  instance:
    prefer-ip-address: true
    instance-id: config-server-8888
  client:
    fetch-registry: false
    register-with-eureka: true
    service-url:
      defaultZone: http://localhost:8010/eureka/

访问说明

# 获取配置信息
/{label}/{application}-{profile}
# 获取配置文件信息
/{label}/{application}-{profile}.yml
  • application

代表应用名称,默认为配置文件中的spring.application.name,如果配置了spring.cloud.config.name,则为该名称

  • label

代表分支名称,对应配置文件中的spring.cloud.config.label

  • profile

代表环境名称,对应配置文件中的spring.cloud.config.profile

测试使用

# 访问http://localhost:8888/master/config-dev来获取master分支上dev环境的配置信息
# 访问http://localhost:8888/master/config-dev.yml来获取master分支上dev环境的配置文件信息
# 访问http://localhost:8888/master/config-test.yml来获取master分支上test环境的配置文件信息
# 访问http://localhost:8888/dev/config-dev.yml来获取dev分支上dev环境的配置文件信息

四、客户端示例

添加依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<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.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    <version>2.2.0.RELEASE</version>
</dependency>

添加配置

  • 配置文件

bootstrap.yml

server:
  port: 9999
spring:
  application:
    name: config-client

  cloud:
    config:
      # 配置中心地址
      uri: http://localhost:8888
      # 分支名称
      label: master
      # 配置文件名称
      name: config
      # 配置后缀名称
      profile: dev

eureka:
  instance:
    prefer-ip-address: true
    instance-id: config-client-9999
    client:
      fetch-registry: false
      register-with-eureka: true
      service-url:
        defaultZone: http://localhost:8010/eureka/

# 暴露刷新监控
management:
  endpoints:
    web:
      exposure:
        include: 'refresh'

控制器类

@RestController
@RefreshScope
public class ConfigController {

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

    @GetMapping("/configInfo")
    public String getConfigInfo() {

        return configInfo;
    }
}

测试使用

# 访问http://localhost:9999/configInfo 可以获取到dev分支下dev环境的配置

五、安全认证示例

添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
    <version>2.2.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

添加配置

  • 服务端配置
server:
  port: 8888
spring:
  application:
    name: config-server
  # 配置存储配置信息的Git仓库
  cloud:
    config:
      server:
        git:
          # 访问地址
          uri: https://gitee.com/prochick/spring-cloud-config.git
          # Git用户名
          username: xxx
          # Git密码
          password: xxx
          # 指定是否开启启动时直接从git获取配置
          clone-on-start: true
  # 配置用户名和密码
  security:
    user:
      name: xxx
      password: xxx
  • 客户端配置
server:
  port: 9999
spring:
  application:
    name: config-client

  cloud:
    config:
      # 配置中心地址
      uri: http://localhost:8888
      # 分支名称
      label: master
      # 配置文件名称
      name: config
      # 配置后缀名称
      profile: dev
      # 配置中心用户名
      username: xxx
      # 配置中心密码
      password: xxx

六、集群搭建示例

添加配置

bootstrap.yml

server:
  port: 9999
spring:
  application:
    name: config-client

  cloud:
    config:
      # 分支名称
      label: master
      # 配置文件名称
      name: config
      # 配置后缀名称
      profile: dev
      # 集群绑定
      discovery:
        enabled: true
        service-id: config-server

eureka:
  instance:
    prefer-ip-address: true
    instance-id: config-client-9999
    client:
      fetch-registry: true
      register-with-eureka: true
      service-url:
        defaultZone: http://localhost:8010/eureka/

测试访问

# 访问eureka-server

# 访问http://localhost:9999/configInfo 可以获取到dev分支下dev环境的配置

到此这篇关于SpringCloud微服务之Config知识总结的文章就介绍到这了,更多相关SpringCloud Config内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringCloud-Config分布式配置代码示例

    概述 Spring Cloud Config为分布式系统中的外部化配置提供服务器端和客户端支持.使用Config Server,您可以在中心位置管理所有环境中应用程序的外部属性.客户端和服务器上的概念都与Spring Environment和PropertySource抽象映射相同,因此它们非常适合Spring应用程序,但可以与以任何语言运行的任何应用程序一起使用. 在应用程序从开发人员到测试人员再到生产人员的整个部署过程中,您可以管理这些环境之间的配置,并确保应用程序具有它们迁移时所需的一切.

  • 详解SpringCloud Config配置中心

    一.创建Config配置中心项目 1.添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> 2.启动类,需要添加@EnableConfigServer import org.springframework.boot.SpringApp

  • Springcloud Config支持本地配置文件的方法示例

    背景: Springcloud项目使用Springcloud-config作为分布式配置,配置参数都放在config里,不同的环境有不同的问题: 项目本地: boostrap.yml 远程配置: application.yml application-local.yml application-dev.yml application-test.yml application-prod.yml 其中application-local.yml是本地开发环境,由于开发时,经常修改配置,就会频繁去修改c

  • springCloud config本地配置操作

    一般很多项目不是在springcloud的环境中使用的,但是需要用到分布式配置中心来管理一些外部或者项目的配置,这个时候我们可以使用springcloud-config的本地配置. 配置config-server服务端 使用start.spring.io创建一个springcloud工程,pom中引入: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-c

  • 解决SpringCloud Config结合github无法读取配置的问题

    前言 配置中心存放文件在github是读取过程,可能你会出现读取不到配置信息.本次笔者将这一过程进行详细介绍. 准备 父工程 由于笔者是使用聚合工程,所以这次也是把相关的工程创建说明写上.当然你也可以完全创建两个独立的工程来引用. 创建父工程时直接只有一个pom文件,以下是这个文件的依赖信息 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache

  • SpringCloud配置中心Config过程解析

    1.什么是配置中心 统一管理配置,怏速切换各个环境的配置 相关产品: 百度的 discont https://github.com/knightliao/disconf 阿里的diamand https://github.com/takeseem/diamond springcloud的configs-server: http://cloud.spring.io/spring-cloud-config/ 2.添加依赖 <dependency> <groupId>org.spring

  • SpringCloud Config配置加密解密用法解析

    1. Java8自带无限制加密解密算法, 不需要再引入网上说的那俩包 2. 加密解密是SpringCloud Config的功能, 所以必须先启动一个SCC项目 3. 在SCC项目的配置文件中添加加密解密的钥匙: 密钥----> encrypt.key=xuejian 4. 启动SCC项目,通过http://localhost:port/encrypt/status检查加密解密功能是否能用,如果能用,会返回OK,否则会返回一个不能用的提示 5. 启动一个使用SpringCloud Config配

  • springcloud config配置读取优先级过程详解

    情景描述 最近在修复Eureka的静态页面加载不出的缺陷时,最终发现是远程GIT仓库将静态资源访问方式配置给禁用了(spring.resources.add-mappings=false).虽然最后直接修改远程GIT仓库的此配置项给解决了(spring.resources.add-mappings=true),但是从中牵涉出的配置读取优先级我们必须好好的再回顾下 springcloud config读取仓库配置 通过config client模块来读取远程的仓库配置,只需要在boostrap.p

  • SpringCloud Config使用本地仓库及map注入

    默认情况下,SpringCloud Config使用的是远程的仓库,所以默认要配置uri 如果不想使用远程仓库,而使用本地仓库,需要做以下配置: spring.profiles.active=native spring.cloud.config.server.native.search-locations=file:D:/git/myconfig 注意3点: 1. 使用spring.profiles.active指定要使用本地仓库,而不是其他属性.注意这个属性一般的作用是激活哪一套配置,在con

  • SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码

    一.简介 当要将配置中心部署到生产环境中时,与服务注册中心一样,我们也希望它是一个高可用的应用.Spring Cloud Config实现服务端的高可用非常简单,主要有以下两种方式. 传统模式:不需要为这些服务端做任何额外的配置,只需要遵守一个配置规则,将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护.而客户端在指定Config Server位置时,只需要配置Config Server上层的负载均衡设备地址即可, 就如下图所示的结构. 服

随机推荐