ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Config相关知识

2022-03-18 18:35:25  阅读:108  来源: 互联网

标签:配置 配置文件 Config 知识 server spring 相关 config cloud


1. 概述

​ 在分布式系统中,每一个功能模块都能拆分成一个独立的服务,一次请求的完成,可能会调用很多个服务协调来完成,为了方便服务配置文件统一管理,更易于部署、维护,所以就需要分布式配置中心组件了,在spring cloud中,有分布式配置中心组件spring cloud config,它支持配置文件放在在配置服务的内存中,也支持放在远程Git仓库里。引入spring cloud config后,我们的外部配置文件就可以集中放置在一个git仓库里,再新建一个config server,用来管理所有的配置文件,维护的时候需要更改配置时,只需要在本地更改后,推送到远程仓库,所有的服务实例都可以通过config server来获取配置文件,这时每个服务实例就相当于配置服务的客户端config client。

​ 为了保证系统的稳定,配置服务端config server可以进行集群部署,即使某一个实例,因为某种原因不能提供服务,也还有其他的实例保证服务的继续进行。

2. 搭建Config项目

2.1 New Maven Module

 

2.2 pom

<!-- web依赖 -->

<!-- web依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- config依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- eureka客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2.3 yml

server:
  port: 8888
  
spring:
  application:
    name: emall-config
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/green_vegetables/kgc-emall.git   # git仓库地址,根据自身情况替换
          username: ***                     					# git用户名
          password: ***                                    		  # git密码
          search-paths: /**/config                                    # 配置文件所在目录
      label: master                                                  # 所在分支
      
    
eureka:
  client: 
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka

2.4 启动类

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

启动测试前,确保码云上以准备好配置文件,且确保码云仓库是公开的;然后启动测试确认是否可以获取到自己在码云服务器上的配置

3. 使用config获取配置

以emp-consumer为例

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

3.2 新建bootstrap.yml

只能叫这个名字,且该文件会先加载,所以需要根据具体情况把会先用到的配置放到这里

spring:
  application:
    name: emall-emp-consumer
  cloud:
    config:
      discovery:
        enabled: true             # 开启配置服务发现
        service-id: EMALL-CONFIG
      label: master               # 分支
      profile: dev                # 已在码云上配置dev和prd
      
eureka:
  client: 
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka

3.3 修改application.yml

部分配置移到了bootstrap.yml中,这个文件内容变少了

server:
  port: 8010
  
feign: 
  hystrix: 
    enabled: true

3.4 获取配置值

 

3.5 修改启动类

3.4 测试

 

4. 客户端手动刷新配置

配置文件如果改变了,已经启动的服务如何获得最新的配置,当然可以重新启动服务,但是这样速度太慢了,还需要到服务器上去操作,增加了运维成本,spring cloud提供了一个手动刷新的解决方案。

以下无特殊说明改的都是emall-emp-consumer项目

4.1 pom

4. 客户端手动刷新配置

配置文件如果改变了,已经启动的服务如何获得最新的配置,当然可以重新启动服务,但是这样速度太慢了,还需要到服务器上去操作,增加了运维成本,spring cloud提供了一个手动刷新的解决方案。

以下无特殊说明改的都是emall-emp-consumer项目

4.1 pom

添加依赖

<!-- 监控和管理依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<!-- 安全机制依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

4.2 修改bootstrap.yml

新增配置,用于暴露端点

management:
  endpoint:
    env:
      enabled: true
  endpoints:
    web:
      exposure:
        include: "*"

4.3 修改需要刷新的类

在引用了远程配置文件属性的类上 ,加上注解@RefreshScope

 

标签:配置,配置文件,Config,知识,server,spring,相关,config,cloud
来源: https://blog.csdn.net/m0_61910385/article/details/123581561

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有