FeatureProbe

功能管理发布解决方案
授权协议 Apache
开发语言 Java
所属分类 企业应用、 任务/项目管理
软件类型 开源软件
地区 国产
投 递 者 昌乐生
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

  • 在产品快速迭代中,要做到高效的功能发布同时还要降低上线风险,需要采用合适的技术对功能发布进行精细化的管控。FeatureProbe 就是一个高效的功能管理(Feature management)开源服务,它提供了灰度放量、AB实验、实时配置变更等针对功能粒度的一系列管理能力,本文将介绍如何使用 FeatureProbe 进行快速、安全地做功能发布和迭代。 一、动态配置 如果你没有接触过功能管理服务

 相关资料
  • 一、简介 用于生成静态,更新URL等。 二、功能演示 批量更新栏目页 生成首页 批量更新URL 批量更新内容页

  • 一、简介 V9 系统内置的发布点功能结合站群功能,通过发布点可将各子站点内容发布到不同的服务器上,轻松实现服务器集群部署。以实现负载的分离,更加符合大访问量网站的需求。为用户提供更好的用户体验。示意图如下 二、功能演示 何时使用发布点: 当你想把各站点数据分布部署到不同的服务器上时使用发布点。 如何使用: 步骤一、添加发布点 (点击这里) 步骤二、添加站点时指定发布点 步骤三、添加站点时设置的域名

  • 了解 CSS 中属性的值及其特性, 透彻分析问题和需求才可以选择和设计最适合的布局解决方案。 居中布局 水平居中 子元素于父元素水平居中且其(子元素与父元素)宽度均可变。 inline-block + text-align <div class="parent"> <div class="child">Demo</div> </div> <style> .child { disp

  • 问题内容: 我有一个事件表,其中包含以下字段: 给定一个持续时间和一个数字,我需要在持续时间的任何相对时间窗口中,对所有大于事件的事件进行计数。这基本上需要针对每个事件的滑动窗口。例如,我希望所有event_type在10分钟的持续时间内具有超过5个事件的活动。 我不确定如何在没有窗口功能的情况下解决此问题。 (我使用的是mysql 5.6。我在说的是一百万行以下的数据集。) 问题答案: MySQ

  • 一、简介 用于内容发布管理,发布管理以及内容相关设置的管理。 二、功能演示 管理内容 附件管理 专题 碎片管理 采集管理 批量更新栏目页 批量更新内容页 管理栏目 模型管理 类别管理 推荐位管理

  • 问题内容: 几个月前,我阅读了Swing教程http://zetcode.com/tutorials/javaswingtutorial/resizablecomponent/,以了解如何在Swing中实现可调整大小的组件。 本教程介绍了使用空LayoutManager以便绝对定位子组件的可能性。 在与另一个主题相关的讨论中,@ Andrew Thompson指出使用空布局是一个坏主意。本文htt