IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringCloud搭建微服务之Config配置中心 -> 正文阅读

[Java知识库]SpringCloud搭建微服务之Config配置中心

1. 概述

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

1.1. Config配置中心功能

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

2. 搭建Config Server服务

2.1. 引入核心依赖

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

2.2. 编写主启动类

@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

2.3. 编写application.yml配置

server:
  port: 8820
spring:
  application:
    name: cloud-config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/xxxx/springcloud-config.git #git仓库地址
          default-label: master #读取分支
          search-paths:
            - springcloud-config #文件目录

2.4. 验证

在git仓库springcloud-config目录下新建配置文件config-prod.yml,并添加配置信息

config:
  info: "master branch,springcloud-config/config-prod.yml version=1"

启动Config Server微服务,在浏览器地址栏输入地址http://localhost:8820/master/config-prod.yml
配置中心

3. 搭建Config Client服务

3.1. 引入核心依赖

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

3.2. 编写主启动类

@SpringBootApplication
public class ConfigClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}

3.3. 编写bootstrap.yml配置

server:
  port: 8821
spring:
  application:
    name: cloud-config-client
  cloud:
    config:
      label: master
      name: config
      profile: prod
      uri: http://localhost:8820

3.3. 编写测试接口类

@RestController
public class ConfigClientController {

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

    @GetMapping("/getConfigInfo")
    public String getConfigInfo() {
        return configInfo;
    }
}

3.4. 验证

依次启动Config Server和Config Client两个微服务,在浏览器地址栏输入http://localhost:8821/getConfigInfo
配置中心客户端访问

4. 结合Eureka自动发现

4.1. 引入核心依赖

在两个微服务中引入Eureka Client依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

4.2. 编写配置文件

在两个微服务配置文件中添加Eureka配置

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka

并且在Config Client微服务配置文件中开启配置文件的自我发现机制

spring:
  cloud:
    config:
      discovery:
        enabled: true #开启配置服务的自动发现机制
        service-id: cloud-config-server

5. Config Client动态刷新

修改git环境配置后,Config Server可以立刻获取到配置信息,Config Client服务却需要重启或重新加载才能获取到配置信息,所以就需要让Config Client动态刷新获取配置信息

5.1. 引入核心依赖

在Config Client微服务中引入核心依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

5.2. 修改bootstrap.yml配置文件

在bootstrap.yml中暴露监控端口

management:
  endpoints:
    web:
      exposure:
        include: '*'

5.3. 在接口类中加入注解

@RefreshScope
@RestController
public class ConfigClientController {

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

    @GetMapping("/getConfigInfo")
    public String getConfigInfo() {
        return configInfo;
    }
}

5.4. 验证

重新启动微服务Config Client,修改git上配置信息版本号为2,访问Config Server服务http://localhost:8820/master/config-prod.yml
修改后访问服务
再访问http://localhost:8821/getConfigInfo,发现配置信息并没有更新,发送POST请求(curl -X POST “http://localhost:8821/actuator/refresh”)刷新Config Client
刷新客户端服务
再次访问http://localhost:8821/getConfigInfo地址,发现已经获取到了最新配置信息
刷新后访问客户端

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:12:55  更:2022-09-21 00:17:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:07:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码