我可以将 Flink 时间窗口设置为较大的值吗?



我可以将数据流时间窗口设置为一个大值,如 24 小时吗?提出要求的原因是我想根据网站最近的 24 小时客户端流量进行数据统计。这样,我可以检查是否存在安全违规行为。

例如,检查用户帐户是否使用多个源 IP 登录到网站。或者检查某个 IP 在最近 24 小时内访问了多少个唯一页面。如果检测到安全违规,将实时执行配置的操作,例如阻止源 IP 或锁定相关用户帐户。

网站的吞吐量约为200Mb/s。我认为将时间窗口设置为较大的值会导致内存问题。我应该将每个时间窗口(如 5 分钟(的统计结果存储到数据库中吗?
然后根据数据库查询对最近24小时内生成的日期进行统计? 我没有任何大数据分析的经验。任何建议将不胜感激。

这取决于我们正在谈论的窗口和聚合类型:

  • 不使用逐出的窗口:在这种情况下,Flink 只会为每个物理窗口保存一个累积结果。这意味着对于 10 小时的滑动窗口和 1h 的滑动窗口,计算总和,它必须有一个数字 10 次。对于翻转窗口(无论参数如何(,它只保存一次聚合结果。然而,这并不是故事的全部:因为状态是键控的,所以你必须将所有这些乘以分组中使用的字段的每个不同值。

  • 带逐出
  • 的窗口:保存已处理但仍未逐出的所有事件。

简而言之,通常内存消耗与您处理的事件数或窗口的持续时间无关,而是与:

窗口
  • 的数量(考虑到一个滑动窗口实际上映射到多个物理窗口(。
  • 您在分组依据中使用的字段的基数。

考虑到所有因素,我会说一个简单的 24 小时窗口几乎没有内存占用。

您可以在此处查看相关代码。

相关内容

  • 没有找到相关文章

最新更新