从版本1.5.0开始,Apache Flink具有一种称为广播状态的新型状态。 在这篇文章中,我们解释了广播状态是什么,并展示了如何将其应用于评估事件流上的动态模式的应用程序的示例。 我们将引导您完成处理步骤和源代码,以实现此应用程序。

什么事广播状态

广播状态可以用于以特定的方式组合和联合两个事件流。第一个事件流被广播给算子的所有并行实例,这些实例将他们维持在状态中。 其它事件流将不会被广播,但是会被发给同一个算子的个别实例,并与广播流事件一起处理。新的广播状态非常适合需要加入低吞吐量和高吞吐量流或需要动态更新其处理逻辑的应用程序。我们将使用后一个用例的具体示例来解释广播状态,并在本文的其余部分更详细地展示其API。

广播状态的动态模式评估

想象一下一个电子商务网站捕获所有用户的交互作为用户行为流。运营该网站的公司对于分析交互以增加收入,改善用户体验,以及检测和防止恶意行为很感兴趣。该网站实现了一个流应用程序,用于检测用户事件流上的模式。但是,公司希望每次模式更改时都避免修改和重新部署应用程序。相反,应用程序在从y模式流接收新行为时获取第二个模式流并更新其活动模式。在下文中,我们将逐步讨论此应用程序,并展示它如何利用Apache Flink中的广播状态功能。

A Practical Guide to Broadcast State in Apache Flink-LMLPHP

我们的示例应用程序获取了两个数据流。第一个流在网站上提供用户操作,并在上图的左上方显示。用户交互事件包括操作的类型(用户登录,用户注销,添加到购物车或完成支付)和用户的ID,他们都被各种颜色进行编码。在我们的图示中的用户动作事件流包含用户1001的注销动作,其后是用户1003的支付完成事件,以及用户1002的“添加到购物车”动作。

07-08 23:59