首页 > 其他分享 >SpringCloud_H(配置中心)

SpringCloud_H(配置中心)

时间:2022-11-06 23:00:02浏览次数:54  
标签:中心 SpringCloud 配置 boot spring org Config cloud

1、Config

  • 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个子服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式、动态的配置管理设施是必不可少的

image.png

  • Spring Cloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置
  • Spring Cloud Config分为服务端可客户端两个部分
  • 服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口
  • 客户端则是通过指定的配置中心来管理应用资源,以及业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器,默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容

  • 集中管理配置文件
  • 不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release
  • 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息
  • 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置
  • 将配置信息以REST借口形式暴露

2、Config服务端

  • 新建项目cloud-config-center3344
  • maven依赖
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • application.yml
server:
  port: 3344

spring:
  application:
    name:  cloud-config-center #注册进Eureka服务器的微服务名
  cloud:
    config:
      server:
        git:
          # gitee文件http地址
          uri: https://gitee.com/chenminglin/springcloud-config.git  

#服务注册到eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka
  • 在git仓库中编写application.yml配置文件

image.png

image.png

  • 启动服务

image.png

3、Config客户端

  • 新建cloud-config-client335服务
  • maven依赖
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • bootstrop.yml中配置Config服务信息
    • applicaiton.yml是用户级的资源配置项
    • bootstrap.yml是系统级的,优先级更加高
spring:
  cloud:
    #Config客户端配置
    config:
      label: master  #分支名称
      name: application  # 配置文件名称不需要写后缀 .yml
      profile: dev #读取后缀名称
      uri: http://localhost:3344  #配置中心地址
  • controller
@RestController
public class ConfigController {

    @Value("${spring.application.name}")
    private String ApplicationName;

    @GetMapping("/getApplicationName")
    public String getApplicationName(){
        return "服务名称为:"+ApplicationName;
    }
}
  • gitee中application.yml文件

image.png

  • 启动Config服务端3344,启动Config客户端3355
  • Config服务端访问gitee获取配置信息

image.png

  • Config客户端访问Config服务端获取配置信息

image.png

4、Config客户端动态刷新

  • 修改gitee上的配置文件,刷新Config服务端,配置中心立刻响应,属性Config客户端没有任何响应,需要重启才能使用新的配置文件
  • 修改Config客户端服务
  • 需要引入actuator监控
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 修改bootstrop.yml,暴露监控端口
# 暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"
  • 业务类添加 @RefreshScope 注解
@RestController
@RefreshScope
public class ConfigController {

    @Value("${spring.application.name}")
    private String ApplicationName;

    @GetMapping("/getApplicationName")
    public String getApplicationName(){
        return "服务名称为:"+ApplicationName;
    }
}
  • 发送POST请求请求Config客户端
curl -X POST "http://localhost:3355/actuator/refresh

标签:中心,SpringCloud,配置,boot,spring,org,Config,cloud
From: https://www.cnblogs.com/blackyoumo/p/16864507.html

相关文章

  • SpringCloud_Alibaba(分布式事务)
    1、Seata简介Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务http://seata.io/zh-cn/分布式事务处理过程唯一ID+......
  • SpringCloud_Alibaba(熔断与限流)
    1、Sentinel官网:https://github.com/alibaba/Sentinel中文文档:https://github.com/alibaba/Sentinel/wiki/介绍下载地址:https://github.com/alibaba/Sentinel/releases......
  • 120-nginx 配置server访问前端目录
    server{listen8082;server_namelocalhost;#charsetkoi8-r;#access_loglogs/host.access.logmain;locatio......
  • 达梦数据库主从配置
    数据库名    实例名PORT_NUMMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORT备注DMSERVER01DMSERVER01523745101192.168.0.128 5510165101主库DMSERVER02DMSERVER025237......
  • 自建docker hub 容器缓存加速器下 的nginx 配置
    文档说明:只记录关键地方;dockerhub加速器nginx配置要求加速器只允许GETHEAD请求方法只允许docker-library/official-images通过加速器控制允许通过加速器......
  • 配置服务器免密登录
    User:acs_5821HostName:123.57.47.211Password:xxxxxxxx配置服务器密匙登录配置上述服务器的密匙登录,并将服务器账号名字(Host)配置成:myserver以下操作均在本地进......
  • 路飞项目创建和配置
    路飞项目创建和配置luffy后台创建目录调整项目的创建1.创建项目的时候要在虚拟环境中创建2.再使用虚拟环境创建路飞项目前,一定要先安装django,否则会以最先django创建......
  • 实验环境配置
    一、实验目的熟悉实验环境熟悉Linux基本操作二、实验要求(一)任务请根据实验环境安装文档,完成特定开源软件的安装(二)实验报告请用Markdown排版,提交在博客园班级作......
  • 最简单Openwrt ipv6配置,局域网WAN6中继模式获取原生ipv6地址
    条件condition    wan 和wan6 是默认配置  Wanandwan6arethedefaultconfigurations    同时wan6可以获取到原生IPv6  Atthesametimewan6can......
  • SAP Java Connector 正常运行所需的网络配置
    SAPJCO在本地安装成功并且将目录加到PATH环境变量后,运行命令行:java-jarsapjco3.jar如果看到下列弹出窗口,说明JCO配置成功。JCo使用基于TCP/IP的CPI-C协议......