Spring Cloud学习笔记-010

  • 分布式配置中心:Spring Cloud Config

  Spring Cloud Config是Spring Cloud团队创建的一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端和客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,他们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。Spring Cloud Config实现了对服务端和客户端中环境变量和属性配置的抽象映射,所以它除了适用于Spring构建的应用程序之外,也可以在任何其他语言运行的应用程序中使用。由于Spring Cloud Config实现的配置中心默认采用Git来储存配置信息,所以使用Spring Cloud Config构建的配置服务器,天然就支持对微服务应用配置信息的版本管理,并且可以通过Git客户端工具来方便地管理和访问配置内容。当然它也提供了对其他存储方式的支持,比如SVN仓库、本地化文件系统等。

  • 服务端搭建

1. 创建maven工程,骨架选择quickstart,名称为:demo-config-server

2.  加入相关依赖:

3. 创建启动类:

4. 在src\main\resources目录下创建application.yml文件:

  • spring.cloud.config.server.git.uri:配置Git仓库位置。
  • spring.cloud.config.server.git.search-paths:配置仓库路径下的相对搜索位置,可以配置多个。
  • spring.cloud.config.server.git.username:访问Git仓库的用户名。
  • spring.cloud.config.server.git.password:访问Git仓库的用户密码。

  注:由于git项目是公开的,所以不用提供用户名和密码也可以。

5. 登录Git,在demo-springcloud/目录下创建config-repo文件夹,并新建4个配置文件:

6. 配置文件的内容分别如下,为了测试版本控制,在该Git仓库的master分支中,为form属性加入1.0的后缀,同时创建一个config-label-test分支,并将个配置文件中的值用2.0作为后缀:

7. 启动项目,可以通过如下几种方式访问配置内容,其中application为配置文件的前缀,这里就是application;profile为配置文件的后缀,这里是dev、pro和test;label代表Git分支名称:

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

  例如访问http://localhost:8001/application/dev/config-label-test得到如下内容:

8. 同时,观察demo-config-server项目的控制台,发现输出了如下内容:

9. 配置服务器在从Git中获取配置信息后,会存储一份在demo-config-server的文件系统中,实质上demo-config-server是通过git clone命令将配置内容复制了一份在本地存储,然后读取这些内容并返回给微服务应用进行加载。通过Git在本地仓库暂存,可以有效的防止当Git仓库出现故障而引起无法加载配置信息的情况。可以断开网络,再次在浏览器发起上述请求,可以看到控制台的报错信息:Could not fetch remote for config-label-test remote,但是它依然会为该请求返回配置内容,这些内容源于之前访问时存于demo-config-server本地文件系统中的配置内容:

10. 根据控制台打印的路径,去到指定目录,发现下载下来的配置文件:

  • 客户端搭建

1. 创建maven工程,骨架选择quickstart,名称为:demo-config-client

2. 加入相关依赖:

3. 创建启动类:

4. 在src/main/resources目录下创建bootstrap.properties文件(注:这些属性必须配置在bootstrap.properties中,这样demo-config-server中的配置信息才能被正确加载。Spring Boot对配置文件的加载顺序为,对于本应用jar包之外的配置文件加载会优先于应用jar包内的配置内容,而通过bootstrap.properties对demo-config-client的配置,使得该应用会从demo-config-server中获取一些外部配置信息,这些信息的优先级比本地的内容要高,从而实现了外部化配置):

  • spring.application.name:对应配置文件规则中的{application}部分。
  • spring.cloud.config.profile:对应配置文件规则中的{profile}部分。
  • spring.cloud.config.label:对应配置文件规则中的{label}部分。
  • spring.cloud.config.uri:配置中心demo-config-server的地址。

5. 创建一个RESTful接口来返回配置中心的from属性,启动项目并测试效果:

原文地址:https://www.cnblogs.com/skyer5217/p/8856041.html

时间: 2024-10-08 00:26:35

Spring Cloud学习笔记-010的相关文章

spring cloud 学习笔记--网关zuul学习

微服务是多个服务共同完成一件事情,那么"一致对外"就很有必要,就像我们去买面包,不可能先去找农民买小麦,再.... 盗图 spring cloud 引入zuul方式来实现这一功能 添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </depend

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

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

Spring Cloud学习笔记-007

声明式服务调用:Spring Cloud Feign Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能之外,它还提供了一种声明式的Web服务客户端定义方式. 在使用Spring Cloud Ribbon时,通常都会利用它对RestTemplate的请求拦截来实现对依赖服务的接口调用,而RestTemplate已经实现了对HTTP请求的封装处理,形成了一套模板化的调用方法.在实际开发中,由

Spring Cloud学习笔记-009

API网关服务:Spring Cloud Zuul API网关是一个更为智能的应用服务器,它的定义类似于面向对象设计模式中的Façade模式,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端访问都需要经过它来进行调度和过滤.它除了要实现请求路由.负载均衡.校验过滤等功能之外,还需要更多能力,比如与服务治理框架的结合.请求转发时的熔断机制.服务的聚合等一系列高级功能. 在Spring Cloud中提供了基于Netflix Zuul实现的API网关组件——Spring Cloud Zuu

Spring Cloud学习笔记-012

分布式服务跟踪:Spring Cloud Sleuth 随着业务的发展,系统规模也会变得越来越大,各微服务间的调用关系也变得越来越错综复杂.通常一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一条复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟高或错误的时候都有可能引起请求最后的失败.这时候,对于每个请求,全链路调用的跟踪就变得越来越重要,通过实现对请求调用的跟踪可以帮助我们快速发现错误根源以

Spring Cloud学习笔记-004

高可用注册中心 在微服务架构这样的分布式环境中,需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对于微服务如此,对于服务注册中心也一样.如果一直使用单节点的服务注册中心,这在生产环境中显然并不合适,需要构建高可用的服务注册中心以增强系统的可用性. 在Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方,服务注册中心也不例外.Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以刑场一组互相注册的服务中心,以实现服

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>

spring cloud 学习(4) - hystrix 服务熔断处理

hystrix 是一个专用于服务熔断处理的开源项目,当依赖的服务方出现故障不可用时,hystrix有一个所谓的断路器,一但打开,就会直接拦截掉对故障服务的调用,从而防止故障进一步扩大(类似中电路中的跳闸,保护家用电器). 使用步骤:(仍然在之前的示例代码上加以改造) 一.添加hystrix依赖 compile 'org.springframework.cloud:spring-cloud-starter-hystrix' 二.在需要熔断的方法上添加注解 package com.cnblogs.y

Spring Batch学习笔记二

此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch的架构 一个Batch Job是指一系列有序的Step的集合,它们作为预定义流程的一部分而被执行: Step代表一个自定义的工作单元,它是Job的主要构件块:每一个Step由三部分组成:ItemReader.ItemProcessor.ItemWriter:这三个部分将执行在每一条被处理的记录上,ItemReader读取每一条记录,然后传递给ItemProcessor处理,最后交给ItemWriter做持久化:It