我目前正在开发一个复杂的事件处理系统,用于每秒非常高的日志流〜100000个事件。计划将复杂的事件处理设置为一种框架,向该框架提供50-100条规则以对传入事件运行。
规则的结构如下。
它由操作组成,这些操作可以由发生次数和必须在其中发生的时间段界定
单个动作中的时间间隔,在该时间间隔中必须执行下一个动作。
请注意,我们有两种类型的时间限制,一种是针对操作的时间限制,另一种是针对操作的时间限制。
动作只是一个单独的事件,可以通过特定条件进一步过滤。
标准可能很简单,例如IP地址等于“ X.X.X.X”,也可能很复杂,例如Constant,Variable,Shared。
常数什么都不是,但是该字段的值保持不变。可以在CEP引擎中将其视为groupby。
变量是,对于动作中每次发生的事件,该字段的值都是可变的。 例如:在5分钟内,另一个端口被访问了50次。
共享字段是一个操作和另一个操作之间共享的字段。例如,此类字段将是第一个操作中的字段值应与第二个操作中的值匹配。
我也碰到了flink中的窗口,但是在一个大小为100的窗口的情况下,我感到怀疑。该窗口介于0到100之间,然后变为100到200。但是我们甚至会将数据关联起来在50到150之间。所以我需要找出如何在flink中完成。
一旦找到与某个模式匹配的内容,我们将仅删除与该模式匹配的条目,并且我们希望将剩余状态存储12小时,并在发生任何迟到事件时进行计算。
所以我想知道apache flink是否适合我的情况。