网络冲浪板
08-09·后端开发·5年+
Flink CEP
最近在引入cep功能,看了看flink的cep功能,感觉计算这块实现的很巧妙,但是编译这块做的不好,包括超时语义也只支持全局超时。为了支持各种超时语义以及各种超时条件的组合,做了以下设计。1 state增加超时时间参数以及引入超时边 2 语法引入 子集概念,每个子集可以设置自己的超时时间 3 引入语法树和语法节点,不同节点内需要实现构建state和state边绑定,其中包含超时state和超时边,每个节点的超时语义由自己决定,然后返回构建好的nfa子图,也就是这个节点对应的入口state和出口state,以及所有的中间状态state,对于多个出口的需要用一个虚拟出口进行合并。且一个state不能绑定多个超时边,可能会创建额外的state承担超时语义。4 在变量节点,判断是普通变量还是子集变量,是子集变量,则构建子集的子图,拿到子图后,对这个子集的所有state设置相同的超时时间。5计算的时候,state是子集的入口则更新子集计算的开始时间,然后判断state存在超时时间,则利用这个时间计算是否超时,超时后根据超时边决定是成功还是失败。这样,既支持什么时间内发生,什么时间内不能发生,什么时间内发生几次的各种语义。还支持全局超时加局部超时的组合,以及多个局部超时的组合,比如A到B 5秒内发生,B到C 5秒内发生,整个匹配不超过8秒。同时有了这个语法树,我们在编译阶段也能做优化,比如无效状态减枝,等价状态合并,边折叠等。这样让整个cep的功能更完整,更能贴合业务。
发布于 四川
1
12
赞
未登录
友善发言
评论
加载中
下载脉脉APP,成就职业梦想
违法不良信息&未成年人有害信息举报电话/客服电话:400 065 0808
违法不良信息&未成年人有害信息举报邮箱/客服邮箱:maimai@taou.com
清朗系列专项行动相关违规信息举报电话:400 065 0808,举报邮箱:maimai@taou.com
个人/企业等被诽谤侮辱、人身权或知识产权等被侵犯、网络谣言的举报地址:maimai.cn/tousu | 涉企虚假不实信息举报投诉专区
京ICP备12005786号-1copyright©maimai.cn