配置管理方案
| 项目名称 | 描述 | 特点 |
|---|---|---|
| Etcd | 使用go开发的开源项目,用于服务发现和键值管理,使用raft协议作它的分布式计算模型 | 1非常快和可伸缩.2.可分布式.3.命令行驱动,易于搭建和使用 |
| Eureka | 由Netflix开发,久经测试,用于服务发现和键值管理 | 1.分布式键值存储,2.灵活,需要时间设置3.提供开箱即用的动态客户端刷新 |
| Consul | 由Hashicorp开发,特性上类似于Eureka和Etcd,分布式计算模型使用了不同的算法(swim协议) | 快速,2.提供本地服务发现功能,可以直接和DNS集成3.没有提供开箱即用的动态客户端刷新 |
| ZooKeeper | 经常用作访问键值数据的配置管理解决方案 | 1.最古老的解决方案2.使用最为复杂.3.可用作配置管理,但只有其他架构中已经使用了Zookeeper的时候才考虑使用 |
| SpringCloudConfig | 提供不同后端支持的通用配置管理方案 | 1.非分布式键值存储2.提供了对Spring 和非Spring服务对紧密集成. |
Spring cloud config pom 配置文件
<!-- dependencyManageMent-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--添加依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
spring cloud config 和Spring boot 服务整合
在服务的application.yml或bootstrap.yml 中配置
- 服务的名称
- 服务的profile
- config服务器的位置
使用spring cloud 配置服务器和git
- spring.cloud.config.git.uri
- spring.cloud.config.git.searchpath–> git仓库中的相对路径
敏感信息的保护
- 引入不限长度的java 加密扩展–> JCE
- 所有已加密的属性上加上{cipher},表示告诉spring cloud 它正在处理已加密的值.
- 配置微服务以在客户端使用加密
- 配置Spring cloud config 不要在服务端解密属性–> spring.cloud.config.server.encrypt
- 在服务上加上对称密钥
- 将Spring-security-rsa JAR 添加到服务的pom中
本文介绍了如何使用Spring Cloud Config作为配置管理方案,并详细阐述了配置文件的整合步骤,包括在服务的application.yml或bootstrap.yml中设置服务名称、profile以及Config服务器的位置。同时,文章讨论了如何结合Git进行配置存储,并展示了如何保护敏感信息,如通过引入Java加密扩展(JCE),使用{cipher}标识加密属性,以及在客户端解密配置。此外,还提到了在服务端配置不解密属性的策略,并指导如何添加对称密钥和Spring-security-rsa库来增强安全性。

被折叠的 条评论
为什么被折叠?



