共计 1422 个字符,预计需要花费 4 分钟才能阅读完成。
1、配置中心概述
配置中心是集中管理配置信息的组件。它通常提供配置变更、配置推送、历史版本版本管理、灰度发布、配置变更审计等功能。通过这些功能可以降低分布式系统中管理配置信息的成本,降低因错误的配置信息变更带来可用性下降甚至发生故障的风险。
2、配置信息的管理方式
2.1、使用配置文件
在集中式开发架构中通常使用此种方法。在系统部署到生产环境后,如果需要修改一个配置信息,则需要先登录到服务上修改信息,然后刷新配置文件或重启服务。
这种管理配置信息的方式虽然简单方便,但因为没有集群,所以无法保证服务的高可用。
2.2、使用数据库
网站的系统配置信息大都是存储到数据库的。以 MySQL 为例,可以把表设计成 Key 和 Value 两列,Key 是主键,Value 是值。
如表:
Key | Value |
---|---|
Sitename | 刘先生的个人博客 |
2571535319@qq.com | |
Filetype | |.gif|.jpg|.swf|.rar| |
Filesize | 4096 |
这种方法需要单独创建表或者字段,且不能主动刷新。所以,这种方式不能很好地满足分布式系统的配置需求。
在分布式系统中,构建、发布、配置、上线这些过程如果没有一套科学完整的体系,则会非常复杂、烦锁。它涉及将软件包 (JAR、WAR 等) 分发到多台机器中,如果需要修改配置信息,则不能按集中式的管理办法来实施,需要有一个专业的配置中心来实现分布式系统的配置信息变更,比如:线程池、连接池大小、开关、预案、限流配置、功能特性切换、数据源主备容灾切换、路由规则等。
2.3、使用配置中心
在微服务架构下,可以使用诸如 Spring Cloud Config、Apollo、Nacos 等专业的配置中心来管理配置信息。通过配置中心,可以动态刷新 (自动或手动) 配置信息到应用程序中,使修改及时生效。
3、对比主流配置中心
开源的配置中心有很多,比如,360 的 QConf、淘宝的 DIamond、百度的 Disconf、携程的 Apollo、Apache Commons Configuration、Owner、Cfg4J、Spring Cloud Config 等。
主流配置中心对比:
功能 | Spring Cloud Config | Apollo | Nacos | Disconf |
---|---|---|---|---|
开源时间 | 2014 年 9 月 | 2016 年 5 月 | 2018 年 6 月 | 2014 年 9 月 |
单机部署 | Config Server+Git+Spring Cloud Bus | Apollo-quickstart+MySQL | Nacos 单节点 | 支持 |
配置实时推送 | 支持(基于 Spring Cloud Bus) | 支持(HTTP 长轮询 1s 内) | 支持(HTTP 长轮询 1s 内) | 支持 |
分布式部署 | Config Server+Git+MQ+Spring Cloud Bus | Config+Admin+Portal+MySQL | Nacos+MySQL | Disconf+MySQL |
版本管理 | 支持 | 支持 | 支持 | 支持 |
配置回滚 | 支持 | 支持 | 支持 | 支持 |
灰度发布 | 支持 | 支持 | 支持 | 支持 |
权限管理 | 支持 | 支持 | 支持 | 支持 |
集群 | 支持 | 支持 | 支持 | 支持 |
多环境 | 支持 | 支持 | 支持 | 支持 |
监听查询 | 支持 | 支持 | 支持 | 支持 |
配置锁 | 支持 | 不支持 | 不支持 | 不支持 |
数据一致性 | Git 保证数据一致性 | 数据库模拟消息队列 | HTTP 异步通知 | 无 |
配置界面 | 无 | 统一界面 | 统一界面 | 统一界面 |
单点故障 | 支持 HA 部署 | 支持 HA 部署 | 支持 HA 部署 | 支持 HA 部署,高可用由 Zookeeper 提供 |
对 Spring Cloud 的支持 | 支持 | 支持 | 支持 | 支持 |
Spring Cloud Config 功能全面、强大、可以无缝地和 Spring 体系相结合,使用方便简单。