springcloud config配置,springcloud微服务部署

  springcloud config配置,springcloud微服务部署

  00-1010前言1。传统应用配置的痛点2。Config Configuration Center 3简介。服务器端Config Server 1.pom依赖项2的构造。应用程序启动类3的配置。3 . application . yml 4 . test-dev . XML的配置(客户端应该读取的配置)5 .项目结构4、客户端配置客户端构建1.pom依赖2 .应用启动类配置3.bootstrap.yml配置4.application.yml配置5 .测试控制器6。项目结构5。动态刷新6。试验

  00-1010在系统架构中,配置管理也是一个非功能性需求,就像安全、日志、监控等非功能性需求一样。配置中心是整个微服务基础设施系统的一个组成部分。如下图所示,它的功能看起来不起眼,无非就是简单的配置管理和访问,但却是整个微服务架构中不可或缺的一部分。此外,如果配置中心真的用得好,还可以促进技术组织的持续交付和DevOps的转型。

  00-1010零散格式配置不规范。

  分散配置格式不规范。有的用properties格式,有的用xml格式,有的保存DB。团队倾向于建立他们自己的轮子,并且有各种各样的方法去做。

  主要使用本地静态配置,配置修改比较麻烦。配置修改通常需要经过很长的测试发布周期。在分布式微服务环境中,当有许多服务实例时,修改配置是费时费力的。

  容易发生生产事故的团队在发布时将测试环境的配置带到生产中,这导致了资本损失事故。

  缺乏配置安全审计和版本控制功能。

  00-1010配置中心实际上是一个对分布式系统中的在线应用配置项进行集中统一管理的管理平台。在微服务架构中,当系统从单个应用拆分到分布式系统上的各个服务节点时,配置文件也必须迁移(拆分),这样配置就分散了。不仅如此,冗余还伴随着分散,如下图所示:

  创建一个配置中心,将配置从各个应用中分离出来,统一管理配置。应用程序本身不需要管理配置本身。如下图所示:

  总结起来最主要包括以下三方面核心功能:

  统一配置管理:在配置中心页面进行配置项的修改和编辑,包括统一配置版本管理、环境隔离、灰度释放和热释放,使修改后的配置无需重启应用即可生效。

  统一权限控制主要控制配置的读取权限和修改权限,通过统一权限管理提高运维效率。

  统一的操作审计记录了用户操作修改配置的历史信息,以便在出现问题时,可以进行审核,同时进行操作审计。

  

目录

 

  

前言

dependencygroupidorg . spring framework . cloud/groupid artifactId spring-cloud-starter-网飞-尤里卡-client/artifactId/dependency dependencycgroupidorg . spring framework . cloud/groupidatifactid spring-cloud-config-server/artifactId/dependency!-使用-dependencygroupidol . spring framework . boot/groupid artifactid spring-boot-starter-actuator/artifactid/dependency进行动态刷新

 

  

一、传统应用配置痛点

@ spring boot application @ EnableConfigServer @ EnableEurekaClientpublic类configserver application { public static void main(String[]

 

   args) {SpringApplication.run(ConfigServerApplication.class, args);}}

 

  

3.application.yml配置

spring: application: name: config-server # 使用本地文件,也可配置成从git获取配置文件 profiles: active: - native cloud: config: server: native: search-locations: classpath:/config allow-override: true override-none: true override-system-properties: false discovery: enabled: true fail-fast: true# 注册eureka地址,提供客户端eureka访问 eureka: client: serviceUrl: defaultZone: http://ip:port/eureka/server: port: 8889

 

  

4.test-dev.xml(客户端应读取的配置)

profile: devspring: rabbitmq: host: 10.10.10.10 port: 5672 username: admin password: 123456test: override: client-server refresh: re3

 

  

5.项目结构

 

  

 

  

四、客户端Config Client搭建

1.pom依赖

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency><!-- 动态刷新使用 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

2.application启动类配置

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

 

  

3.bootstrap.yml配置

创建bootstrap.yml配置,因为启动服务会优先采用这个文件的配置,然后是application.yml的配置,服务器启动核心配置可能在配置中心,所以必须创建bootstrap.yml,优先连接配置中心

 

  

spring: cloud: config: # 采用的是test-dev.yml,name是前缀,profile是后缀,label是git存放的分支节点(本次未使用) name: test profile: dev label: dev # 通过service-id(eureka服务名)连接配置中心 discovery: enabled: true service-id: config-servereureka: client: serviceUrl: defaultZone: http://ip:port/eureka/

 

  

4.application.yml配置

server: port: 8888spring: application: name: config-clienteureka: client: serviceUrl: defaultZone: http://ip:port/eureka/# 动态刷新使用management: endpoints: web: exposure: # 暴露监控接口,*为全部接口 include: *

 

  

5.测试controller

@RestController@RefreshScopepublic class TestController { @Value("${spring.rabbitmq.host}") String host; @Value("${test.override}") String override; @Value("${test.refresh}") String refresh; @RequestMapping("/config") public String getConfig(){ return host; } @RequestMapping("/override") public String getOverride(){ return override; } @RequestMapping("/refresh") public String getRefresh(){ return refresh; }}

 

  

6.项目结构

 

  

 

  

五.动态刷新

上述配置中已经包含了动态刷新配置,让我们一起看一下,是哪些配置起到的作用呢

 

  1.客户端Config client,添加spring-boot-starter-actuator依赖

  

<!-- 动态刷新使用 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

2.Controller层添加注解@RefreshScope

 

  

@RestController@RefreshScopepublic class TestController

3.客户端application.yml增加配置

 

  

# 动态刷新使用management: endpoints: web: exposure: # 暴露监控接口,*为全部接口 include: *

4.客户端手动调用动态刷新接口

 

  http://localhost:8888/actuator/refresh

  

 

  

六.测试

开启eureka,gateway,config server,config client服务,注意开启顺序

 

  1.调用TestController中config接口

  

 

  

 

  返回了server中mq的ip,正确

  2.调用TestController中override接口

  

 

  

 

  返回了server中test.override的配置,覆盖了client的test.override

  3.调用TestController中refresh接口(动态刷新)

  

 

  

 

  现在,我们修改server中test.refresh配置,由re2改为re3重启client server(因为配置中心的配置文件采用的服务端管理,如果放置git可以不用重启)重启完成后再起请求refresh接口

  

 

  仍然返回re2,现在我们调用刷新接口

  

 

  注意设置Post的header属性Content-Type=application/json

  

 

  刷新成功,并返回了属性名称,再次请求refresh接口,得到最新的配置:re3

  

 

  到此这篇关于SpringCloud微服务应用-config配置中心(介绍、搭建、动态刷新、测试)的文章就介绍到这了,更多相关SpringCloudconfig配置内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: