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就完成了。

目录
相关文章
|
10天前
|
SpringCloudAlibaba Dubbo Java
【SpringCloud Alibaba系列】Dubbo基础入门篇
Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
【SpringCloud Alibaba系列】Dubbo基础入门篇
|
1月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
36 6
|
1月前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
58 5
|
1月前
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
41 5
|
3月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
4月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
4月前
|
Java 开发工具 对象存储
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
61 2
|
5月前
|
Cloud Native Java Nacos
Spring Cloud Config、Apollo、Nacos和Archaius对比
这篇文章对比了Spring Cloud Config、Apollo、Nacos和Archaius这四种配置中心的适应场景、优缺点。文中讨论了它们的功能特点,例如Spring Cloud Config的集中化配置管理和动态刷新能力,Apollo的实时配置推送和权限治理,Nacos的服务发现和管理功能,以及Archaius的动态配置更新能力。文章指出选择配置中心应根据项目需求和架构来决定,并提供了一个对比图来帮助读者更直观地理解这些工具的差异。
153 1
Spring Cloud Config、Apollo、Nacos和Archaius对比
|
3月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
67 0
|
5月前
|
Java 微服务 Spring
Spring Cloud全解析:配置中心之解决configserver单点问题
但是如果该configserver挂掉了,那就无法获取最新的配置了,微服务就出现了configserver的单点问题,那么如何避免configserver单点呢?