网站制作的一般步骤是什么,申请了域名怎么建网站,网站域名设计方案,网站地图的好处目录
1.Flink CEP 原理
2.Flink API开发
2.1 模式 pattern
2.2 模式 pattern属性
2.3 模式间的关系 1.Flink CEP 原理 Flink CEP内部是用NFA#xff08;非确定有限自动机#xff09;来实现的#xff0c;由点和边组成的一个状态图#xff0c;以一个初始状态作为起点非确定有限自动机来实现的由点和边组成的一个状态图以一个初始状态作为起点经过一系列的中间状态达到终态。点分为起始状态、中间状态、最终状态三种边分为take、ignore、proceed三种。
take必须存在一个条件判断当到来的消息满足take边条件判断时把这个消息放入结果集将状态转移到下一状态。ignore当消息到来时可以忽略这个消息将状态自旋在当前不变是一个自己到自己的状态转移。 proceed又叫做状态的空转移当前状态可以不依赖于消息到来而直接转移到下一状态。
2.Flink API开发 CEP程序开发主要分为两部分定义事件pattern和匹配结果处理。 官方demo
DataStreamEvent input ...//定义一个模式
PatternEvent, ? pattern Pattern.Eventbegin(start)//定义一个take操作先匹配Id 42的事件.where(new SimpleConditionEvent() {Overridepublic boolean filter(Event event) {return event.getId() 42;}})//接下来的模式.next(middle).subtype(SubEvent.class)// 接下来匹配volume 10的事件.where(new SimpleConditionSubEvent() {Overridepublic boolean filter(SubEvent subEvent) {return subEvent.getVolume() 10.0;}})// 最后匹配name end的事件.followedBy(end).where(new SimpleConditionEvent() {Overridepublic boolean filter(Event event) {return event.getName().equals(end);}});
// 对input流绑定上面定义好的时间pattern
PatternStreamEvent patternStream CEP.pattern(input, pattern);// 获取匹配的事件流
DataStreamAlert result patternStream.select(new PatternProcessFunctionEvent, Alert() {Overridepublic void select(MapString, ListEvent pattern,Context ctx,CollectorAlert out) throws Exception {// pattern中的key是上面状态节点的名字value是匹配的事件可能匹配多次out.collect(createAlertFrom(pattern));}}); 上图中蓝色方框代表的是一个个单独的模式浅黄色的椭圆代表的是这个模式上可以添加的属性包括模式可以发生的循环次数或者这个模式是贪婪的还是可选的橘色的椭圆代表的是模式间的关系定义了多个模式之间是怎么样串联起来的。通过定义模式添加相应的属性将多个模式串联起来三步就可以构成了一个完整的Flink CEP程序。
2.1 模式 pattern 定义一个pattern需要包括 start模式名称 where模式的内容 filter核心处理逻辑 正如上面例子中的
//名称
Pattern.Eventbegin(start)//内容.where(new SimpleConditionEvent() {//核心逻辑Overridepublic boolean filter(Event event) {return event.getId() 42;}});
2.2 模式 pattern属性 模式的属性主要分为循环属性和可选属性。 循环属性可以定义模式匹配发生固定次数times匹配发生一次以上oneOrMore匹配发生多次以上。(timesOrMore)。 可选属性可以设置模式是贪婪的greedy即匹配最长的串或设置为可选的optional有则匹配无则忽略。 另外由于模式的匹配事件存放在状态中进行管理所以需要设置一个全局的有效期within。
2.3 模式间的关系 主要分为三种严格连续性next/notNext宽松连续性followedBy/notFollowedBy和非确定宽松连续性followedByAny。
严格连续性需要消息的顺序到达与模式完全一致。宽松连续性允许忽略不匹配的事件。非确定宽松连性不仅可以忽略不匹配的事件也可以忽略已经匹配的事件。
下一篇实战 CEP pattern 动态更新