微服务配置中心选型比较


主流配置中心 ApolloNacos 的比较。

一. 功能特性对比


对比项目 Apollo Nacos
开源时间 2016.5 2018.6
配置实时推送 支持(HTTP长轮询1s内) 支持(HTTP长轮询1s内)
版本管理 自动管理 自动管理
配置回滚 支持 支持
灰度发布 支持 支持
权限管理 支持 不支持(粗粒度)
多集群 支持 支持
多环境 支持 支持
多语言 主流语言,提供Open API 主流语言,提供Open API
监听查询 支持 支持
分布式高可用最小集群数量 Config2 + Admin3 + Portal * 2 + MySql = 8 Nacos * 3 + MySql = 4
配置格式校验 支持 支持
通信协议 HTTP HTTP(2.0新增gRPC)
数据一致性 数据库模拟消息队列,Apollo定时读消息 HTTP异步通知
单机读(tps) 9000 15000
单机写(tps) 1100 1800
3节点读 27000 45000
3节点写 3300 5600

1.1 监听查询

当排查问题或者进行统计的时候,需要知道一个配置被哪些应用实例使用到,以及一个实例使用到了哪些配置。

  • Apollo 可以通过灰度实例列表查看监听配置的实例列表,但实例监听的配置(Apollo称为命名空间)目前还没有展示出来。

  • Nacos 可以查看监听配置的实例,也可以查看实例监听的配置情况。

这两个产品都具备监听查询能力,Nacos 使用起来相对简单,易用性相对更好些。

1.2 分布式高可用最小集群数量

1.2.1 Apollo

Apollo 分为 MySQLConfig ServiceAdmin ServicePortal 四个模块:

  1. MySQL 存储 Apollo 元数据和用户配置数据

  2. Config Service 提供配置的读取、推送等功能,客户端请求都是落到 Config Service

  3. Admin Service 提供配置的修改、发布等功能,Portal 操作的服务就是 Admin Service

  4. Portal 提供给用户配置管理界面

开发、测试环境 Config ServiceAdmin ServicePortal 三个模块可以合并一起部署,MySQL 单独安装并创建需要的表结构。

生产环境 Portal 可以两个节点单独部署,稳定性要求没那么高的话,Config ServiceAdmin Service 可以部署在一起,数据库支持主备容灾。

1.2.2 Nacos

Nacos 部署需要 Nacos ServiceMySQL

  1. Nacos 对外提供服务,支持配置管理和服务发现

  2. MySQL 提供 Nacos 的数据持久化存储

单机模式下,Nacos 可以使用嵌入式数据库部署一个节点,就能启动。如果对 MySQL 比较熟悉,想要了解整体数据流向,可以安装 MySQL 提供给 Nacos 数据持久化服务。生产环境使用 NacosNacos 服务需要至少部署三个节点,再加上 MySQL 主备。

二. 总结


  • 性能方面Nacos 的读写性能最高,Apollo 次之

  • 功能方面Apollo 最为完善,Nacos 具有 Apollo 大部分配置管理功能

  • 部署方面Nacos 部署简化,相比 Apollo 简单,方便管理和监控;Apollo 容器化较困难,Nacos 有官网的镜像可以直接部署,总体来说,NacosApollo 更符合 KISS 原则

总的来看, ApolloNacos 在软件配置管理步骤上做的都很好。Apollo 相对性于 Nacos 在软件配置管理做的更为全方位;Nacos则应用起來相对性较为简约,在对特性规定较为高的规模性情景更合适。

Nacos 的一大优势是整合了注册中心配置中心功能,部署和操作相比 Apollo 都要直观简单,因此它简化了架构复杂度,并减轻运维及部署工作。

针对企业现阶段而言,改动配备的频次并不是尤其的经常,针对配备管理权限的管理方法并不是尤其严苛的,且对读写能力特性有一定规定的,可选用 Nacos,相反应用Apollo

三. 附录


  1. Nacos文档中心:https://nacos.io/zh-cn/docs/feature-list.html
  2. Apollo文档中心:https://ctripcorp.github.io/apollo/#/zh/design/apollo-introduction

文章作者: 筱杉少年
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 筱杉少年 !
评论
 上一篇
Docker教程01:Docker介绍与安装 Docker教程01:Docker介绍与安装
Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
2022-12-25
下一篇 
图解进程与线程 图解进程与线程
进程和线程是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。
  目录