很多人在刚开始了解特性管理的时候会疑惑特性管理和配置中心有什么区别。在本文中,我们将讨论两者之间的区别。在比较两者之前,我们先来看看它们是什么,能解决什么问题,有哪些常见的实现方案。1、什么是配置中心?通过配置中心,统一管理应用中的结构化配置。当配置发生变化时,可以在应用中实时生效,有效避免了传统模式下修改应用配置时的打包、部署、测试、上线等一系列繁琐的过程。广泛应用于微服务应用架构下的配置管理、应用业务参数配置、文档配置等需要满足线上快速变化的业务场景。配置中心的具体实现主要有两个方向:自建或者使用第三方组件。最简单的自建方案是将配置存储在数据库中,程序定时从数据库中加载最新的配置,实现快速变更生效。也可以直接使用成熟、功能完善的第三方开源组件,如Apollo、Nacos等。2、什么是FeatureManagement?特性管理(FeatureManagement,又译为特性管理)是一种对“特性”的生命周期进行管理的软件工程实践,包括渐进式发布、定向交付、A/B实验、实时配置变更等。“特征”粒度的全生命周期管理。在持续交付的实践中,它使我们能够使每个变更独立可部署,并通过渐进式发布降低变更风险;我们可以感知用户在真实在线环境中如何使用每个功能;我们可以清楚地清楚地看到新功能所产生的商业价值等等。一个完整的特性管理系统,不仅要实现“特性”的全生命周期管理功能,还要提供下发高效“特性切换”规则和获取多语言客户端切换结果的能力。唯一的开源工具平台是FeatureProbe。3.两者的区别和关系。从上面的定义不难看出,两者的主要区别在于解决的问题不同。配置中心解决如何使用配置实现在线快速变更,而特性管理解决如何管理“功能”生命周期,实现对功能粒度的精确控制。从技术角度来说,FeatureManagement系统也需要实现在线应用的快速变化。例如,当我们在“功能开关”中更改增人群规则时,客户端(应用)需要能够快速感知到规则的变化,并根据最新的配置规则执行增人群过程。从这个角度来看,FeatureManagement系统可以依赖配置中心作为一个切换规则下发环节的底层实现。这也决定了两个系统在组织结构上的相似性。两者都需要至少由管理平台、分发渠道、ClientSDK组成。区别在于两者的管理平台所提供的业务能力。但是,它们的交付渠道和ClientSDK提供的功能是相似的。对于FeatureManagement,需要下发一个switch(本质上是一个configuration),并提供一个SDK供应用访问functionswitch。配置中心还需要下发配置,并为Applications提供访问配置内容的能力。4、两者可以相互替代吗?既然两者在某些功能上有一些相似之处,是否可以替代呢?比如我们能不能直接把配置中心当作一个FeatureManagement系统?其实前面说过,配置中心作为一个通用的配置平台,是不关注配置内容的,也就是说你可以定义任意的配置。以最简单的功能开关场景为例,比如打开或关闭控制功能A,确实可以在配置中心为该场景创建一个K-V配置作为开关,满足最基本的功能开关使用场景。**然而,这是功能管理系统最简单的场景。还需要特征粒度的逐步释放、特征向特定人群的定向投放、A/B实验、特征的价值评估等,而这一切都不是一个配置中心。**既然配置中心系统不能替代特性管理系统,那么用特性管理系统替代配置中心是否可行?答案是肯定的。以FeatureProbe为例,在创建一个“函数开关”时,它支持4种开关返回值类型,分别是Number、String、Boolean和JSON,也就是说你可以在开关返回中把你原来在配置中心的配置内容价值。然后使用FeatureProbe提供的SDK获取对应的配置返回值。五、总结最后总结一下配置中心不同维度和FeatureManagement的对比:配置中心维度的对比。
