springcloud:配置管理

leafitit      2022-04-20     795

关键词:

使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。很容易添加替代实现,并使用Spring配置将其插入

以上是Spring Cloud官网对配置服务的描述, 简单阐述一下我的理解。比如我们要搭建一个网站,需要配置数据库连接,指定数据库服务器的IP地址,数据库名称,用户名和口令等信息。通常的方法, 我们可以在一个配置文件中定义这些信息,或者开发一个页面专门配置这些东西。只有一个web服务器的时候, 很方便。

但假如需要搭建同多台服务器时,当然可以每台服务器做同样配置,但维护和同步会很麻烦。我理解的配置服务至少有两种不同场景:

1)多个客户使用同一配置: 比如,多台服务器组成的集群,假如后端使用同一数据库,那么每台服务器都是用相同的配置。

2)不同客户使用不同的配置: 比如典型的场景是,开发,测试,生产使用相同的系统,但使用不同的数据库

如果有个统一的根本配置,是不是就很方便,一个可行的办法是,把这些配置文件放到一个共享存储(比如网络共享盘)中。这样只需要在共享存储修改一个或多个配置文件就可以了。但共享文件的方式受到具体布署环境的限制,很多时候很难达到多台Web服务器共享同一个存储硬盘。

共享盘的缺点是资源定位比较困难,Spring Cloud的解决方案是, 将这些配置文件放到版本管理服务器里面,Spring Cloud缺省配置使用GIT中。所有Web服务均从GIT中获取这些配置文件。由于GIT服务器与具体Web服务器之间不需要共享存储, 只要网络可达就行,从而可以实现Web服务于配置信息的存放位置的解耦。

Spring Cloud统一控制应用和GIT服务的交互,应用只需要按照Spring Cloud的规范配置GIT的URL即可。 使用GIT后,场景2和场景1的区别仅仅是,场景2中不同的client使用不同版本的配置文件,但应用但访问的文件看起来是会是同一个。Spring Cloud的配置服务结构入下图

其中关键字hello的值“Hello World”,就是我们要输出的内容。

一. 创建config Server

 1.  创建Config Server, maven工程里面配置spring-cloud-config-server

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

完整配置如下:

技术分享图片 pom.xml

2. 创建Config Server,它也是一个Spring Boot应用,@EnableConfigServer注解说明了一个Config Server。同样我们使用@EnableEurekaClient将它注册到服务中心。

 1 package springcloud.helloworld.config.server;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.cloud.config.server.EnableConfigServer;
 6 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
 7 
 8 @EnableEurekaServer
 9 @EnableConfigServer
10 @SpringBootApplication
11 public class ConfigServerApplication {
12     public static void main(String[] args) {
13         SpringApplication.run(ConfigServerApplication.class, args);
14     }
15 }

3. Config server的配置文件appication.yml , 注意配置文件的url是GIT服务器的仓库地址, searchPaths配置文件所在的文件夹在仓库中的路径, 在server端不需要指定具体配置文件名, 因为具体的配置文件是什么有应用(也就是client)决定。

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8888
 
spring:
  cloud:
    config:
      server:
        git:
          uri: https://git.oschina.net/chrywhy/test
          searchPaths: spring-cloud/helloworldConfig
  application:
    name: config-server

4. 启动config server后,访问http://localhost:8888/abc/xyz, 可见如下响应。这个是输出是并没有包括具体配置文件的内容, 这个响应说明,config server可以正常访问我们配置在application.yml中的GIT服务

 

这个URL是啥意思, 需要解释一下。我们从输出就可以看到 abc 就是application的名字,xyz是profile的名字, 注意这里的abc, xyz均是随便输入的名字, 并不需要真实存在,config server这个REST接口返回的只是应用名为abc, profile名为xyz时,GIT配置环境的结构。

config server提供的REST接口,Spring Cloud官方文档提供了几个可选URL可以是如下几个:

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
比如 第三个格式,如果我们在GIT版本库中有一个配置文件 spring-cloud/helloworldConfig/config-client-dev.properties. 那么访问http://localhost:8888/config-client-dev.properties就可以显示配置文件内容。这个例子中, application的名字是"config-client"(也是下面我们即将创建的client), profile名字是dev, 文件后缀是.propertie

本例由于配置了eureka服务中心,所以这个config server作为一个eureka client注册到了 eureka server中, 可以从http://localhost:8761看到我们启动的config server, 如果不需要注册到服务中心, 也可把这个配置去掉

整体架构如下:

 技术分享图片

完整项目的源码来源 技术支持2147775633








springcloud:配置管理

使用ConfigServer,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。... 查看详情

springcloud微服务(06):config组件,实现配置统一管理

...上,如果一个配置发生变化,需要修改很多的服务配置。springcloud提供配置中心,来解决这个场景问题。系统中的通用配置存储在相同的地址:GitHub,Gitee,本地配置服务等,然后配置中心读取配置以restful发布出来,其它服务可以... 查看详情

springcloud-nacos配置管理

参考技术A前置文章:一、SpringCloud-Erueka服务注册&发现二、SpringCloud-Nacos服务注册&发现tips:Ctrl+F定位到所需内容快速阅读吧。①常规项目:项目启动→读取application.yml配置文件→创建SpringIOC容器→加载Bean;②Nacos配置中心... 查看详情

springcloud入门教程配置管理

...f0c;比如:开发、测试、生产环境使用的数据库不一样SpringCloud的解决方案是,将这些配置文件放到版本管理服务器里面,SpringCloud缺省配置使用GIT中。所有Web服务均从GIT中获取这些配置文件。由于GIT服务器与具体Web服... 查看详情

springcloud实用篇02

SpringCloud实用篇02点击查看微服务课程点击下载微服务课程资料提取码:12341.Nacos配置管理Nacos除了可以做注册中心,同样可以做配置管理来使用。1.1.统一配置管理当微服务部署的实例越来越多,达到数十、数百时࿰... 查看详情

springcloud简介

 SpringCloud是一个基于SpringBoot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发... 查看详情

springcloud微服务:阿里开源组件nacos,服务和配置管理

...包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务。只需要添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭... 查看详情

springcloud组件及功能介绍

1.什么是SpringClould?SpringCloud是一个基于SpringBoot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一... 查看详情

springcloud实用篇02(代码片段)

SpringCloud实用篇02点击查看微服务课程点击下载微服务课程资料提取码:12341.Nacos配置管理Nacos除了可以做注册中心,同样可以做配置管理来使用。1.1.统一配置管理当微服务部署的实例越来越多,达到数十、数百时࿰... 查看详情

springcloud-springcloudconfig统一配置中心

统一配置中心为什么需要统一配置中心?统一配置中心顾名思义,就是将配置统一管理,配置统一管理的好处是在日后大规模集群部署服务应用时相同的服务配置一致,日后再修改配置只需要统一修改全部同步,不需要一个一个服务手... 查看详情

springcloud简介

SpringCloud简介SpringCloud是一个基于SpringBoot实现的微服务架构开放工具。它为微服务架构中设计的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简... 查看详情

springcloud微服务:阿里开源组件nacos,服务和配置管理

...包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应 查看详情

springcloud之配置中心

前言随着微服务越来越多,服务的配置文件也越来越多,这个时候对于配置文件的管理其实可以完全抽离出来,对于项目启动时需要的配置写入到bootstrap.yml中,那些可能会经常改变的则放到svn或者git上进行管理,项目启动时,... 查看详情

springcloud互联网分布式微服务云平台规划分析--springcloud服务统一配置中心

1.介绍鸿鹄云架构【服务统一配置中心】为分布式系统中的外部配置提供服务器和客户端支持。使用commonservice-config,可以在所有环境中管理应用程序的外部属性。应用程序可通过从开发人员到测试和生产的部署流程,可以管理... 查看详情

springcloud互联网分布式微服务云平台规划分析--springcloud服务统一配置中心

1.介绍鸿鹄云架构【服务统一配置中心】为分布式系统中的外部配置提供服务器和客户端支持。使用commonservice-config,可以在所有环境中管理应用程序的外部属性。应用程序可通过从开发人员到测试和生产的部署流程,可以管理... 查看详情

跟我学springcloud(finchley版)-19-配置中心-springcloudco

...管理配置成为我们必须解决的问题。本节来讨论如何使用SpringCloudConfig管理配置。为什么要使用配置中心集中管理配置。一个使用微服务架构的应用系统可能会包含成百上千个微服务,因此集中管理配置是非常有必要的;不同环... 查看详情

springcloud学习之nacos

一、什么叫Nacos  Nacos(DynamicNamingandConfifigurationService)是阿⾥巴巴开源的⼀个针对微服务架构中服务发现、配置管理和服务管理平台。  Nacos就是注册中⼼+配置中⼼的组合(Nacos=Eureka+Confifig+Bus)二、Nacos特性  2.1、服务发... 查看详情

springcloud-springcloud之config分布式配置;server,client配置(十五)(代码片段)

阅读本文前可先参考​​​​​​SpringCloud-SpringCloud根/父项目,开发准备(二)_MinggeQingchun的博客-CSDN博客在分布式微服务系统中,几乎所有服务的运行都离不开配置文件的支持,这些配置文件通常由各个服务... 查看详情