FeatureProbe功能管理发布解决方案

联合创作 · 2023-10-01 19:55

FeatureProbe是一个开源的 『功能』管理 服务。它包含灰度放量、AB实验、实时配置变更等针对『功能粒度』的一系列管理操作。这里的『功能』包含业务功能、技术改造、运营活动等任何涉及代码开发的『功能』。它可以让开发人员、运营人员、运维人员安全、高效的完成线上变更,同时精细控制变更风险。

技术创新:

传统的灰度发布,是以版本为粒度,做A/B版本的灰度测试,发布策略比较简单,一旦出问题,影响范围会很大。而FeatureProbe以产品功能为粒度,可以提前部署代码,后台一键开关控制功能发布与关闭,秒级别生效,真正地做到低风险、轻松地渐进式迭代交付。

1、支持多编程言SDK

FeatureProbe SDK 会自动处理每个功能标志更新。我们支持所有大部分的主流编程语言(Java、Rust、Golang、Android、iOS、Javescript等),你可以根据需要选择你所需要的SDK,集成到你的服务器、客户端,移动端应用中。 

2、支持本地存储

FeatureProbe的所有的功能标志都支持存在本地内存,可以大大地提高部署效率不会存在延迟问题。

3、功能发布实时更新

在FeatureProbe管理后台开启/关闭功能标志时,秒级生效,无需等待,没有滞后性,实时观察发布情况,实现轻松发布。

技术架构

FeatureProbe 服务由用户管理界面(Admin UI)、后端 API 、规则判断和分发服务(Evaluation Server)以及各语言的 SDK 组成,整体架构如下图所示:

用户界面

为用户提供可视化的功能开关管理的 UI 界面。如下截图所示,用户可以在 UI 上更新和发布规则,

UI 模块基于 React 框架实现,采用单页面应用架构( Single Page Application )实现前后端完全分离。

后端 API

为 UI 提供数据管理功能和对外的 Open API 服务。我们对 API 的设计严格遵守 Restful 规范,同时作为功能管理领域通用 API 不仅为 UI 提供了核心数据管理能力,你也可基于该 API 实现开关规则自动变更和发布。

该模块的设计主要建立在 Spring Boot 框架基础上,采用传统三层架构+领域模型设计。整体模型如下:

六、规则判断和分发(Evaluation Server)

提供高性能的开关规则判定引擎和秒级的数据分发能力。它主要有两方面的能力,一方面它作为 API 和 SDK 的"桥梁",将 API 中的开关规则下发至 Server SDK 中以保证规则更改和读取最终是一致的,另一方面它以 HTTP 方式为 Client SDK(如 H5、Andorid/iOS 等)提供规则判定能力。由于它的无状态设计和最终一致模型,也就代表它具备高可伸缩能力。

FeatureProbe Server 采用 Rust 语言实现,天然具备高性能和高可靠性。如上图所示,通过快速水平扩容能让你轻松应对大规模流量访问。同时,我们已经在计划采用长连接(Multiplexing)+发布订阅模式进一步提高 Server 的性能,做到使开关规则在变更后能在毫秒级下发和生效。

七、SDK

我们为所有主流语言提供获取开关规则判定结果的 SDK,能够让你在应用程序中快速接入 FeatureProbe 以实现相应的功能开关能力。由于 SDK 需要集成在你的应用程序运行环境中,所以我们对它采用了高度可容错和高性能的设计,即便 FeatureProbe Server 不可用,也不会影响你应用程序中已经生效的开关规则正常读取, 因为我们对 Server 端的 SDK 采用多级缓存及基于本地内存的规则逻辑计算,支持以纳秒级获取开关的判定结果。

浏览 10
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报