Apollo与Nacos配置中心功能的对比

Apollo与Nacos都是当下比较流行且维护活跃的2个配置中心,今天针对Apollo-1.6.1与Nacos-1.2.1 (针对配置中心的功能)从几个方面进行一下对比

官方文档方面

  • Apollo
    携程Apollo虽然没有官方网站,但是github上的文档是十分细致、全面的,从整体架构,快速部署,到分布式HA部署策略,从概念介绍,到各客户端使用方式,可以说是近乎喂奶式的文档教学,通读文档基本可以解决大部分问题。

  • Nacos
    Nacos首先有一个很酷炫的官方网站,但是个人感觉一些基本概念描述的不够清晰,接入文档只有一个简单的demo。(主观)对于没有接触过甚至不了解配置中心的人来说较难深入。

界面 & 功能 & 权限控制方面

这几项放在一起是因为直接影响用户操作逻辑和体验

  • Apollo

    image.png

    进入首页要先选择项目,项目展示权限根据用户可控,多团队使用只需关注自己的项目

    image.png

    进入项目后左侧是环境列表(当前有哪些环境),项目信息和一些基本操作项,右侧为具体配置信息,将每个配置项都分开解析出来了,每个配置项都有单独的发布和未发布的提示,可以创建公共配置供其他项目关联或覆盖

    image.png

    同步配置,可以将当前环境配置无缝同步至其他环境,例如上线前将预发布环境配置同步至生产环境,修改配置值之后发布配置即可。权限可控制用户是否可以访问或操作某个环境,保证线上配置文件安全性。

    image.png

    比较配置,方便快捷的比较各环境配置差异。

    其他包括灰度发布,历史版本回滚,实例列表等功能...

  • Nacos

    image.png

    进入首页感觉界面比较简洁清爽,直接把所有项目和配置都直接展示出来了,由于权限只能控制到命名空间层级,多团队情况下会出现配置爆炸。(不过命名空间和Group等概念在Nacos中应该是比较灵活的,下点功夫应该可以规避一些问题)

    image.png

    进入项目配置页,发现nacos配置文件支持比较多的格式,支持yaml、text、json、xml、html、Properties,apollo只支持xml、text、Properties的格式,没有兼容springboot中比较通用的yaml配置。(不过个人认为这点问题不是很大,因为很多在线转换的工具,可以直接把yaml配置文件转换为Properties的格式,在实际使用过程中也不会有任何区别),而且没有提供多环境配置同步,配置比较等功能,这样难免会出现一些人为失误造成的问题。

部署运维方面

  • Nacos

    集群的部署,nacos的集群部署比较简单,只需要针对Nacos-server做集群配置启动3个以上节点即可完成高可用集群部署。

  • Apollo

    Apollo集群部署相对来说较为复杂(涉及Portal,多环境的ConfigService,AdminService以及Mysql),下图是之前使用过的部署方式:
    image.png
    个人认为部署是一次性的事,功能好用才是比较实在的。

一张网上的对比图

  • image.png

总结

  • apollo用户管理以及权限管理做的比较好和全面,项目,环境,集群的概念比较清晰,支持配置加密。nacos比较简洁明了,权限控制过于简单,配置逻辑个人感觉不够清晰。
  • apollo配置支持继承模式,可以有一个公共的配置,然后再新建不同的项目,可以一起集成这个公共的配置,个人感觉更加适目前项目微服务的形式(nacos找了一下没有看到这个功能,不过个人感觉配置中心没有这个功能非常不合理)
  • Apollo经过的迭代更久,功能上比nacos更加完善,配置上可能会做的更细节一些,不过操作比较繁琐,比较适合多业务 多团队的业务场景。nacos做的比较简洁直观,一目了然,操作简单些。
  • 经过对比个人认为在--配置中心--的功能上,Nacos只有性能超越了Apollo