配置管理方案
项目名称 | 描述 | 特点 |
---|---|---|
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中