1 特性与原则
微服务在配置方面与传统开发模式存在很大的区别,具体特性如下1:
(1)应用配置与实际代码完全分离;
(2)应用或者一个不可变的 Docker镜像,它们在各自环境中的配置不会发生变化。
(3)服务器启动时,可通过环境变量加载应用配置信息,也可通过集中式存储库来加载应用配置信息。
依据这些特性,我们可以提炼出微服务在配置方面的四项原则1:
(1)分离 ——服务配置信息与服务完全分离。服务器启动时,再通过环境变量或集中式存储库来加载应用配置信息。
(2)抽象 —— 将访问配置数据的功能抽象到一个服务接口中。应用使用基于 REST 的 JSON 服务来获取配置数据。
(3)集中 —— 因为应用可能存在数百个服务,所以应该将应用的配置信息尽可能集中存放。
(4)稳定 —— 因为应用程配置信息与服务完全分开并且集中存放,所以一定要保证高可用和冗余。
2 模型设计
通过微服务配置特性与原则,我们可以设计出符合这一要求的微服务配置模型1。
-
微服务实例启动时,会从配置中心拉取相关配置信息;
-
配置中心会从配置库中读取实际配置信息;
-
配置库可以是配置文件、关系数据库或者键值对数据库;
-
开发人员通过版本控制系统来变更配置信息,这样便于进行版本管理。
实际构建时,按照项目来对应配置中心:
一个项目对应一个配置中心。如果有多个项目那么对应多个配置中心。也就是把配置中心下沉到项目中。这样做的好处是:
-
因为配置中心在项目结构中,可以很方便地进行配置;
-
可以针对具体项目的特性来构建配置中心高可用架构。
不足是如果有多个项目,那么就会存在多个配置中心,增加管理复杂度。
3 技术选型
使用Spring Cloud Config 框架来搭建配置中心,有以下优点1:
(1) 易于搭建和使用;
(2) Spring Cloud Config与 Spring Boot 紧密集成,通过一些简单易用的注解即可读取配置数据;
(3) Spring Cloud Config与 Eureka 服务发现中心集成良好;
(4) Spring Cloud Config 与 Git 代码版本控制系统集成良好;
(5) Spring Cloud Config 与 SVN代码版本控制系统集成良好2。
【1】 约翰 · 卡内尔 . Spring 微服务实战(异步图书) (Kindle 位置 1433-1518) . 人民邮电出版社 . Kindle 版本 .
【2】 spring cloud config 配置svn 实例.
网友评论