springcloud 入门(7) springcloud config配置中心(上)

简介: springcloud 入门(7) springcloud config配置中心

spring cloud config

项目环境

1、IDE:idea ,maven

2、操作系统:win10

3、jdk:1.8

4、springboot 2.1.6.RELEASE ,springcloud Greenwich.SR1

介绍

Spring Cloud Config 是 Spring Cloud 微服务体系中的中配置中心,是微服务中不可或缺的一部分,其能够很好地将程序中配置日益增多的各种功能的开关、参数的配置、服务器的地址,配置修改后实时生效,灰度发布,分环境、分集群管理配置等进行全面的集中化管理,有利于系统的配置管理和维护。

在互联网时代,应用都是分布式系统,部署在 N 台服务器上,想要去线上一台台地重启机器肯定不靠谱,并且维护成本也很高,所以配置中心应运而生。配置中心被用作集中管理不同环境( Dev 、 Test 、 Stage 、 Prod )和不同集群配置,以及在修改配置后将实时动态推送到应用上进行刷新。

创建git仓库

springcloud config 要配合git使用,所以首先要创建一个git仓库

登录GitHub,右上角有个New repository

1、 新建仓库

image.png

2、输入仓库名

2.png

3、根据GitHub提示提交本地代码

image.png

提示:2021.8.13之后GitHub 的操作都是以token的形式for-git-operations

token的获取在Settings /Developer settings/Personal access tokens/ Generate new token

拉取代码要以token形式https://your_token@github.com/ArronSun/micro-services-config.git


我的配置的GitHub地址是https://github.com/ArronSun/micro-services-config.git,在micro-services-config仓库下提交配置文件,

我的配置文件是放到了config文件夹下

image.png

application-dev.properties

site.sunlong.profile=dev

config server

1、创建springboot 基础项目,cloud-config-server,依赖如下

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

2、启动类加上EnableConfigServer注解

@EnableConfigServer
@SpringBootApplication
public class CloudConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(CloudConfigServerApplication.class, args);
    }
}

3、配置文件 application.properties

server.port=8101
spring.application.name=cloud-config-server
spring.cloud.config.server.git.uri=https://github.com/ArronSun/micro-services-config.git
spring.cloud.config.server.git.username=ArronSun
#GitHub token
spring.cloud.config.server.git.password=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxx
# 仓库路径下相对搜索位置,可以配置多个
spring.cloud.config.server.git.search-paths=config
# 连接git 超时时间
spring.cloud.config.server.git.timeout=30

启动CloudConfigServerApplication,访问http://localhost:8101/app/dev/master

// 20211203151258
// http://localhost:8101/app/dev/master
{
  "name": "app",
  "profiles": [
    "dev"
  ],
  "label": "master",
  "version": "71c8e92b2e39bb35b5a1d2d21f1187f8c714ca9f",
  "state": null,
  "propertySources": [
    {
      "name": "https://ghp_xxxxxxxxxxxxxxxxxxxxxxx@github.com/ArronSun/micro-services-config.git/config/application-dev.properties",
      "source": {
        "site.sunlong.profile": "dev"
      }
    }
  ]
}

访问成功后,idea控制台会输出以下内容

2021-12-03 15:16:35.023  INFO 48824 --- [nio-8101-exec-7] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/C:/Users/ADMINI~1/AppData/Local/Temp/config-repo-3471101335122200905/config/application-dev.properties

官方给的配置信息和url之间的映射关系:官方地址

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

字段解释:

{application}代表应用名

{profile}对应激活的环境,例如:prod、dev、test等

{label}代表git分支名,如果不写默认是master

如果git的配置文件只有一个,应用名是application,这种情况下URL连接中的应用名只要不为空输入任意字符都能访问到这个唯一的配置文件。这种情况只限于应用名是application切只有一个文件。例如:访问http://localhost:8101/configServer/dev/ 也能成功访问

// 20211203185614
// http://localhost:8101/configServer/dev/
{
  "name": "configServer",
  "profiles": [
    "dev"
  ],
  "label": null,
  "version": "71c8e92b2e39bb35b5a1d2d21f1187f8c714ca9f",
  "state": null,
  "propertySources": [
    {
      "name": "https://ghp_xxxxxxxxx@github.com/ArronSun/micro-services-config.git/config/application-dev.properties",
      "source": {
        "site.sunlong.profile": "dev"
      }
    }
  ]
}

至此springcloud config server简单使用就算完成了

config client

新建一个cloud-config-client用于读取GitHub上配置文件

1、创建一个cloud-config-client springboot项目,依赖如下

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

2、配置文件

application.properties

server.port=8201
spring.application.name=cloud-config-client

bootstrap.properties

#bootstrap.properties 会优先于application.properties加载,
# 分支
spring.cloud.config.label=master
# cloud server 地址
spring.cloud.config.uri=http://localhost:8101
# 要请求那个名称的的远程文件,多个用逗号分隔. 和下面的profile连接,就会访问application-dev.properties
spring.cloud.config.name=application
# profile
spring.cloud.config.profile=dev

application.properties:对应的是用户级的资源配置项

bootstrap.properties:对应的是系统级的资源配置,其优先级更高

3、测试使用

新建一个ConfigInfoProperties.java,对应着GitHub的配置文件

@Configuration
@ConfigurationProperties(prefix = "site.sunlong")
public class ConfigInfoProperties {
    private String profile;
    public String getProfile() {
        return profile;
    }
    public void setProfile(String profile) {
        this.profile = profile;
    }
}

新建一个ConfigClientController类用于测试

@RequestMapping("configClient")
@RestController
public class ConfigClientController {
    @Autowired
    private ConfigInfoProperties configInfoProperties;
    @GetMapping("config")
    public String getConfig(){
        return configInfoProperties.getProfile();
    }
}

启动CloudConfigClientApplication,访问http://localhost:8201/configClient/config

image.png

至此,一个简单的sprigcloud config client就完成了。

目录
相关文章
|
2月前
|
NoSQL Java Nacos
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
73 3
|
6天前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
24天前
|
Cloud Native Java Nacos
Spring Cloud Config、Apollo、Nacos和Archaius对比
这篇文章对比了Spring Cloud Config、Apollo、Nacos和Archaius这四种配置中心的适应场景、优缺点。文中讨论了它们的功能特点,例如Spring Cloud Config的集中化配置管理和动态刷新能力,Apollo的实时配置推送和权限治理,Nacos的服务发现和管理功能,以及Archaius的动态配置更新能力。文章指出选择配置中心应根据项目需求和架构来决定,并提供了一个对比图来帮助读者更直观地理解这些工具的差异。
34 1
Spring Cloud Config、Apollo、Nacos和Archaius对比
|
22天前
|
Java 微服务 Spring
Spring Cloud全解析:配置中心之解决configserver单点问题
但是如果该configserver挂掉了,那就无法获取最新的配置了,微服务就出现了configserver的单点问题,那么如何避免configserver单点呢?
|
1月前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
2月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
288 15
|
2月前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
61 3
|
1月前
|
Java 数据库连接 Nacos
SpringCloud微服务配置管理、配置热更新
SpringCloud微服务配置管理、配置热更新
44 0
|
28天前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
|
22天前
|
人工智能 前端开发 Java
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
本文介绍了如何使用 **Spring Cloud Alibaba AI** 构建基于 Spring Boot 和 uni-app 的聊天机器人应用。主要内容包括:Spring Cloud Alibaba AI 的概念与功能,使用前的准备工作(如 JDK 17+、Spring Boot 3.0+ 及通义 API-KEY),详细实操步骤(涵盖前后端开发工具、组件选择、功能分析及关键代码示例)。最终展示了如何成功实现具备基本聊天功能的 AI 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
167 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)