三个主流微服务配置中心的深度比较

发布者:上海IT外包来源:http://www.lanmon.net点击数:2382

在写这篇技术评选文章之前,我犹豫不决。因为,作为开源项目开发人员之一,要编写三个开源项目的比较,即使它非常局限于客观比较,也难以令人信服。这就像是一名参赛者,并希望成为一名裁判。观众不得购买。
但最后,我仍然决定为配置中心编写技术选择参考,因为:
工作需要是一个很好的开源产品,尝试使用提供类似功能的开源产品是必要的,以找出优势并弥补缺点;
用户选择,比较和选择提供类似功能的产品是引入开源项目必须要做的事情。如果有参考,肯定会提供一些帮助; (建议:即使有参考资料,技术选择工作仍需要手工完成。实际业务情景和资源分配是技术选择的最重要依据);
微服务配置中心是一个微服务组件,而不是一个大型组件。选择成本很小,客观比较时不容易产生偏差。
本文比较了开源项目官方网站或GitHub项目页面的产品范围,经验,实施过程和性能范围。
如果您不了解微服务配置中心的功能,可以查看以下背景介绍。如果您熟悉,可以跳过它。
为什么我需要配置中心?
配置实时生效:
在传统的静态配置模式下,如果要修改配置,则只能对其进行修改,然后重新发布应用程序。要实现动态,您可以选择使用数据库通过定时轮询来访问数据库以检测配置更改。轮询频率低的感知配置变化的延迟很长,轮询频率高,并且感测配置变化的延迟很短,但是丢失性能需要在实时性能和性能之间进行折衷。配置中心专用于此业务场景,具有管理动态配置的实时性和一致性。
配置管理流程:
作为配置中心的一部分,还不提供一系列与配置管理相关的功能,如权限管理,灰度发布,版本管理,格式验证和安全配置。
开源配置中心的基本介绍
目前市场上有很多配置中心(按开源时间排序):
Disconf,在2014年7月,百度的开源配置管理中心也具有配置管理功能,但目前尚未维护。最近提交的文件是两年前的。Spring Cloud Config,2014年9月开源,Spring Cloud生态系统组件,可与Spring Cloud系统无缝集成。
Apollo,2016年5月,携程的开源配置管理中心,具有标准化权限,流程治理和其他功能。
Nacos,2018年6月,阿里开源配置中心,也可以做DNS和RPC服务发现。
比较配置中心的核心概念
由于不再维护Disconf,让我们来比较Spring Cloud Config,Apollo和Nacos。
Spring Cloud Config,Apollo和Nacos在配置管理领域有着基本相同的概念,但也存在一些差异。配置的使用涉及一些重要的概念。
应用
应用程序是客户端系统的基本单元。 Spring Cloud Config将应用程序名称与相应Git中的文件名相关联,后者可以隔离多个应用程序配置。 Apollo的配置在一个应用程序下(公共配置除外),它还用于隔离多个应用程序配置。 Nacos的应用程序概念很薄弱,只有一个用于区分配置的附加属性,但您可以使用Group来执行应用程序字段,该字段可用于隔离。

不同的环境可以构建不同的集群,可以用于物理隔离。 Spring Cloud Config,Apollo和Nacos都支持多个集群。
标签配置文件和环境和命名空间
可以使用Label和Profile在逻辑上隔离Spring Cloud Config。 Label指的是远程存储库的分支。像Maven Profile这样的配置文件可以区分环境,例如{application}  -  {profile} .properties。
与Apollo环境一样,Nacos命名空间是一个逻辑概念,可以作为环境逻辑被隔离。 Apollo中的命名空间是指配置的名称。具体配置项是指配置文件中的属性。
配置管理功能的比较
作为配置中心,应简化配置的整个管理过程。
灰度释放
配置的灰度分布是配置中心的重要功能。当配置更改的影响很大时,有必要验证配置更改是否满足某些应用程序实例中的预期要求,然后将它们推送到所有应用程序实例。
Spring Cloud Config支持指定机器通过/bus/refresh端点的destination参数更新配置,但整个过程不够自动化和系统化。Apollo可以直接在控制台上直接发布指定发布机器的IP,然后完全释放。它更系统。
Nacos目前已发布到0.9版本,尚不支持灰度发布。
权力管理
配置更改和代码更改是对应用程序操作逻辑的更改。重要的配置变化通常会导致核弹。管理变更和审计功能的能力也是配置中心的重要功能。
Spring Cloud Config依赖于Git的权限管理功能。开源GitHub访问控制可分为Admin,Write和Read权限,权限管理也比较齐全。
Apollo通过项目的维度管理配置的权限。项目所有者可以授权其他用户配置的已修改发布权限。
Nacos目前没有管理权利的能力。
版本管理和回滚
当配置更改不符合预期时,您需要根据配置的发行版本回滚。 Spring Cloud Config,Apollo和Nacos都配置了版本管理和回滚功能,以便在控制台上查看配置更改或回滚操作。 Spring Cloud Config通过Git进行版本管理更方便。
配置格式检查
应用程序的配置数据以配置格式存储在配置中心,例如Properties,Json,Yaml等。如果配置不正确,客户端的配置将无法导致生产失败。有效地防止人为错误操作的发生只是配置中心的核心功能。
Spring Cloud Config使用Git。目前,不支持格式验证。格式的正确性取决于开发人员自己。
Apollo和Nacos都将验证配置格式的正确性,以防止出现人为错误。
听力查询
在解决问题或执行统计信息时,您需要知道配置使用的应用程序实例以及实例使用的配置。
Spring Cloud Config使用Spring Cloud Bus推送配置更改。 Spring Cloud Bus与RabbitMQ,Kafka等兼容,并支持Topic和Consumer之间的订阅订阅。
Apollo可以通过灰度实例列表查看侦听配置的实例列表,但是尚未显示实例侦听器(Apollo称为命名空间)的配置。
Nacos可以查看侦听配置的实例以及实例监视的配置。基本上,这三种产品都具有监控和查询的能力。在我们自己的使用中,Nacos使用起来相对简单并且相对容易使用。
多种环境
在实际生产中,配置中心通常需要涉及多个环境或多个集群。开发业务时,可以分离开发环境和生产环境,或者根据不同的服务线存在多个生产环境。如果环境之间的交互相对较小(开发环境会影响生产环境的稳定性),配置中心可以通过逻辑隔离支持多个环境。
Spring Cloud Config支持配置文件以隔离多个环境。通过在Git上配置多个配置文件配置文件,客户端可以通过在启动时指定配置文件来访问相应的配置文件。
Apollo还支持多种环境。在控制台中创建配置时,必须指定配置所在的环境。客户端在启动时指定JVM参数ENV以访问相应环境的配置文件。
Nacos通过命名空间支持多个环境。每个命名空间的配置彼此隔离。客户端可以指定要访问的命名空间以实现逻辑隔离。
多个集群
当稳定性要求相对较高并且不允许环境彼此交互时,需要通过多个集群物理隔离多个环境。
可以通过构建多组配置服务器来物理隔离Spring Cloud Config,Git使用同一Git的多个仓库。
Apollo可以构建多个集群,Apollo的控制台和数据更新推送服务是分开部署的,可以部署控制台来控制多个集群。
Nacos控制台和后端配置服务一起部署,以支持具有不同域名交换机的多个集群。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部