我可以把flink时间窗口设置为大值吗?

qgzx9mmu  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(230)

我可以将数据流时间窗口设置为24小时这样的大值吗?要求的原因是,我想做数据统计的基础上,最新的24小时客户端流量的网站。这样,我可以检查是否有违反安全的行为。
例如,检查用户帐户是否使用多个源IP登录到网站。或者检查某个ip在最近24小时内访问了多少个独特的页面。如果检测到安全冲突,将实时执行配置的操作,例如阻止源ip或锁定相关用户帐户。
网站的吞吐量约为200mb/s。我认为将时间窗口设置为较大的值会导致内存问题。我是否应该将每个时间窗口的统计结果(如5分钟)存储到数据库中?
然后根据数据库查询统计最近24小时内生成的日期?我没有任何大数据分析的经验。任何建议都将不胜感激。

pengsaosao

pengsaosao1#

这取决于我们讨论的窗口和聚合的类型:
不使用逐出的窗口:在这种情况下,flink在每个物理窗口中只保存一个累积结果。这意味着,对于计算和的10小时滑动窗口和1小时滑动窗口,它必须有一个10倍的数字。对于滚动窗口(不考虑参数),它只保存一次聚合结果。然而,这并不是全部:因为state是键控的,所以对于组中使用的字段的每个不同值,必须将所有这些值乘以。
带逐出的窗口:保存所有已处理但仍未逐出的事件。
简而言之,内存消耗通常与您处理的事件数或窗口的持续时间无关,而是与:
窗口的数量(考虑到一个滑动窗口实际上Map到多个物理窗口)。
在分组依据中使用的字段的基数。
综合考虑,我认为一个简单的24小时窗口几乎没有内存占用。
您可以在这里查看相关代码。

相关问题