Apollo VS Nacos
一、Apollo
1、简介
携程研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。最新版本1.5.1,GitHub Star 18.3k
项目地址: https://github.com/ctripcorp/apollo。
文档: https://github.com/ctripcorp/apollo/wiki。
服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。
.Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。
2、特性
- 统一管理不同环境、不同集群的配置
- 配置修改实时生效(热发布)
- 版本发布管理
- 灰度发布
- 权限管理、发布审核、操作审计
- 客户端配置信息监控
- 提供Java和.Net原生客户端
- 提供开放平台API
- 部署简单(感觉不怎么简单),依赖于MySQL(5.6.5+)
性能测试 :
https://github.com/ctripcorp/apollo/wiki/Apollo%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95
3、 原理
1、客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。
2、 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。
①这是一个fallback机制,为了防止推送机制失效导致配置不更新
②客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304 - Not Modified
③定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property: apollo.refreshInterval来覆 盖,单位为分钟。
3、客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存中
4、客户端会把从服务端获取到的配置在本地文件系统缓存一份
在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置
5、应用程序从Apollo客户端获取最新的配置、订阅配置更新通知
4、环境要求
(1)服务端:
Java 1.8+
(2)客户端:
Java 1.7+
Guava 15.0+
5、 部署
部署指南:
分布式部署比较复杂,参考下图,port公用,admin、config、MySQL分环境部署
二、 Nacos
1、简介
Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计。Nacos相当于注册中心+配置中心。最新版本1.1.4,GitHub Star 9.3k
项目地址: https://github.com/alibaba/nacos。
官网: http://nacos.io/
2、 特性
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、灰度发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
在单机模式下,Nacos没有任何依赖,在集群模式下,Nacos依赖Mysql做存储。Nacos单机模式默认使用内嵌的数据库作为存储引擎,如果想换成自己安装的mysql,可以按照官网文档。生产环境使用Nacos为了达到高可用不能使用单机模式,需要搭建nacos集群,具体详情可以参考集群部署手册。
压测报告:
https://nacos.io/zh-cn/docs/nacos-config-benchmark.html
3、部署
官方文档 https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
4、环境要求
1、64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac
2、64 bit JDK 1.8
3、Maven 3.2.x+
三、Apollo和Nacos对比
https://www.itcodemonkey.com/article/13646.html
测试用的版本不是最新的,数据可能会有出入。Nacos已经支持灰度发布。
图片来自Hollis公众号(hollischuang),作者:风卿,Nacos 社区 committer