springcloudconfig是什么(一文带你弄明白Spring)

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所示。

springcloudconfig是什么(一文带你弄明白Spring)(1)

图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所示。

springcloudconfig是什么(一文带你弄明白Spring)(2)

图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配置中心
  1. 下篇文章给大家讲解的是微服务的RPC远程调用;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持
,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页