apollo与nacos 都为目前比较流行且维护活跃的2个配置中心,笔者对nacos(1.1.4版本)与 apollo(2020.1月更新源码部署)版本从几个方面进行了详细的对比。
一:界面对比
在界面上对2个对比,个人感觉2者都差不多,nacos可能看起来比较简洁,直接把所有项目和配置都直接展示出来了,但是apollo再项目划分概念上就比较清晰,进入后首先需要选择项目,选择项目后跳转才可以看到里面的配置,在配置上与nacos不同,apollo将每个配置项都分开解析出来了,每个配置项都有单独的发布和未发布的提示,个人感觉比nacos会更加清晰,更加适合生产项目的配置和公共项上的配置。
二、功能上的对比
功能上对nacos以及apollo进行了对比,配置中心所需要的基本功能2者都有,总体说apoolo的功能会更加全体一些,我这里就不一一列出,我把各自独有的特点分别举例一下。
nacos特征:
1.nacos配置文件支持比较多的格式,支持yaml、text、json、xml、html、Properties,apollo只支持xml、text、Properties的格式,没有兼容springboot中比较通用的yaml配置。(不过笔者认为这点问题不是很大,因为很多在线转换的工具,可以直接把yaml配置文件转换为Properties的格式,在实际使用过程中也不会有任何区别)
2.集群的部署,nacos的集群部署比较简单,apollo的集群部署较为复杂一些(个人认为部署是一次性的事,功能好用才是比较实在的),吞吐量更加高1下。部署起来非常迅速。
apollo特征:
1.apollo用户管理以及权限管理做的比较好和全面,适合做部门或者公司级的配置中心。nacos比较简洁明了(也可以说没有做权限这一块的开发),适合做小组内,或者小型java团体使用。
- apollo区分多环境是直接通过环境指定,可以直接对比和切换,而nacos是通过命名空间进行区分的,个人感觉比较不够直观。
3.nacos是支持多格式的配置文件,但是解析上没有apollo做的好,apollo虽然支持的配置格式较少,不过会进行解析,使每个配置看起来比较直观,修改的时候比较直观,可以对单个进行修改。
4.apollo配置支持继承模式,可以有一个公共的配置,然后再新建不同的项目,可以一起集成这个公共的配置,个人感觉更加适目前项目微服务的形式(nacos找了一下没有看到这个功能,不过个人感觉配置中心没有这个功能非常不合理,可能是我没有扎到,如果有欢迎指正错误)
5.配置对比上:nacos和apollo都有对比功能,不过nacos比较粗糙一些,只能再发布的时候与上一个版本进行对比,apollo支持不同环境 不同版本上的杜比。
6.apollo自带支持开放平台的接口以及能力,可以分享对接配置。
三、在spingboot工程的接入上
nacos的接入:https://nacos.io/zh-cn/docs/quick-start-spring-boot.html
apollo的接入:https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97#3213-spring-boot%E9%9B%86%E6%88%90%E6%96%B9%E5%BC%8F%E6%8E%A8%E8%8D%90
两个接入上基本一致,都十分便捷,个人认为2者切换上,也只需要修改一下注入方式就可以实现2者无缝的切换。
总结:
通过对2者的对比,apollo也许经过的迭代更久,功能上比nacos更加完善,权限管理做的全面,配置上可能会做的更细节一些,不过操作比较繁琐,比较适合多业务 多团队的业务场景。nacos做的比较简洁直观,一目了然,操作简单些。