关于配置中心调研

概述

随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……

对程序配置的期望值也越来越高:配置修改后实时生效,分环境、分集群管理配置,代码安全、审核机制……

在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。

所以,配置中心应运而生。

环境简介

目前公司使用阿里云管理所有服务,原因是为了降低运维成本——傻瓜式运维。

服务部署使用edas,配置管理使用acm。

调研目的

将所有代码中的基础依赖(如数据库、分布式存储等)相关配置回收到配置中心(acm或其他开源工具)管理,提升安全性,使资源可复用,减少因版本差异带来的开发工作量。

方案比较

方案 优点 缺点 备注
edas-acm 运维介入少,便于维护 扩容不方便,每次扩容都要重新为ecs实例单独授权,授权期间扩容实例服务不可用(4xx、5xx) edas团队有优化计划,但目前无排期
第三方 扩容方便 运维成本较高(服务器、人力),负载能力、稳定性待验证

第三方配置中心产品

  • Disconf:百度开源的配置管理中心,目前已经不维护了
  • Spring Cloud Config: Spring Cloud 生态组件,可以和Spring Cloud体系无缝整合。
  • Apollo: 携程开源的配置管理中心,具备规范的权限、流程治理等特性。
  • Nacos: 阿里开源的配置中心,也可以做DNS和RPC的服务发现。

由于Disconf不再维护,下面对比一下Spring Cloud Config、Apollo和Nacos。

产品功能特点比较

功能点 Spring Cloud Config Apollo Nacos
开源时间 2014.9 2016.5 2018.6
配置实时推送 支持(Spring Cloud Bus) 支持(HTTP长轮询1S内) 支持(HTTP长轮询1S内)
版本管理 支持(Git) 支持 支持
配置回滚 支持(Git) 支持 支持
灰度发布 支持 支持 待支持
权限管理 支持 支持 待支持
多集群 支持 支持 支持
多环境 支持 支持 支持
监听查询 支持 支持 支持
多语言 只支持java Go、C++、java、Python、PHP、.net、OpenAPI Python、Java、Node.js、OpenAPI
单机部署 Config-server+Git+Spring Cloud Bus(支持配置实时推送) Apollo-quikstart+MySQL Nacos单节点
分布式部署 Config-server+Git+MQ(部署复杂) Config+Admin+Portal+MySQL(部署复杂) Nacos+MySQL(部署简单)
配置格式校验 不支持 支持 支持
通信协议 HTTP和AMQP HTTP HTTP
数据一致性 Git保证数据一致性,Config-server从Git读数据 数据库模拟消息队列,Apollo定时读消息 HTTP异步通知
单机读 7(限流所致) 9000 15000
单机写 5(限流所致) 1100 1800
3节点读 21(限流所致) 27000 45000
3节点写 5(限流所致) 3300 5600
文档 详细 详细 有待完善(目前只有java开发相关文档)

说明:

  • 压测环境:
    • Nacos和Apollo使用同样的数据库(32C128G)
    • 部署Server服务的机器使用的8C16G配置的容器,磁盘是100G SSD。
  • Spring Cloud Config使用2.0.0.M9版本,Apollo使用1.2.0 release版本,Nacos使用0.5版本。
  • Spring Cloud Config 依赖git,使用局限性较大。

调研结果

首先会进一步跟进阿里云edas优化的排期,但是眼下好像是很渺茫... ...

其次,如果接入开源配置中心,根据以上数据分析,建议使用Apollo(功能完善,但是配置复杂)或nacos(功能简单,配置简单,能满足要求,但是文档不够丰富)。

参考文档

剧终

最终还是选择等待阿里云做优化了...

吐槽: 时间都浪费在LD的犹豫和不明确表达需求上...

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/adailinux/blog/3128606

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。