摘 要: |  Apache Flink是目前最流行的流式计算平台之一,已经在工业界得到了广泛应用.复杂事件处理是流式计算的一种重要使用场景, Apache Flink平台定义并实现了一种复杂事件处理语言(简称FlinkCEP). FlinkCEP语法特性丰富,不仅包括常见的过滤、连接、循环等操作,还包括迭代条件、匹配筛选策略等高级特性. FlinkCEP语义复杂,尚缺乏语言规范对其语义进行准确描述,只能通过实现细节来理解,因此对其语义进行形式描述对于开发人员准确理解其语义非常必要.针对FlinkCEP提出一种数据流转换器的自动机模型,该模型包括用于刻画迭代条件的数据变量、存储输出结果的数据流变量、用于刻画匹配筛选策略的迁移优先级等特性.使用数据流转换器对FlinkCEP的语义进行形式建模,并且根据形式语义设计FlinkCEP的查询求值算法,实现原型系统.进一步,生成能够较为全面覆盖FlinkCEP语法特性的测试用例集,利用这些测试用例与FlinkCEP在Flink平台上的实际运行结果进行对比实验.实验结果表明所提出的形式语义与FlinkCEP在Flink平台上的实际语义基本是一致的.而且,对实验结果不一致的情况进行分析,指出FlinkCEP在Flink平台上的实现对于组模式的处理可能存在错误.

|