spring cloud实战与思考(一) spring config全局配置方案设计

“spring cloud”的配置中心工具“spring cloud config”提供了分布式系统配置文件集中管理解决方案。该工具功能强大,实现也很简单。网上可以搜索到很多开发教程和用例。本文并不是分享“spring cloud config”的开发方法,而是想聊一聊它的使用。

任何一个工具不管多么强大和便利,如果用的不好,也达不到期望的效果。拿到“spring cloud config”后,我期望基于这个工具构建的配置文件管理系统能够实现:

  1. 微服务中各个实例的配置项都集中在配置中心。运维人员无需逐一链接到各个分布式节点,能够在配置中心完成微服务实例所有配置项的修改。
  2. 配置项信息源要单一。同一个配置项不会出现在两个源中。以免两个源中同一个配置项数值不一致,导致业务逻辑混乱。

通常在网上看到的“spring cloud config”实例中,“config client”的本地配置文件“bootstrap.properties”如下:

文件中微服务端口号“8001”和实例名称“booking-server”配置项其实是有可能改动的。例如增减微服务实例、端口号已占用、新增微服务类型等场景。所以将它们放到本地配置文件中无法满足第一个需求。此外为了满足第二个需求,需要将配置项按照使用范围进行分类,分别放入不同的配置文件中:

1) 所有微服务实例共享的配置项,例如common.properties

2) 同类微服务实例共享的配置项,例如booking-common.properties

3) 特定微服务实例独享的配置项,例如booking-server-a.properties、booking-server-b.properties

这就要求微服务实例能够加载多个远端的配置文件。而上面这种配置方式是使用微服务名称“booking-server”映射到配置中心的“booking-server-dev.properties”配置文件。限制了加载的配置文件数量和名称。无法满足第二个需求。

现在以booking微服务dev版本为例,修改上面的配置文件:

  1. 微服务端口号“server.port”是实例独享的配置项,将“server.port”放入“booking-server-a.properties”配置文件中。
  2. 微服务名称“spring.application.name”是booking类服务各个实例共享的配置项,将“spring.application.name”放入“booking-common.properties”配置文件中。
  3. 服务注册中心地址配置项“eureka.client.serviceUrl.deaultZone”只能保留在本地配置文件中。
  4. 配置中心微服务名称“spring.cloud.config.discovery.service-id”只能保留在本地配置文件中。
  5. 将微服务booking与其他微服务共享的配置项放入“common.properties”配置文件中。
  6. 使用“spring.cloud.config.name”配置项同时加载“common.properties”、“booking-common.properties”和“booking-server-a.properties”配置文件。

修改后的配置文件如下:

common-dev.properties配置文件:

booking-common-dev.properties配置文件:

booking-server-a-dev.properties配置文件:

"booking-server-a"本地“bootstrap.properties”配置文件:

现在“booking”微服务实例a的本地配置文件已经得到精简,只保留了必要的配置项。这些配置项是必须的,用来指示“config client”如何找到“config server”以及应该加载那些配置文件。此外配置项“spring.cloud.config.name”和“spring.cloud.config.profile”配置项可以放到启动微服务的命令行中。这样可以编译一个通用jar包,通过不同命令行参数启动为不同的微服务实例。

再次精简的本地“bootstrap.properties”配置文件:

启动“booking”微服务a的命令:

java -jar .\booking-server.jar --spring.cloud.config.name=common,booking-common,booking-server-a --spring.cloud.config.profile=dev

本文讲的东西是比较简单的。主要是分享一下使用“spring cloud config”的一种思路。

原文地址:https://www.cnblogs.com/standup/p/9052593.html

时间: 2024-10-08 10:57:43

spring cloud实战与思考(一) spring config全局配置方案设计的相关文章

spring cloud实战与思考(二) 微服务之间通过fiegn上传多个文件1

需求场景: 微服务之间调用接口一次性上传多个文件. 上传文件的同时附带其他参数. 多个文件能有效的区分开,以便进行不同处理. Spring cloud的微服务之间接口调用使用Feign.原装的Feign不支持文件的传输.需要借助"Feign-form"库才行.但是貌似"Feign-form"库(至少是3.0.3版本)只支持单文件上传.在接口中使用多文件参数时会报异常: feign.codec.EncodeException: class [Lorg.springfr

spring cloud实战与思考(三) 微服务之间通过fiegn上传一组文件(下)

需求场景: 用户调用微服务1的接口上传一组图片和对应的描述信息.微服务1处理后,再将这组图片上传给微服务2进行处理.各个微服务能区分开不同的图片进行不同处理. 上一篇博客已经讨论了在微服务之间传递一组图片和对应参数的解决方案.现在来看看如何对组内文件进行区分.当前项目中使用了"commons-fileupload"和"feign-form"两个库进行文件传输. "commons-fileupload"库可以将http request转换成&quo

Spring Cloud实战之初级入门(四)— 利用Hystrix实现服务熔断与服务监控

目录 1.环境介绍 2.服务监控 2.1 加入依赖 2.2 修改配置文件 2.3 修改启动文件 2.4 监控服务 2.5 小结 3. 利用hystrix实现消费服务熔断 3.1 加入服务熔断 3.2 测试服务熔断 4. 利用turbine监控所有应用 4.1 创建工程 4.2 修改配置文件 4.3 修改启动文件 4.4 启动 5.一点点重要的事情 1.环境介绍 本篇文章涉及到前面文章的工程,mirco-service-provider.mirco-service-consumer以及需要另外新建

3.开始使用Spring Cloud实战微服务

                 开始使用Spring Cloud实战微服务 3.1. Spring Cloud实战前提 3.1.1. 需要的技术储备 3.1.2. 使用的工具及软件版本 3.2. 服务提供者与服务消费者 3.3. 编写服务提供者 3.3.1. 手动编写项目 3.3.2. 使用Spring Initializr快速创建Spring Boot项目 3.4. 编写服务消费者 3.5. 为项目整合Spring Boot Actuator 3.6. 硬编码有哪些问题 原文地址:https

《重新定义Spring Cloud实战(许进 等著)》 高清pdf

<重新定义Spring Cloud实战> Spring Cloud中国社区出品,核心成员来自原阿里.蚂蚁金服和*金融等,BAT近10位专家力荐,内容足够广.有深度.重生产实践 ? 百度网盘链接: https://pan.baidu.com/s/1iAWBPi2J_ATTYsjzl41dnw 提取码: yhjx 内容简介 这是一本实践与理论并重.广度与深度兼顾的Spring Cloud生产实践开发指南,由SpringCloud中国社区倾力打造,作者来自阿里.蚂蚁金服.*金融等企业,本书针对Spr

spring cloud实战 1-高可用注册中心

创建父maven项目 提交代码至GitHub 创建eureka-server-1 项目搭建两种方式: 父pom中继承spring-boot-starter-parent,子pom中直接结成父pom.该方式比较方便,但子项目都是spring boot项目了. 父项目不需要继承spring-boot-starter-parent,子pom中通过使用scope = import依赖关系. 123456789101112 <dependencyManagement> <dependencies&

Spring Cloud学习笔记 【篇一:分布式配置中心 Spring Colud Config】

一.简介 Spring Cloud Config提供了在分布式系统的外部配置的客户端支持.通过配置服务(Config Server)来为所有的环境和应用提供外部配置的集中管理.这些概念都通过Spring的Environment和PropertySource来抽象,所以它可以适用于各类Spring应用,同事支持任何语言的任何应用.它也能为你支持对应用开发环境.测试环境.生产环境的配置.切换.迁移.默认的配置实现通过git实现,同事非常容易的支持其他的扩展(比如svn等).在spring cloud

Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server,二是config client,业界也有些知名的同类开源产品,比如百度的disconf. 相比较同类产品,SpringCloudConfig

Spring Cloud学习(六):Config配置管理

1. Config介绍 在分布式中我们会有很多服务,每个服务都有配置文件,如果修改了某个在多个服务中用到的配置项,那么就需要去各个服务中更改,非常麻烦. 而且在开发,测试,生产三个场景用到的配置也是不同的,为了方便这些配置的管理,就用到了配置中心.配置中心分为了服务端和客户端,服务端主要是读取git/svn仓库中的配置项,然后客户端会去从服务端获取配置. 2. 准备工作 一个注册中心,一个Config Server,一个Config Client,不同环境的配置文件 config-dev.pro