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 采用多级缓存及基于本地内存的规则逻辑计算,支持以纳秒级获取开关的判定结果。

浏览 2
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

编辑 分享
举报