CN109614413A - 一种内存流式计算平台系统 - Google Patents
一种内存流式计算平台系统 Download PDFInfo
- Publication number
- CN109614413A CN109614413A CN201811519854.5A CN201811519854A CN109614413A CN 109614413 A CN109614413 A CN 109614413A CN 201811519854 A CN201811519854 A CN 201811519854A CN 109614413 A CN109614413 A CN 109614413A
- Authority
- CN
- China
- Prior art keywords
- event
- computing
- flow
- platform
- stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了内存流式计算平台系统,解决金融衍生品领域中事件处理规则过于繁琐导致的系统延迟增大问题,同时也解决了规则灵活多变带来的系统变更频繁问题。其技术方案为:本发明的平台是基于事件驱动的架构设计。当一个事件产生后即触发下一个事件的产生。EDA不仅可依信息发送端决定目的,更可动态依据信息内容决定后续流程,能灵活适应复杂的业务逻辑。整个流式计算平台以事件流为计算驱动源,当有新事件到达时触发针对该事件的一系列处理计算,每个逻辑计算单元的输入均为特定的事件信息,在对其进行计算转换后抛出新事件,并根据抛出的新事件特征决定驱动下一特定的逻辑计算单元进行处理,依次传递计算直至获得最终处理结果抛出至上层应用。
Description
技术领域
本发明涉及一种输出处理的计算平台系统,具体涉及可应用于金融衍生品(例如金融期货)领域的基于事件驱动的内存流式计算平台。
背景技术
近年来随着大数据的飞速发展,业界各类数据处理系统也层出不穷。2003年Google Map/Reduce框架的诞生,从框架层解决了平台伸缩难、计算容错难的问题,实现了集中大量廉价机器进行大数据处理计算的构想。此时的数据处理方案依赖于对大量数据的预先存储,并且要求处理人员具有一定的编码能力,可以基于Map/Reduce框架规则事先编码实现数据处理逻辑。Map/Reduce的出现初步实现了对海量数据的批量分析处理,但并不能够达到针对流式到达的数据进行实时分析的目标。
随着用户对流式数据处理需求的日益迫切,近几年针对流数据处理的平台也日益完善,以Spark为代表的新一代计算引擎的出现,优化了任务内部的计算逻辑,更加强调实时计算,从而促进了上层应用的快速发展,出现了一批支持各种迭代计算、流计算、SQL语法计算分析的系统。Flink就是在此之上,支持流计算并提进一步提高实时性分析的典型系统。Flink作为一个针对流数据和批数据的分布式处理引擎,基本具备了高吞吐、低延迟、高性能的数据处理特点,也支持了时间、会话、计数等相对灵活的各类窗口语义。但在金融服务行业,瞬息万变的行情信息对处理平台的延迟性提出了更高的要求,Flink的流处理性能依然面临着巨大的挑战,处理延迟高的问题是其应用于实时金融领域数据分析的最大制约因素。
除了对系统延迟、性能的高要求之外,以金融行业监察的风控规则计算为例,其监察机构频繁变动的指标需求,也对数据处理规则的编码效率,维护成本提出了更高的挑战。传统的基于API接口编程实现的数据处理逻辑在应对频繁变动的需求时,其变更维护成本过高,不利于适应快速的业务需求变化。EPL(Event Processing Language),作为一种类SQL的描述语言,包含了传统SQL中的SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等语义,同时用流事件代替了传统SQL中的静态表数据源,为上层规则开发提供了一种快捷易懂的实现方案。在实际应用过程中,由于严格的事务性,以及在复杂连接场景下对数据的特殊化处理,都需要对EPL语言进行一定程度的完善,使其能够保障由多个语句组成的一组操作的事务原子性。
总的来说,在金融衍生品业务处理的过程中,由于事件处理规则过于繁琐会导致系统延迟增大的问题,而且由于规则的灵活多变也会带来系统变更频繁的问题。
发明内容
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
本发明的目的在于解决上述问题,提供了一种内存流式计算平台系统,解决事件处理规则过于繁琐导致的系统延迟增大问题,同时也解决了规则灵活多变带来的系统变更频繁问题。
本发明的技术方案为:本发明公开了一种内存流式计算平台系统,包括平台初始化模块和事件流处理模块,其中:
平台初始化模块,配置为将所有的EPL事件处理语言规则文件解析为多个物理算子树,等待流数据驱动进行计算;
事件流处理模块,配置为基于事件驱动式架构,用事件流触发整个计算平台框架的计算逻辑单元,其中事件流处理中的原子操作之间统一通过事件机制进行触发,该触发方式是根据计算结果事件的特性动态确定下一步需要触发的计算逻辑单元。
根据本发明的内存流式计算平台系统的一实施例,平台初始化模块进一步包括:
编译单元,配置为自动读取配置信息,获取EPL语句集文件进入语句编译过程,将EPL语句转换为初始抽象语法树;
操作算子单元,配置为对编译单元生成的初始抽象语法树进行规则应用及转换,得到一系列物理操作算子。
根据本发明的内存流式计算平台系统的一实施例,编译单元还配置为同步将从EPL语句中解析出的表流结构注册到内存数据库中,以便后续解析事件流。
根据本发明的内存流式计算平台系统的一实施例,操作算子单元生成的物理操作算子包括窗口视图、过滤、连接、聚集,其中窗口视图包括排序窗口、唯一性更新替换窗口、基于系统时间和事件内嵌时间的两类时间窗口视图;物理操作算子均为静态编译结果,需要通过动态数据流触发物理操作算子进行计算。
根据本发明的内存流式计算平台系统的一实施例,事件流处理模块包括事件流插入单元、事件流计算单元,其中:
事件流插入单元,配置为在事件流到达后经事件处理引擎转换为平台内部的事件流格式后插入到事件流队列中;
事件流计算单元,配置为当事件流队列中接收到外部事件时触发已经在平台初始化模块中编译好的物理执行规则对外部事件进行计算处理。
根据本发明的内存流式计算平台系统的一实施例,事件流计算单元配置为执行以下的处理:
流事件更新涉及包括时间窗口和输出窗口在内的窗口视图,触发窗口视图的重新计算;
从物理算子树底层依次遍历操作算子,进行计算并返回结果,其中包括连接节点收到窗口视图计算后弹出的流事件,执行计算操作后产生一条新的事件并上抛给聚集节点;
触发聚集节点执行计算操作,聚集结果以流事件在计算平台内部进行传播,被上抛给投影节点并触发投影节点计算;
投影节点产生处理结果事件,上抛至计算平台最上层以触发用户自定义的流计算结果接收回调逻辑。
根据本发明的内存流式计算平台系统的一实施例,系统还包括:
内存数据库,对进入计算平台的所有流事件进行统一管理,并支持在内存数据库中按照不同物理计算需求构建包括Hash、AVL在内的索引结构。
本发明还公开了一种内存流式计算平台系统,包括计算设备以及在计算机设备上运行的一计算机程序,所述计算机程序包括用于平台初始化操作的步骤以及用于真实事件流处理的步骤,分别为:
用于平台初始化操作的步骤为:
自动加载模式文件,在系统内部注册所有预定义流结构模式,并同时加载用户定义的事件处理语言的语句规则,经过编译解析生成初始抽象语法树;
遍历所有初始抽象语法树,生成用户定义规则的逻辑执行操作和对应的逻辑窗口,基于逻辑执行计划推导出底层的物理操作算子,得到事件在系统中需要经过的物理算子树;
用于真实事件流处理的步骤为:
当真实事件流送入内存流式计算平台,经预处理操作形成计算平台内部的事件流;
根据物理算子树中对事件流的需求,将事件流抛入对应的物理层,经过一系列的物理操作算子进行操作计算后,递归取得计算结果;
将计算结果抛给输出视图,同时对计算平台外部发出对应的输出事件通知。
根据本发明的内存流式计算平台系统的一实施例,底层的物理操作算子包括投影、聚集、连接在内的基本操作运算;经过预处理操作形成的计算平台内的一系列独特的事件流包括但不限于时间窗口流、特定主题流。
根据本发明的内存流式计算平台系统的一实施例,所述计算机程序执行的用于真实事件流处理的步骤还包括在计算平台向外部发出对应的输出事件通知的步骤之后:
计算平台的接入方预先根据接入规则注册一系列的对指定语句计算结果进行处理的句柄,当计算平台向外抛出对应事件输出通知时,这些预先注册的句柄会接收通知并进行后续的业务操作。
本发明对比现有技术有如下的有益效果:本发明的内存流式计算平台系统是基于事件处理语言(Event Process Language,EPL)描述的、事件驱动的内存流式计算框架,该框架实现的平台可以在微秒级别完成复杂事件处理;并且通过对EPL的支持,实现简单高效的规则修改变更;用户上手简单,部署便捷。与现有技术相比,本发明具有以下优异的技术效果:
1)本发明引入了一种类SQL的事件处理语言EPL,能够同时操作内存数据流(Cached Flow)和内存数据库表(Memory DB),大大提高了业务规则编写的灵活性,降低了代码量;
2)本发明的内存流式计算平台核心引擎内部通过优化内存布局、智能指针等方式,除去冗余拷贝,最大程度提高性能,减少内存空间消耗;
3)本发明支持动态创建内存表及哈希索引结构,可通过约定规则与其它内存数据库实现对接;
4)本发明扩展EPL语法,支持内嵌用户自定义函数,便于将复杂业务逻辑嵌入EPL语句中;
5)本发明的平台的核心引擎物理层采用流水线执行计划,基于树结构的逻辑物理算子更利于功能扩展,高效的表达式计算,可支持后续LLVM优化;
6)本发明对接金融业务需求,优化金融数据分析中基于滑动时间窗口、批处理时间窗口的处理逻辑。
附图说明
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
图1示出了本发明的内存流式计算平台系统的一实施例的原理图。
图2示出了本发明的内存流式计算平台系统的接入示例的示意图。
图3示出了本发明的内存流式计算平台系统的一实施例的结构图。
图4A和4B示出了本发明的内存流式计算平台系统的一实施例中的计算机程序的流程图。
具体实施方式
以下结合附图和具体实施例对本发明作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本发明的保护范围进行任何限制。
图1示出了本发明的内存流式计算平台系统的一实施例的原理,图3示出了本发明的内存流式计算平台系统的一实施例的结构。请同时参见图1和图3,本实施例的内存流式计算平台系统包括:平台初始化模块、事件流处理模块。
平台初始化模块配置为将所有的EPL规则文件解析为多个具体的物理算子树,等待流数据驱动进行计算。
平台初始化模块进一步包括:编译单元、操作算子单元。
编译单元配置为自动读取配置信息,获取EPL语句集文件进入语句编译过程。该过程中自主实现了对EPL语句的词法、语法分析,识别其中描述的操作规则、涉及的表流结构、预期的输出结果模式等,并最终按照操作规则转换为初始抽象语法树(Abstract SyntaxTree,AST)。此外,编译单元会同步将从EPL中解析出的所有表流结构注册到内存数据库中,以便后续解析事件流。
操作算子单元配置为对编译单元的产物AST抽象语法树进行进一步的规则应用及转换,得到一系列的操作算子(Logical Operators)。操作算子包括例如窗口视图(View)、过滤、连接(Join)、聚集(Aggregation)等。
在本发明的实施例中,可结合金融场景业务需求,在传统操作算子的基础上,拓展基于系统时间、事件内嵌时间的两类时间窗口视图,对实时流处理以及基于落地文件的反演流处理都有较好的支持。底层的基本操作算子与传统数据库算子类似,自底向上依次实现连接、聚集、投影等操作;但与传统数据库不同的是,本发明实施例中的所有算子均为静态编译结果,需通过动态数据流触发其计算。
事件流处理模块配置为事件驱动式架构,用事件流触发整个平台框架的计算逻辑,事件流处理中的原子操作之间统一通过事件机制进行触发。这种操作触发方式可以根据计算结果事件的特性,动态确定下一步需要触发的逻辑单元,使整个处理过程灵活多变,易于适应各种复杂的金融业务逻辑。
事件流处理模块进一步包括:事件流插入单元、事件流计算单元。
事件流插入单元配置为在事件流到达后经事件处理引擎(Event Engine)转换为平台内部的事件流格式后插入到事件流(Event Stream)队列中(如图1中的步骤1和2)。
事件流计算单元配置为当事件流队列中接收到外部事件时触发已经在平台初始化模块中编译好的物理执行规则对外部事件进行计算处理。事件流计算单元所配置的计算处理过程如下,请同时参考图1:
首先,流事件更新涉及到的视图窗口,触发窗口的重新计算(3)、(4)。窗口视图包括时间窗口(Time Window)、排序窗口(Sort Window)、唯一性更新替换窗口(UniqueWindow)、结果输出窗口(Oupput Window)等几种,根据用户的EPL语句,每个语句可包含任意个窗口,但一定会有最终的结果输出窗口用于在语句间进行数据的传递。
不同的窗口可叠加,比如可以先将事件流加入时间窗口,再对满足时间窗口的事件加入排序窗口,最终进入结果输出窗口进行事件传递。
时间窗口用于基于两类事件的事件过滤,比如有业务需要对近五分钟的事件进行计算处理,那么将事件流加入时间窗口,会自动将五分钟前的事件从窗口中移除。
排序窗口用于对处理结果进行排序,有一定的阻塞作用,一般会用于结果输出窗口前,对一个事件触发计算出的多条结果输出前做规则排序。
唯一性更新窗口是指定数据流中的某几个字段作为唯一键,可保证该窗口中唯一键相同的记录只保留最新一条,新事件到达会自动覆盖旧事件。
图1所示的时间窗口为前面的两类时间窗口任意其一。图1只选取了时间窗口作为示例,因为对时间窗口支持的实时事件和事件流中内嵌事件的拓展比较有特点,但在实际情况中是可以有多个窗口叠加的。
再从物理算子树底层依次遍历操作算子,进行计算并返回结果,以图1中所示的物理算子树为例,连接(Join Service)节点收到视图计算后弹出的流事件,执行计算操作(7)后,产生一条新的事件并上抛(8)给聚集节点(Aggression Service)。获取结果(5)操作相当于事件流到达后,对右侧一系列操作算子递归的计算调用的触发,可理解为当新事件插入事件流之后,可直接插入时间窗口视图更新该视图中维护的特定时间段的事件组(3),触发更新结果输出结果视图算子(4),但此时新事件还未被计算,因此会通过(5)触发底层算子计算获取输出结果,依次执行(6-10)后,将计算的结果成功更新入结果输出视图,并通过该视图的更新输出结果事件并触发用户自定义的事件处理句柄对结果进行接收处理。
然后,触发聚集节点执行计算操作(6),同理,聚集结果以流事件在平台内部进行传播,被上抛(9)给投影(Project Service)物理算子,并触发投影节点计算。
最终,投影节点产生处理结果事件,上抛(10)至平台最上层,触发用户自定义的流计算结果接收回调逻辑(11)。
此外,本发明的内存流式计算平台系统设计了基于追加机制的定长内存管理与分配策略,通过内存数据库对进入平台的所有流事件进行统一管理,并支持在其上按照不同物理计算需求构建Hash、AVL索引结构;在不同算子间的事件流通信方面,尽可能的去内存拷贝,最大化利用原始事件流信息,最大程度的提高算子间数据抛出抛入的性能,减少内存空间消耗。
如上述,由于本发明的内存流式计算平台系统提供了完整的EPL语言规则解析、流事件计算处理框架,因此,应用程序开发者与本发明平台的对接只需要按照本平台系统的约定接口注册感兴趣的流处理结果句柄,在其中接收处理结果,并进行应用程序业务处理即可。
图2示出了上层的应用程序与本发明的内存流式计算平台的对接示例。请参见图2,应用程序开发者需根据具体的业务规则,事先编辑EPL语句,定义对流数据的具体处理逻辑;同时需要按照约定的XML数据格式,预定义已知的所有流数据模式(Schema)。
本实施例的内存流式计算平台系统包括一计算设备(例如服务器)以及运行于该计算设备上的一计算机程序。
以图2所示的一应用程序开发为例,本实施例的内存流式计算平台系统中的计算机程序启动后执行如图4A所示的平台初始化操作步骤以及如图4B所示的真实事件流处理的步骤。
平台初始化操作步骤如图4A所示,处理过程如下:
自动加载模式XML中所有内容,在系统内部注册所有预定义流结构模式,并同时加载用户定义的EPL语句规则,经过编译解析生成初始抽象语法树(Abstract Syntax Tree,AST)。
遍历所有AST,生成用户定义规则的逻辑执行操作(Logic Operators)和对应的逻辑窗口(Logic Views),然后基于逻辑执行计划推导出底层实际的物理操作算子(包括投影、聚集、连接等基本操作运算),得到事件在系统中需要经过的完成物理算子树。
到此时,本实施例平台框架的语句解析准备工作(即平台初始化操作)结束,可以进行后续的真实事件流处理。
真实事件流处理的步骤如图4B所示,处理过程如下:
当真实事件流送入本实施例的内存流式计算平台,首先经过一层层的过滤、筛选等预处理操作,形成计算平台内部的一系列独特的事件流(例如时间窗口流、特定主题流等)。
然后根据物理算子树中对事件流的需求,将其抛入对应的物理层,经过一系列的物理操作算子(如图1所示的Project投影、Aggregation聚集、Join连接等)进行操作计算后,递归取得计算结果。
将该结果抛给输出视图(Output View),同时对平台外部发出对应的输出事件通知。
平台接入方会预先根据接入规则注册一系列对指定语句计算结果进行处理的句柄(Handler),当计算平台向外抛出对应事件输出通知时,这些预先注册的句柄会接收通知,并进行后续的业务操作。
从上述处理中概括得到,本发明的内存流式计算平台的运行流程如下:
1.创建计算平台实例,并进行初始化;
2.编写EPL规则语句集,并加载入计算平台;
3.注册对特定抛出结果感兴趣的句柄;
4.将规则语句集与结果处理句柄进行关联;
5.向平台中导入事件流,进行计算处理。
本发明的内存流式计算平台主要包括以下技术和架构特点:
1)基于事件驱动的架构设计。事件驱动架构(Event Driven Architecture,EDA)以面向服务架构(Service Oriented Architecture,SOA)为基础,将SOA中的服务进一步转化成事件为单位来处理。当一个事件产生后,即触发下一个事件的产生。EDA不仅可以依信息发送端决定目的,更可以动态依据信息内容决定后续流程,更能灵活地适应复杂的业务逻辑。整个流式计算平台以事件流作为计算驱动源,当有新事件到达时,触发针对该事件的一系列处理计算,每个逻辑计算单元的输入均为特定的事件信息,在对其进行计算转换后,抛出新事件,并根据抛出的新事件特征决定驱动下一个特定的逻辑计算单元进行处理,依次传递计算直至获得最终处理结果抛出至上层应用。
2)基于事件处理语言(Event Processing Language,EPL)的复杂事件处理规则描述。在EDA中,一般会处理两种事件:一是简单事件(Simple Event),简单事件处理可看作消息导向处理的架构,其中简单事件定义为可直接观察到的改变。在这个架构中,简单事件的处理只有两个功能:过滤(Filtering)和路由(Routing)。过滤功能决定事件是否被传送出去,路由决定事件传送的目的地。二是复杂事件(Complex Event),相较于简单事件,复杂事件处理不仅能够处理单一的事件,也可以处理由多个事件所组成的复合事件。复杂事件处理监测分析输入事件流(Event Streaming),当特定事件发生时去触发某些动作。复杂事件处理可看作一种处理流数据(Streaming)的数据库处理。在关系数据库中所处理的数据是由许多行(Row)的数据表(table)组成的静态数据,复杂事件处理将事件流当作是数据表来处理,事件类型里的属性相当于数据表的字段,可针对源源不断到达的动态数据流进行处理。以往使用关联式数据库的时候是将数据先存入关系型数据库后,再用SQL语法将数据库里的数据表做处理。使用复杂事件处理则把处理数据的过程往前,不用通过保存的动作就在数据流中将事件做处理。因此在处理事件的方式上采用SQL-LIKE的语言。复杂事件处理中除了过滤和路由之外,还有模式比对的能力。找出事件集合的各种活动,事件聚合,过去历史中的各种因果关系,逻辑以及运算等等,触发新的事件反应。在复杂事件处理中,为了要达到高吞吐量(throughput)、高度可用性(availability)、以及低度延迟(latency),以适应信息快速变换的金融衍生品市场需求,让企业、用户、监管部门能够实现实时决策,因此使用事件流处理(Event Stream Processing)。使用EPL为SQL-LIKE的语言,可以方便的对事件流提供复杂的逻辑处理,使事件流在内存中做模式比对处理及查询的动作。这些过程都在内存内进行,不须经由存储设备。
3)基础数据类型封装,支持多样化用户自定义精度数据类型,及复杂结构体类型处理。内存流式计算平台底层对C++基础数据类型进行了封装,针对金融业务需求,对于不同的数据精度要求,扩展了大量的精度类型,用于对底层数据进行精确的表达计算。流式计算平台的底层存储实现了完全自主研发,基于已有的C++基础数据类型,衍生出一系列金融场景下的用户自定义字段(例如UstpStockCode、UstpExchangeName等),这些特化数据类型以C++语言中既有的整型、浮点型、字符串为基础,加强精度控制,使其在后续统一的高效内存组织中发挥重要作用。
4)内存流式计算平台在对内存管理方面,实现了完全自主研发的一套空间管理技术,基于定长空间分配策略(CFixMem),实现高效的内存管理与分配。全局内存分配器(MemoryAllocator)中始终维护所分配内存的起止位置,以便快速判断平台拥有的合法内存空间;并定义块内存格式,通过约定块内存头描述,实现内部分配的内存块组织。基于CFixMem的分配策略,每个内存块在分配初期即可确定其所能容纳的最大事件数目,即可高效的通过位图索引结构标记内存块内部每个槽(Slot)单元是否被使用,以便于新事件到达时快速定位可用存储空间。此外,在存储层建立Hash、AVL索引结构,利用既有的高效数据索引算法实现平台内部已有事件的查找定位,也可以极大的提升事件处理效率。
5)基于自主研发的内存数据库技术,实现全流程内存数据访问,摒弃了传统的磁盘数据管理方式,极大提升数据处理的速度,实现基于流数据的实时性分析计算。内存流式计算平台内部通过完善的内存分配管理机制,实现了全量流水数据常驻内存;并且扩展EPL规则,实现了严格的事务隔离性。在物理执行计划层,每个操作算子都实现了可回滚机制,允许在同一事务中实现状态回退。例如:当一个复杂计算规则由一组EPL语句组合构成时,事件流的到来将逐一触发该组EPL中的所有语句,只有当前序语句规则计算通过后,才能通过事件抛出机制触发其下一个语句的执行。在这种情况下,一旦语句执行通过,那么其内部关联的数据状态将发生改变(内存表、Hash索引数据等),但在一个语句组中的后续语句执行失败可能导致整个事务失败,需要进行状态回退,这就涉及到前面已经执行完成的,关联数据或状态发生改变的语句可以进行回退操作,重新回到该事件执行前的状态。
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或多个微处理器、或任何其他此类配置。
结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
Claims (10)
1.一种内存流式计算平台系统,其特征在于,包括平台初始化模块和事件流处理模块,其中:
平台初始化模块,配置为将所有的EPL事件处理语言规则文件解析为多个物理算子树,等待流数据驱动进行计算;
事件流处理模块,配置为基于事件驱动式架构,用事件流触发整个计算平台框架的计算逻辑单元,其中事件流处理中的原子操作之间统一通过事件机制进行触发,该触发方式是根据计算结果事件的特性动态确定下一步需要触发的计算逻辑单元。
2.根据权利要求1所述的内存流式计算平台系统,其特征在于,平台初始化模块进一步包括:
编译单元,配置为自动读取配置信息,获取EPL语句集文件进入语句编译过程,将EPL语句转换为初始抽象语法树;
操作算子单元,配置为对编译单元生成的初始抽象语法树进行规则应用及转换,得到一系列物理操作算子。
3.根据权利要求2所述的内存流式计算平台系统,其特征在于,编译单元还配置为同步将从EPL语句中解析出的表流结构注册到内存数据库中,以便后续解析事件流。
4.根据权利要求2所述的内存流式计算平台系统,其特征在于,操作算子单元生成的物理操作算子包括窗口视图、过滤、连接、聚集,其中窗口视图包括排序窗口、唯一性更新替换窗口、基于系统时间和事件内嵌时间的两类时间窗口视图;物理操作算子均为静态编译结果,需要通过动态数据流触发物理操作算子进行计算。
5.根据权利要求1所述的内存流式计算平台系统,其特征在于,事件流处理模块包括事件流插入单元、事件流计算单元,其中:
事件流插入单元,配置为在事件流到达后经事件处理引擎转换为平台内部的事件流格式后插入到事件流队列中;
事件流计算单元,配置为当事件流队列中接收到外部事件时触发已经在平台初始化模块中编译好的物理执行规则对外部事件进行计算处理。
6.根据权利要求5所述的内存流式计算平台系统,其特征在于,事件流计算单元配置为执行以下的处理:
流事件更新涉及包括时间窗口和输出窗口在内的窗口视图,触发窗口视图的重新计算;
从物理算子树底层依次遍历操作算子,进行计算并返回结果,其中包括连接节点收到窗口视图计算后弹出的流事件,执行计算操作后产生一条新的事件并上抛给聚集节点;
触发聚集节点执行计算操作,聚集结果以流事件在计算平台内部进行传播,被上抛给投影节点并触发投影节点计算;
投影节点产生处理结果事件,上抛至计算平台最上层以触发用户自定义的流计算结果接收回调逻辑。
7.根据权利要求1所述的内存流式计算平台系统,其特征在于,系统还包括:
内存数据库,对进入计算平台的所有流事件进行统一管理,并支持在内存数据库中按照不同物理计算需求构建包括Hash、AVL在内的索引结构。
8.一种内存流式计算平台系统,其特征在于,包括计算设备以及在计算机设备上运行的一计算机程序,所述计算机程序包括用于平台初始化操作的步骤以及用于真实事件流处理的步骤,分别为:
用于平台初始化操作的步骤为:
自动加载模式文件,在系统内部注册所有预定义流结构模式,并同时加载用户定义的事件处理语言的语句规则,经过编译解析生成初始抽象语法树;
遍历所有初始抽象语法树,生成用户定义规则的逻辑执行操作和对应的逻辑窗口,基于逻辑执行计划推导出底层的物理操作算子,得到事件在系统中需要经过的物理算子树;
用于真实事件流处理的步骤为:
当真实事件流送入内存流式计算平台,经预处理操作形成计算平台内部的事件流;
根据物理算子树中对事件流的需求,将事件流抛入对应的物理层,经过一系列的物理操作算子进行操作计算后,递归取得计算结果;
将计算结果抛给输出视图,同时对计算平台外部发出对应的输出事件通知。
9.根据权利要求8所述的内存流式计算平台系统,其特征在于,底层的物理操作算子包括投影、聚集、连接在内的基本操作运算;经过预处理操作形成的计算平台内的一系列独特的事件流包括但不限于时间窗口流、特定主题流。
10.根据权利要求8所述的内存流式计算平台系统,其特征在于,所述计算机程序执行的用于真实事件流处理的步骤还包括在计算平台向外部发出对应的输出事件通知的步骤之后:
计算平台的接入方预先根据接入规则注册一系列的对指定语句计算结果进行处理的句柄,当计算平台向外抛出对应事件输出通知时,这些预先注册的句柄会接收通知并进行后续的业务操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811519854.5A CN109614413B (zh) | 2018-12-12 | 2018-12-12 | 一种内存流式计算平台系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811519854.5A CN109614413B (zh) | 2018-12-12 | 2018-12-12 | 一种内存流式计算平台系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109614413A true CN109614413A (zh) | 2019-04-12 |
CN109614413B CN109614413B (zh) | 2023-03-24 |
Family
ID=66008424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811519854.5A Active CN109614413B (zh) | 2018-12-12 | 2018-12-12 | 一种内存流式计算平台系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109614413B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209685A (zh) * | 2019-06-12 | 2019-09-06 | 北京九章云极科技有限公司 | 一种数据实时处理方法及系统 |
CN110888672A (zh) * | 2019-11-26 | 2020-03-17 | 北京仁科互动网络技术有限公司 | 一种基于元数据架构的表达式引擎实现方法及系统 |
CN111311404A (zh) * | 2019-12-18 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种基于分布式的流式金融交易风控系统及方法 |
CN111309752A (zh) * | 2019-11-26 | 2020-06-19 | 上海金融期货信息技术有限公司 | 面向业务流式数据处理的领域特定语言组件及其运作方法 |
CN111414387A (zh) * | 2020-03-18 | 2020-07-14 | 威讯柏睿数据科技(北京)有限公司 | 一种基于全内存计算对流数据进行查询的方法和设备 |
CN111478949A (zh) * | 2020-03-25 | 2020-07-31 | 中国建设银行股份有限公司 | 数据处理方法和装置 |
CN111522846A (zh) * | 2020-04-09 | 2020-08-11 | 浙江邦盛科技有限公司 | 一种基于时序中间态数据结构的数据聚合方法 |
CN112116468A (zh) * | 2020-06-24 | 2020-12-22 | 上海金融期货信息技术有限公司 | 一种基于流式计算引擎的结构化风控实现方法和系统 |
CN112612580A (zh) * | 2020-11-25 | 2021-04-06 | 北京思特奇信息技术股份有限公司 | 一种组合事件触发方法及触发系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100017379A1 (en) * | 2008-07-16 | 2010-01-21 | Alexis Naibo | Systems and methods to create continuous queries via a semantic layer |
CN102968339A (zh) * | 2012-12-19 | 2013-03-13 | 上海普元信息技术股份有限公司 | 基于云计算架构实现复杂事件处理的系统及其方法 |
CN103458033A (zh) * | 2013-09-04 | 2013-12-18 | 北京邮电大学 | 事件驱动、面向服务的物联网服务提供系统及其工作方法 |
US20160063080A1 (en) * | 2014-08-29 | 2016-03-03 | Microsoft Corporation | Event stream transformations |
-
2018
- 2018-12-12 CN CN201811519854.5A patent/CN109614413B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100017379A1 (en) * | 2008-07-16 | 2010-01-21 | Alexis Naibo | Systems and methods to create continuous queries via a semantic layer |
CN102968339A (zh) * | 2012-12-19 | 2013-03-13 | 上海普元信息技术股份有限公司 | 基于云计算架构实现复杂事件处理的系统及其方法 |
CN103458033A (zh) * | 2013-09-04 | 2013-12-18 | 北京邮电大学 | 事件驱动、面向服务的物联网服务提供系统及其工作方法 |
US20160063080A1 (en) * | 2014-08-29 | 2016-03-03 | Microsoft Corporation | Event stream transformations |
Non-Patent Citations (2)
Title |
---|
余玉涵等: "基于复杂事件处理的业务规则管理系统的研究", 《电脑知识与技术》 * |
孔祥等: "分布式复杂事件流处理平台的研究", 《计算机工程与应用》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209685B (zh) * | 2019-06-12 | 2020-04-21 | 北京九章云极科技有限公司 | 一种数据实时处理方法及系统 |
CN110209685A (zh) * | 2019-06-12 | 2019-09-06 | 北京九章云极科技有限公司 | 一种数据实时处理方法及系统 |
CN110888672B (zh) * | 2019-11-26 | 2023-05-02 | 北京仁科互动网络技术有限公司 | 一种基于元数据架构的表达式引擎实现方法及系统 |
CN111309752B (zh) * | 2019-11-26 | 2023-04-25 | 上海金融期货信息技术有限公司 | 面向业务流式数据处理的领域特定语言组件及其运作方法 |
CN111309752A (zh) * | 2019-11-26 | 2020-06-19 | 上海金融期货信息技术有限公司 | 面向业务流式数据处理的领域特定语言组件及其运作方法 |
CN110888672A (zh) * | 2019-11-26 | 2020-03-17 | 北京仁科互动网络技术有限公司 | 一种基于元数据架构的表达式引擎实现方法及系统 |
CN111311404A (zh) * | 2019-12-18 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种基于分布式的流式金融交易风控系统及方法 |
CN111311404B (zh) * | 2019-12-18 | 2023-10-17 | 上海金融期货信息技术有限公司 | 一种基于分布式的流式金融交易风控系统及方法 |
CN111414387A (zh) * | 2020-03-18 | 2020-07-14 | 威讯柏睿数据科技(北京)有限公司 | 一种基于全内存计算对流数据进行查询的方法和设备 |
CN111478949A (zh) * | 2020-03-25 | 2020-07-31 | 中国建设银行股份有限公司 | 数据处理方法和装置 |
CN111478949B (zh) * | 2020-03-25 | 2022-05-24 | 中国建设银行股份有限公司 | 数据处理方法和装置 |
CN111522846B (zh) * | 2020-04-09 | 2023-08-22 | 浙江邦盛科技股份有限公司 | 一种基于时序中间态数据结构的数据聚合方法 |
CN111522846A (zh) * | 2020-04-09 | 2020-08-11 | 浙江邦盛科技有限公司 | 一种基于时序中间态数据结构的数据聚合方法 |
CN112116468A (zh) * | 2020-06-24 | 2020-12-22 | 上海金融期货信息技术有限公司 | 一种基于流式计算引擎的结构化风控实现方法和系统 |
CN112116468B (zh) * | 2020-06-24 | 2023-11-21 | 上海金融期货信息技术有限公司 | 一种基于流式计算引擎的结构化风控实现方法和系统 |
CN112612580A (zh) * | 2020-11-25 | 2021-04-06 | 北京思特奇信息技术股份有限公司 | 一种组合事件触发方法及触发系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109614413B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109614413A (zh) | 一种内存流式计算平台系统 | |
US20230214385A1 (en) | Continuous cloud-scale query optimization and processing | |
US8239847B2 (en) | General distributed reduction for data parallel computing | |
Hueske et al. | Opening the black boxes in data flow optimization | |
US10007698B2 (en) | Table parameterized functions in database | |
US8352459B2 (en) | SQL queries for simple network management protocol management information base tables | |
US8180810B2 (en) | Interactive generation of integrated schemas | |
Ali et al. | The extensibility framework in Microsoft StreamInsight | |
US20210224275A1 (en) | Query classification and processing using neural network based machine learning | |
US11023443B2 (en) | Collaborative planning for accelerating analytic queries | |
WO2018197084A1 (en) | Query plan generation and execution in a relational database management system with a temporal-relational database | |
NO20171080A1 (en) | Apparatus and methods of data synchronization | |
US20090144229A1 (en) | Static query optimization for linq | |
US20090070300A1 (en) | Method for Processing Data Queries | |
US11423022B2 (en) | Hybrid declarative query compiler and optimizer framework | |
CN109492012A (zh) | 一种数据实时统计和检索的方法、装置及存储介质 | |
CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
Hammoud | MapReduce network enabled algorithms for classification based on association rules | |
CN105550351B (zh) | 旅客行程数据即席查询系统及方法 | |
Claussen et al. | Optimization and evaluation of disjunctive queries | |
Vakharia et al. | Shared foundations: Modernizing meta’s data lakehouse | |
Damasio et al. | Guided automated learning for query workload re-optimization | |
Lai et al. | {GLogS}: Interactive Graph Pattern Matching Query At Large Scale | |
Papavasileiou et al. | Ariadne: Online provenance for big graph analytics | |
Renggli et al. | SHiFT: an efficient, flexible search engine for transfer learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |