功能标志是一种在运行时策略性地启用或禁用功能的工具。它们通常用于驱动不同的用户体验,但在实时数据系统中也很有用。在这篇文章中,我们将逐步介绍如何使用功能标志来动态暂停和恢复消费者。您可能想知道,为什么不直接关闭消费者以“暂停”处理呢?这种做法有效,达到了停止消费的最终目的。然而,当涉及大规模消费者架构时,也存在缺点。重新平衡根据消费者组的布局和分区数量,消费者离开组时触发的重新平衡过程可能会很痛苦且耗时。缺乏粒度——如果消费者正在阅读多个主题,则所有内容的消费都会被关闭。没有回旋的余地。响应式处理要重新启用处理,所有使用者都必须再次启动并重新平衡分区。如果有超过个消耗实例,这可能会非常耗时。在我们讨论如何合并功能标志之前,我们应该看一下客户端库中已经存在的动态暂停和恢复处理的功能。我们已经比你想象的更接近最终目标了。暂停消费者客户端具有恢复映射分区、暂停特定分区、恢复当前暂停分区和恢复特定分区的功能。这些方法是您动态暂停和恢复消费所需的全部。让我们更详细地看看这些操作。以一组的形式返回当前分配的主题分区。包含两个主要属性,主题名称为,分区为。–暂停在给定主题分区上的搜索。
消费者探测将继续
这是保持消费者活力并避免重新平衡的关键。但是,未来的探测将不会返回暂停分区的任何日志,直到它们恢复为止。返回当前已分配且由于使用暂停方法而处于暂停状态的主题分区。–从提供的主题分区中恢复搜索。选项一:暂停世界暂停处理的最简单方法是暂停一切。以下摘录说明了这一点。选项:选择性暂停使用红色大按钮来关闭上面显示的所有处理 贝宁电话号码 非常有用,但如果我们能够在更精细的级别上进行控制,则会更有用。以下代码片段显示了暂停单个主题的分区的情况触发标志看到最后一个片段后,您可能会猜测功能标志是如何动态提供片段的“”变量的。通过简单的功能标志命名约定例如应用程序可以提取所有标志并仅过滤掉那些感兴趣的标志。下面的伪代码显示了它的样子。现在我们可以想象它是如何工作的,让我们看看如何集成,一个开源功能标志解决方案。您可以将替换为任何功能标志产品。发挥市场上有很多功能标志选项,但是一个开源功能管理平台,对我来说效果很好。它已经获得了足够的关注,现在将其作为集成服务提供,并且从开始,它可在所有级别使用。
可以在此处找到完整的功能列表
将应用程序连接到非常简单。选择适合您的应用程序的并配置和实例。如果您使用,这里有关于将功能标志与您的应用程序集成的明确说明。下面是在应用程序中配置客户端的示例。则设置客户端连接到返回新的释放配置则不会创建之前的。*在这种情况下,客户端将被注入到*应用程序上下文中使用。这对当地的发展很有帮助。**/释放{返回新的}获取功能标志 贝宁电话号码列表 我们已经了解了暂停/恢复功能以及如何使用简单的功能标志命名约定来指向应该暂停/恢复的主题。现在让我们将这两件事放在一起,看看获取和应用切换的策略。选项:轮询循环最简单的选择是将功能标志检查集成到轮询循环中。将在后台线程中刷新标志状态,因此每次检查都会通过查看最新值并查看哪些内容如果有)需要暂停来命中缓存。这种方法的好处是一切都发生在轮询线程上,这一点很重要,因为消费者不是线程安全的。选项:订阅者具有内部事件布局,可以轻松订阅刷新切换后触发的事件。这将是标志状态的最新表示,因为该事件在缓存更新后立即触发。