网站首页 > 技术教程 正文
Config配置中心
在采用分布式微服务架构的系统中,由于服务数量众多,为了方便服务配置文件的统一管理,需要分布式配置中心组件。如果分散管理各个服务的配置,那么上线之后的配置如何保持一致将会是一个很让人头疼的问题。
因此,各个服务的配置定然需要集中管理。Spring Cloud Config配置中心是一个比较好的解决方案。使用Spring Cloud Config配置中心涉及两部分内容:
(1)config-server:服务端配置。
(2)config-client:客户端配置。
config-server服务端组件
通过Spring Cloud构建一个config-server服务大致需要3步。首先,在pom.xml中引入spring-cloud-config-server依赖,如下所示:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
其次,在所创建的Spring Boot程序的启动类上添加@EnableConfigServer注解,开启Config Server服务,代码如下:
@EnableConfigServer
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).
web(true).run(args);
}
}
最后,设置属性文件的位置。Spring Cloud Config提供本地存储配置的方式。在bootstrap启动属性文件中,设置属性spring.profiles.active=native,并且设置属性文件所在的位置,如下所示:
server:
port: 7788 #配置中心端口
spring:
application:
name: config-server #服务名称
profiles:
active: native #设置读取本地配置文件
cloud:
config:
server: native:
searchLocations: classpath:config/ #声明本地配置文件的存放位置
配置说明:
(1)spring.profiles.active=native,表示读取本地配置,而不是从Git读取配置。
(2)search-locations=classpath:config/,表示查找文件的路径,在类路径的config下。
服务端的配置文件放置规则:在配置路径下,以{label}/{application}-{profile}.properties的命令规范放置对应的配置文件。上面的实例放置了以下配置文件:
/dev/crazymaker-common.yml
/dev/crazymaker-db.yml
/dev/crazymaker-redis.yml
以上文件分别对通用(common)、数据库(db)、缓存(redis)的相关属性进行设置。作为示例,缓存(redis)的配置如下:
spring:
redis:
blockWhenExhausted: true #链接耗尽时是否阻塞
database: 0 #指定Redis数据库
host: ${SCAFFOLD_REDIS_HOST:localhost} #Redis主机IP
maxIdle: 100 #最大空闲连接数
maxTotal: 2000 #最大连接数
maxWaitMillis: 60000 #获取链接最大等待毫秒数
minEvictableIdleTimeMillis: 1800000 #最小空闲时间
numTestsPerEvictionRun: 1024 #每次释放链接的最大数目
password: ${SCAFFOLD_REDIS_PSW:123456} #密码,如果没有设置密码,这个配置就可以不设置
port: 6379 #Redis端口
softMinEvictableIdleTimeMillis: 10000 #链接空闲多久后释放
testOnBorrow: false #在使用时检查有效性
testWhileIdle: true #获取链接时检查有效性
timeBetweenEvictionRunsMillis: 30000 #释放链接的扫描间隔(毫秒)
connTimeout: 6000 #链接超时毫秒数
readTimeout: 6000 #读取超时毫秒数
Config配置中心启动之后,可以使用以下地址格式直接访问加载好的配置属性:
http://${CONFIG-HOST}: ${CONFIG-PORT}/{application}/{profile}[/{label}]
例如,通过地址
http://192.168.233.128:7788/crazymaker/redis/dev访问示例中配置的缓存的相关属性,如图2-11所示。
特别说明:Spring Cloud Config-Server支持多种配置方式,比如Git、Native、SVN等。虽然官方建议使用Git方式进行配置,但是这里没有重点介绍Git方式,而是使用了本地文件的方式,有以下3个原因:
(1)对于学习或者一般的开发来说,本地文件的配置方式更简化。
(2)生产环境建议使用Nacos,其具备注册中心和配置中心相结合的功能,更加方便与简单。
(3)掌握了Native的配置方式之后,对于Git的配置方式就能触类旁通。
config-client客户端组件
客户端config-client同config-server一样,需要新增springcloud-starter-eureka的依赖用来注册服务,然后增加spring-cloudstarter-config依赖引入配置相关的JAR包。
<dependencies>
...
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
在bootstrap.properties中,按如下规则增加客户端配置的映射规则:
spring.cloud.config.label:dev #对应服务端规则中的{label}部分
spring.application.name:crazymaker #对应服务端规则中的{application}部分
spring.cloud.config.profile:redis #对应服务端规则中的{profile}部分
spring.cloud.config.uri:http://${CONFIG-HOST}:7788/ #配置中心config-server独立的uri地址
效果如图2-12所示。
如果是与Eureka的客户端配合使用,那么建议开启配置服务的自动发现机制,使用如下配置:
spring.cloud.config.discovery.enabled: true
spring.cloud.config.discovery.service-id: config-server
配置中心的两种发现机制不能同时存在,二者选其一即可。
客户端config属性的相关配置只有配置在bootstrap.properties(或bootstrap.yml)中,config部分的内容才能被正确加载,原因是config的相关配置必须早于application.properties,而bootstrap.properties的加载也早于application.properties。
本文给大家讲解的内容是Spring Cloud Config配置中心
- 下篇文章给大家讲解的是微服务的RPC远程调用;
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢大家的支持
- 上一篇: 快速上手chkconfig命令
- 下一篇: 以讹传讹 这些优化技巧乱忽悠
猜你喜欢
- 2024-11-27 SpringCloud微服务架构篇7:Config配置资源库及加解密
- 2024-11-27 分享一个vue.config.js 的完整配置(超详细)
- 2024-11-27 如何进行系统配置 ——用CONFIG.SYS做系统配置
- 2024-11-27 Nginx处理Http请求11个阶段之find_config,彻底搞明白匹配规则
- 2024-11-27 还在手撸 Nginx 配置?试试这款可视化配置工具吧,真心强大
- 2024-11-27 Flask Config类详解以及如何动态更新配置项
- 2024-11-27 SpringCloud系列——Config 配置中心
- 2024-11-27 Client-go客户端源码解析——Controller总体流程
- 2024-11-27 msconfig修改“处理器数和最大内存”,开不了机解决办法
- 2024-11-27 Creo配置Config.pro选项前图标含义
你 发表评论:
欢迎- 01-09单因素方差分析+作图
- 01-09描述性统计分析 之 均值分析
- 01-0986:重复性和再现性分析GRR(2)-GRR均值极差分析法和方差分析法
- 01-09SPC如何做方差分析,意义又在哪里?
- 01-09MedSPSS小课堂——多因素方差分析
- 01-09MedSPSS小课堂——双因素方差分析
- 01-09SPSS单因素方差分析的操作步骤及结果解读,陈老师SPSS数据分析
- 01-0914单因素方差分析:One-Way ANOVA
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)