CN108419447A - 事件流处理集群管理器 - Google Patents
事件流处理集群管理器 Download PDFInfo
- Publication number
- CN108419447A CN108419447A CN201780004037.3A CN201780004037A CN108419447A CN 108419447 A CN108419447 A CN 108419447A CN 201780004037 A CN201780004037 A CN 201780004037A CN 108419447 A CN108419447 A CN 108419447A
- Authority
- CN
- China
- Prior art keywords
- computing device
- esp
- block object
- event
- configuration file
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种第一计算装置管理事件流处理ESP引擎ESPE的集群。基于从管理器配置文件读取的信息而创建本地ESP模型,所述管理器配置文件包含用以连接到第二计算装置的第一连接信息和用以连接到第三计算装置的第二连接信息。基于所述所创建本地ESP模型而在所述第一计算装置上实例化ESPE。在所述实例化ESPE的第一源窗口中从所述第二计算装置接收事件块对象。向远程第三计算装置部署远程ESP模型。所述管理器配置文件包含所述远程ESP模型的指示符。选择用以接收经处理事件块对象的第三计算装置。将所述经处理事件块对象发布给由向所述第三计算装置部署的所述远程ESP模型定义的第二源窗口。
Description
相关申请的交叉引用
本申请依据35U.S.C.§119(e)要求2017年1月23日提交的第62/449,430号美国临时专利申请和2016年12月9日提交的第62/432,238号美国临时专利申请的权益,所述美国临时专利申请的全部内容以引用的方式并入本文中。
背景技术
增大数目个分布式应用程序处理来自在地理上分布的来源的继续流动的数据,对流式传输的数据执行分析,并将分析结果提供给也可在地理上分布的实体。可从捕获描述远程装置的当前操作特性的实时数据产生的传感器测量继续流动的数据。传感器测量可从多种不同类型的传感器导出,所述传感器安装在例如目前移动的车辆、飞机或船艇上的各种位置(例如制动器、发动机、转向机构、冷却系统、乘客通风口、电源等等)处。
事件流处理(event stream processing,ESP)可用以每秒分析并理解数百万个事件,同时在所关注的模式出现实时检测所述模式。当针对高容量输送量以亚毫秒响应时间进行处理时,可通过ESP评估数据流以导出洞察并采取适当的动作。
发明内容
在实例实施例中,提供一种在上面存储有计算机可读指令的非暂时性计算机可读媒体,所述计算机可读指令在由第一计算装置执行时致使所述第一计算装置管理事件流处理引擎的集群。基于从管理器配置文件读取的信息而创建本地事件流处理(ESP)模型所述本地ESP模型描述待在事件块对象由所述第一计算装置从远离所述第一计算装置的第二计算装置接收到时对所述事件块对象的一或多个第一字段执行的第一计算过程。所述管理器配置文件包含用以连接所述第二计算装置与所述第一计算装置的第一连接信息。基于所创建本地ESP模型而在所述第一计算装置上实例化ESP引擎(ESPE)。在实例化ESPE的第一源窗口中从所述第二计算装置接收事件块对象。所述第一源窗口由所创建本地ESP模型定义。基于所创建本地ESP模型而处理接收到的事件块对象。向远离所述第一计算装置和所述第二计算装置的第三计算装置部署远程ESP模型。所述远程ESP模型描述待在经处理事件块对象由所述第三计算装置从所述第一计算装置接收到时对经处理事件块对象一或多个第二字段执行的第二计算过程。所述管理器配置文件进一步包含所述远程ESP模型的指示符和用以连接所述第三计算装置与所述第一计算装置的第二连接信息。选择用以接收经处理事件块对象的第三计算装置。将经处理事件块对象发布给由向所述第三计算装置部署的所述远程ESP模型定义的第二源窗口。
在一些实施例中,基于从所述管理器配置文件读取的信息而创建路由器配置文件,其中所述路由器配置文件描述所述事件块对象从所述第二计算装置路由到所述第三计算装置。基于所创建路由器配置文件而在所述第一计算装置上实例化路由器引擎,其中实例化路由器引擎基于所创建路由器配置文件选择所述第三计算装置以接收经处理事件块对象。基于所创建路由器配置文件而将经处理事件块对象发布给所述第二源窗口。
在一些实施例中,实例化路由器引擎从多个远程计算装置选择所述第三计算装置。
在一些实施例中,当所述路由器配置文件指示来自所述第二计算装置的所述事件块对象被多播时,实例化路由器引擎选择所述多个远程计算装置中的每一个,并在所述多个远程计算装置中的每一个处将经处理事件块对象发布给所述第二源窗口。
在一些实施例中,当所述路由器配置文件指示来自所述第二计算装置的所述事件块对象发送给单个计算装置时,实例化路由器引擎从所述多个远程计算装置选择所述第三计算装置。
在一些实施例中,通过执行以下操作来从所述多个远程计算装置选择所述第三计算装置:从所述多个远程计算装置中连续地选择将向其发布所述事件块对象的不同计算装置。
在一些实施例中,通过执行以下操作来从所述多个远程计算装置选择所述第三计算装置:从所述事件块对象的预定义字段读取值并基于所读取值而从所述多个远程计算装置选择所述第三计算装置。
在一些实施例中,通过执行以下操作来从所述多个远程计算装置选择所述第三计算装置:从所述事件块对象的预定义字段读取值、从所读取值计算散列值、并基于计算出的散列值而从所述多个远程计算装置选择所述第三计算装置。
在一些实施例中,基于从所述管理器配置文件读取的信息而创建路由器配置文件,其中所述路由器配置文件描述所述事件块对象从所述第二计算装置路由到所述第三计算装置。基于所创建路由器配置文件而在所述第一计算装置上实例化路由器引擎。实例化路由器引擎基于所创建路由器配置文件开始所述第一计算装置与所述第二计算装置之间的连接器以接收所述事件块对象。
在一些实施例中,实例化路由器引擎开始所述第一计算装置与各自接收不同事件块对象的多个发布计算装置之间的多个连接器。所述第二计算装置是所述多个发布计算装置中的一个。
在一些实施例中,以从所创建路由器配置文件确定的次序开始所述多个连接器。
在一些实施例中,基于所创建路由器配置文件而一起开始所述多个连接器的群组。
在一些实施例中,在基于所创建路由器配置文件而开始所述连接器之后开始所述多个连接器中的第二连接器。
在一些实施例中,在基于所创建路由器配置文件而将所述连接器指示为已结束之后开始所述多个连接器中的第二连接器。
在一些实施例中,在基于所创建路由器配置文件而将所述连接器指示为已停止之后开始所述多个连接器中的第二连接器。
在另一实例实施例中,提供了所述第一计算装置。所述第一计算装置包含但不限于处理器和以可操作方式耦合到所述处理器的计算机可读媒体。所述计算机可读媒体在上面存储由在由所述处理器执行时,致使所述第一计算装置管理事件流处理引擎的集群的指令。
在又另一实例实施例中,提供了一种管理事件流处理引擎的集群的方法。
本领域技术人员将在检阅以下详细图式、详细描述和所附权利要求书后即可明白所公开主题的其它主要特征。
附图说明
将在下文参考附图描述所公开主题的说明性实施例,其中相同标号表示相同元件。
图1描绘根据说明性实施例的流处理系统的框图。
图2描绘根据说明性实施例的图1的流处理系统的事件发布系统的事件发布装置的框图。
图3描绘说明根据说明性实施例的由图2的事件发布装置执行的操作的实例的流程图。
图4描绘根据说明性实施例的在图1的流处理系统的ESP装置上执行的事件流处理(event stream processing,ESP)引擎的框图。
图5描绘根据说明性实施例的图1的流处理系统的事件预订系统的事件预订装置的框图。
图6描绘说明根据说明性实施例的由图5的事件预订装置执行的操作的实例的流程图。
图7描绘根据说明性实施例的图1的流处理系统的集群管理器装置的框图。
图8描绘说明根据说明性实施例的由图7的集群管理器装置执行的操作的实例的流程图。
图9描绘根据说明性实施例的由图1的流处理系统的ESP集群系统执行的事件流操纵和变换的窗口的定向图。
图10描绘根据说明性实施例的图1的流处理系统的ESP集群系统的ESP集群装置的框图。
图11描绘说明根据说明性实施例的由图10的ESP集群装置执行的操作的实例的流程图。
具体实施方式
参考图1,展示了根据说明性实施例的流处理系统100的框图。在说明性实施例中,流处理系统100可包含事件发布系统102、集群管理器装置104、事件流处理(ESP)集群系统106、事件预订系统108和网络110。事件发布系统102、集群管理器装置104、ESP集群系统106和事件预订系统108中的每一个可由通过网络110通信的一或多个离散装置构成。集群管理器装置104和ESP集群系统106可集成到一或多个计算装置中。
事件发布系统102包含以下各项、与其集成和/或与其通信:一或多个传感器、数据产生装置、数据捕获装置等等。举例来说,传感器可产生被称作测量数据值的传感器信号值,测量数据值表示与传感器相关联的环境中的物理量的量度,且传感器可产生通常与产生测量基准的时间相关联的对应测量基准。与传感器相关联的用于监测的环境可包含电力网系统、电信系统、流体(例如油、气体、水等等)管线、运输系统、工业装置、医疗装置、电气设备、车辆、计算装置等等。实例传感器包含可安装到用作系统的部分的各种组件的以下各项:压力传感器、温度传感器、位置或定位传感器、速度传感器、加速度传感器、流体流速传感器、电压传感器、电流传感器、频率传感器、相角传感器、数据速率传感器、湿度传感器、声学传感器、光传感器、运动传感器、电磁场传感器、力传感器、扭矩传感器负载传感器、应变传感器、化学性质传感器、电阻传感器、辐射传感器、辐照度传感器、近程传感器、距离传感器、振动传感器等等。作为另一实例,数据产生装置可以是响应于事件发生而产生测量数据值的计算装置。作为又一实例,数据捕获装置可以是接收由可对事件作出响应的另一装置产生的测量数据值的计算装置。
举例来说,虽然卡车可配备有数百个传感器,但是随着自控车辆技术进步,传感器的数目快速增加。这些传感器流式传输对卡车驾驶员和卡车制造商有价值的所有类型的事件。一些事件需要通过边缘分析即刻反应,而其它事件需要在云端中进行处理,在云端中执行更全面且详细的分析。但是,在满足大型、地理上分布且高度动态的传感器的要求的云端中部署分析工具和模型具有挑战性。
事件发布系统102将测量数据值作为“事件”发布给集群管理器装置104。事件是反映某事已发生并且是数据纪录的数据纪录。使用包含字段和密钥的预定义格式来存储事件对象。为了说明,第一字段和第二字段可表示操作码(opcode)和旗标。操作码实现事件对象的更新、更新或插入、插入和删除。旗标指示测量数据值和/或其它字段数据是否已填充有所有字段或在“更新”操作码的状况下仅填充有经更新字段。如果关键字段已存在,那么更新或插入操作码更新事件对象;否则,插入事件对象。集群管理器装置104在事件流中接收测量数据值,处理测量数据值,并识别ESP集群系统106的向其发送经测量数据值的计算装置。在将经处理测量数据值发送给事件预订系统108的一或多个计算装置之前,ESP集群系统106可进一步处理测量数据值。
网络110可包含相同或不同类型的一或多个网络。网络110可以是任何类型的有线和/或无线公用或私用网络,包含蜂窝网络、局域网、广域网,例如因特网或万维网等等。网络110可进一步包括子网络,并由任何数目个通信装置组成。
事件发布系统102的一或多个计算装置可包含具有任何外观尺寸的计算装置,例如服务器计算机112、台式电脑114、智能电话116、笔记本电脑118、个人数字助理、集成消息传送装置、平板电脑、销售点系统、交易系统等等。事件发布系统102可包含可组织成子网络的任何数目个计算装置和计算装置的外观尺寸的任何组合。事件发布系统102的计算装置通过网络110将信号发送给事件发布系统102的一或多个计算装置中的另一个或从其接收信号,和/或将信号发送给集群管理器装置104或从其接收信号。事件发布系统102的一或多个计算装置可使用如由所属领域的技术人员理解的可以是有线和/或无线的各种传输媒体来进行通信。事件发布系统102的一或多个计算装置可彼此在地理上分散和/或共置。事件发布系统102的一或多个计算装置中的每个计算装置可执行一或多个事件发布应用程序。
为了说明,参考图2,展示了根据示例实施例的事件发布装置200的框图。事件发布装置200是事件发布系统102的实例计算装置。举例来说,服务器计算机112、台式电脑114、智能电话116和笔记本电脑118中的每一个可以是事件发布装置200的个例。事件发布装置200可包含输入接口202、输出接口204、通信接口206、计算机可读媒体208、处理器210和事件发布应用程序222。事件发布系统102的每个计算装置可执行相同或不同类型的事件发布应用程序222。
再次参考图1,事件预订系统108的一或多个计算装置可包含具有任何外观尺寸的计算机,例如智能电话120、台式电脑122、服务器计算机124、笔记本电脑126、个人数字助理、集成消息传送装置、平板电脑等等。事件预订系统108可包含任何数目个计算装置和计算装置的外观尺寸的任何组合。事件预订系统108的计算装置通过网络110将信号发送给集群管理器装置104或从其接收信号,和/或将信号发送给ESP集群系统106或从其接收信号。事件预订系统108的一或多个计算装置可彼此在地理上分散和/或共置。事件预订系统108的一或多个计算装置可使用如由所属领域的技术人员理解的可以是有线和/或无线的各种传输媒体来进行通信。事件预订系统108的一或多个计算装置中的每个计算装置可执行一或多个事件预订应用程序。
为了说明,参考图5,展示了根据示例实施例的事件预订装置500的框图。事件预订装置500是事件预订系统108的实例计算装置。举例来说,智能电话120、台式电脑122、服务器计算机124、笔记本电脑126中的每一个可以是事件预订装置500的个例。事件预订装置500可包含第二输入接口502、第二输出接口504、第二通信接口506、第二计算机可读媒体508、第二处理器510和事件预订应用程序522。事件预订系统108的每个计算装置可执行相同或不同类型的事件预订应用程序522。
再次参考图1,集群管理器装置104可包含计算装置的任何外观尺寸。为了说明,图1将集群管理器装置104表示为服务器计算机。一般来说,服务器计算机可比客户端计算机包含更快的处理器、额外处理器、更多磁盘存储器和/或更多随机存取存储器(randomaccess memory,RAM),并支持如由本领域的技术人员理解的多线程。集群管理器装置104通过网络110将信号发送给事件发布系统102或从其接收信号,和/或将信号发送给ESP集群系统106或从其接收信号,和/或将信号发送给事件预订系统108或从其接收信号。集群管理器装置104的一或多个计算装置可使用如由所属领域的技术人员理解的可以是有线和/或无线的各种传输媒体来进行通信。集群管理器装置104可实施于相同或不同类型的多个计算装置上。流处理系统100可进一步包含多个ESP集群管理器。
为了说明,参看图7,展示了根据示例实施例的集群管理器装置104的框图。集群管理器装置104可包含第三输入接口702、第三输出接口704、第三通信接口706、第三计算机可读媒体708、第三处理器710和管理器应用程序712。集群管理器装置104执行管理器应用程序712,管理器应用程序712读取管理器配置文件714和远程ESP模型716以创建管理器ESP模型718和路由器配置文件720,管理器ESP模型718和路由器配置文件720用以实例化管理器引擎722、ESP引擎(ESP engine,ESPE)管理器400m和路由器引擎724。更具体地说,在说明性实施例中,执行管理器应用程序712会实例化管理器引擎722,这如管理器ESP模型718中定义而实例化ESPE管理器400m,并如路由器配置文件720中定义而实例化路由器引擎724。管理器引擎722在ESPE管理器400m顶部上添加XML层。举例来说,管理器引擎722理解XML模型的句法并将其转移成ESPE管理器400m理解的事物。
管理器配置文件714进一步含有ESP集群系统106的远程计算装置的列表。集群管理器装置104可发指令ESP集群系统106的远程计算装置给来运行远程ESP模型716。
再次参考图1,ESP集群系统106的一或多个计算装置可包含可组织成一或多个集群的具有任何外观尺寸的计算装置。举例来说,在说明性实施例中,ESP集群系统106包含第一ESP集群系统106a和第二ESP集群系统106b。在说明性实施例中,第一ESP集群系统106a可包含第一服务器计算机128、第二服务器计算机130和第三服务器计算机132,且第二ESP集群系统106b可包含第四服务器计算机134、第五服务器计算机136和第六服务器计算机138。ESP集群系统106可包含任何数目个计算装置和计算装置的外观尺寸的任何组合。ESP集群系统106的计算装置通过网络110将信号发送给事件预订系统108的一或多个计算装置中的另一个或从其接收信号,和/或将信号发送给集群管理器装置104或从其接收信号。ESP集群系统106的一或多个计算装置可使用如由所属领域的技术人员理解的可以是有线和/或无线的各种传输媒体来进行通信。ESP集群系统106的一或多个计算装置可彼此在地理上分散和/或共置。
为了说明,参考图10,展示了根据示例实施例的ESP集群装置1000的框图。ESP集群装置1000是ESP集群系统106的实例计算装置。举例来说,第一服务器计算机128、第二服务器计算机130、第三服务器计算机132、第四服务器计算机134、第五服务器计算机136和第六服务器计算机138中的每一个可以是ESP集群装置1000的个例。ESP集群装置1000可包含第四输入接口1002、第四输出接口1004、第四通信接口1006、第四计算机可读媒体1008、第四处理器1010和远程XML/ESP应用程序1012。ESP集群系统106的每个计算装置可执行远程相同或不同类型的XML/ESP应用程序1012。ESP集群装置1000可执行实例化远程引擎A 722a的远程XML/ESP应用程序1012。远程引擎A 722a读取远程ESP模型A 716a以实例化ESPE A400a。远程ESP模型A 716a可以是远程ESP模型716的副本。替代地,远程ESP模型716可不存储于计算机可读媒体708上,而是存储于第四计算机可读媒体1008或可由ESP集群装置1000使用第四输入接口1002和/或第四通信接口1006来存取的另一计算机可读媒体。为了说明,将远程ESP模型716作为呈XML格式的ESP模型发送给ESP集群系统106。远程ESP模型716使用统一资源定位符(uniform resource locator,URL)的管理器引擎存取,以存取本地文件系统上或网页服务器上的文件。远程ESP模型A 716a也可由使用URL的ESP集群装置1000存取。为了说明,可使用文件///MODELS/sensors/model.xml存取本地文件系统上的文件,或可使用http://ESP-Models/Sensor/model.xml来从网页服务器提供一般参考。
参考图2,事件发布系统102的每个事件发布装置200可包含相同或不同组件和组件组合。更少、不同和额外组件可并入到事件发布装置200。事件发布装置200可以是物联网(Internet of Things,IoT)的部分,在物联网中事物(例如机器、装置、电话、传感器、智能能量计、个人可佩戴装置、健康监测装置、自控车辆装置、机器人组件、识别装置等等)可连接到网络,且可在所述事物内和/或所述事物外部收集并处理来自这些事物的数据。举例来说,事件发布装置200可包含一或多种类型的相同或不同传感器,且可应用高值分析以识别隐藏关系并驱动增加的效率。这可应用于大数据分析和实时分析。事件发布装置200可被称作边缘装置,并可包含边缘计算电路系统。事件发布装置200可提供多种已存储或产生的数据,例如网络数据或特定针对于网络装置本身的数据。
在一个实例应用中,ESP可用于货运行业中的预测性维护,货运行业每年负责跨2790亿英里移动约105亿吨的货物。ESP可用以预测部件故障并使卡车更久地保持在道路上。卡车可具有收集许多不同种类型的数据的数百个传感器,数据例如从油温到发动机负荷到涡轮增压。卡车上的边缘装置可允许货运公司清除它们不需要的尽可能接近源的数据,并可便于应在子第二时间帧中的切合信息上出现的动作。因此,货运公司不必通过网络移动其所有数据,或甚至在一些情形中在云端或就地存储数据。而且,通过监测、分析并对源处的数据进行过滤,当例如油温和涡轮增压数字同时迅速增加时,卡车驾驶员可即刻受到警报。ESP可用以识别此模式,这会触发需要涡轮增压器服务的警报,且在卡车发生任何主要损坏之前,卡车可固定于邻近的维护设施中。
除了在个别卡车层级处执行的边缘分析以外,还可此处对于就地或在云端运行的ESP的多相分析,其中可使得货输公司能够分析跨越卡车车队的海量数据。可通过聚合来自安装在其车队中的其卡车上的所有IoT网关数据来执行跨实体分析。
ESP可进一步用以使得货运公司能够取得其从历史数据学习的内容,训练新模型,更新现有模型,并将新或经修改模型带回到边缘(例如卡车)。可动态地执行(例如在运行中)这些操作,且同时卡车仍在道路上。
输入接口202提供用于接收如由所属领域的技术人员理解的用于进事件发布装置200入的信息的接口。输入接口202可与各种输入技术介接,包含但不限于:键盘212、鼠标214、显示器216、轨迹球、小键盘、一或多个按钮等等,以允许用户将信息键入到事件发布装置200中或进行显示器216上显示的用户界面中呈现的选择。输入接口202进一步可与例如传感器215等另一装置介接,以接收由传感器215获得的测量数据值。输入接口202进一步可与多个传感器或相同或不同类型的其它装置介接。同一接口可支持输入接口202和输出接口204两者。举例来说,包含触摸屏的显示器216既允许用户输入,又向用户呈现输出。事件发布装置200可具有使用相同或不同输入接口技术的一或多个输入接口。输入接口技术进一步可以是可由事件发布装置200通过通信接口206存取的。
输出接口204提供用于输出用于由事件发布装置200的用户检阅的信息的接口。举例来说,输出接口204可与各种输出技术介接,包含但不限于显示器216、扬声器218、打印机220等等。事件发布装置200可具有使用相同或不同输出接口技术的一或多个输出接口。输出接口技术进一步可以是可由事件发布装置200通过通信接口206存取的。
通信接口206提供用于执行以下操作的接口:使用由所属领域的技术人员理解的各种协议、传输技术和媒体来在装置之间接收和传输数据。通信接口206可使用可以是有线和/或无线的各种传输媒体来支持通信。事件发布装置200可具有使用相同或不同通信接口技术的一或多个通信接口。举例来说,事件发布装置200可使用以太网端口、蓝牙天线、电话插孔、USB端口等等来支持通信。可使用通信接口206来在事件发布装置200与集群管理器装置104之间传送数据和消息。
计算机可读媒体208是信息的非暂时性电子固持点或存储装置,因此信息可由由所属领域的技术人员理解的处理器210存取。计算机可读媒体208可包含但不限于任何类型的随机存取存储器(random access memory,RAM)、任何类型的只读存储器(read onlymemory,ROM)、任何类型的快闪存储器等等,例如磁性存储装置(例如硬盘、软盘、磁条...)、光盘(例如压缩光盘(compact disc,CD)、数字影音光盘(digital versatile disc,DVD)...)、智能卡、快闪存储器装置等等。事件发布装置200可具有使用相同或不同存储器媒体技术的一或多个计算机可读媒体。举例来说,计算机可读媒体208可包含如由本领域的技术人员理解的可分层组织以提供对在其中存储的数据的有效率存取的不同类型的计算机可读媒体。作为实例,高速缓冲可实施于更小、更快的存储器中,所述存储器存储来自最频繁/最近存取的主存储器位置的数据的副本以减小存取时延。事件发布装置200还可具有支持负载例如CD或DVD等存储器媒体的一或多个驱动器、外部硬盘驱动器等等。一或多个外部硬盘驱动器进一步可使用通信接口106来连接到事件发布装置200。
处理器210执行如由所属领域的技术人员理解的指令。指令可由专用计算机、逻辑电路或硬件电路执行。处理器210可以硬件和/或固件实施。处理器210执行指令,这意味着其执行/控制由那个指令要求的操作。术语“执行”为运行应用程序或进行由指令要求的操作的过程。可使用一或多种编程语言、脚本语言、汇编语言等来编写指令。处理器210以可操作方式与输入接口202、与输出接口204、与通信接口206和与计算机可读媒体208耦合,以接收、发送和处理信息。处理器210可从永久存储器装置撷取一组指令,并以可执行形式将所述指令复制到大体上是某种形式的RAM的临时存储器装置。事件发布装置200可包含使用相同或不同处理技术的多个处理器。
事件发布应用程序222执行与以下动作相关联的操作:产生、捕获和/或接收测量数据值,并通过集群管理器装置104和/或ESP集群系统106的一或多个计算装置将在事件流中将测量数据值直接或间接发布给事件预订系统108的一或多个计算装置。可使用硬件、固件、软件或这些方法的任何组合来实施所述操作。参考图2的实例实施例,事件发布应用程序222以存储于计算机可读媒体208中的软件(由计算机可读计算机可读和/或计算机可执行指令组成)实施,并可由处理器210存取来执行体现事件发布应用程序222的操作的指令。可使用一或多种编程语言、汇编语言、脚本语言等等来编写事件发布应用程序222。
事件发布应用程序222可实施为网页应用程序。举例来说,事件发布应用程序222可经配置以接收超文本传输协议(hypertext transport protocol,HTTP)响应并发送HTTP请求。HTTP响应可包含网页,例如响应与HTTP请求所产生的超文本标记语言(hypertextmarkup language,HTML)文档和链接对象。每个网页可由包含计算装置的位置或地址的URL标识,所述位置或地址含有待存取的资源以及那个计算装置上的资源的位置。文件或资源的类型取决于因特网应用程序协议,例如文件传输协议、HTTP、H.323等等。所存取文件可以是简单文本文件、图像文件、音频文件、视频文件、可执行程序、通用网关接口应用程序、Java小程序、XML文件、或由HTTP支持的任何其它类型的文件。
参考图3,描述了与事件发布应用程序222相关联的实例操作。可取决于实施例而执行额外、更少或不同操作。图3的操作的呈现次序并不意图是限制性的。以可由用户选择的次序,用户可独立地或通过浏览器应用程序与在处于事件发布应用程序222的控制下的显示器中呈现给用户一或多个用户接口窗口交互。虽然操作流程中的一些依序呈现,但是可以各种重复、同时和/或以与除所说明以外的次序执行各种操作。举例来说,用户可执行致使呈现第一用户界面窗口的事件发布应用程序222,第一用户界面窗口可包含与如由本领域的技术人员理解的事件发布应用程序222相关联的多个菜单和选择器,例如下拉菜单、按钮、文本框、超链接等等。如由本领域的技术人员进一步理解,举例来说,使用多个线程或多个计算装置,例如计算装置的网格或云端,可并行地执行各种操作。
在操作100中,查询ESPE 400,例如以探索项目402、连续查询404、窗口406、408、窗口模式和目前在ESPE 400中运行的窗口边缘。举例来说,参考图4,展示了根据说明性实施例的ESPE 400(例如ESPE管理器400m和ESPE A 400a)的组件。在说明性实施例中,事件发布装置200查询ESPE管理器400m。ESPE 400可包含一或多个项目402。项目可被描述为由ESPE400管理的引擎模型中的第二层级容器,其中项目线程集区大小可由用户定义。线程集区大小的一的值指示编写是单线程的。一或多个项目402中的每个项目可包含含有数据流的一或多个连续查询404,数据流是传入的事件流的数据变换。一或多个连续查询404可包含一或多个源窗口406和一或多个导出窗口408。
引擎容器是管理一或多个项目402的资源的模型中的最高阶容器。举例来说,在说明性实施例中,存在用于所执行ESP模型的每个个例的单个ESPE 400。每个ESPE 400具有唯一引擎名称。此外,一或多个项目402可各自具有唯一项目名称,且每个查询可具有唯一连续查询名称并以一或多个源窗口406中的唯一地命名的源窗口开始。每个ESPE 400可或可不是持久的。每个ESPE 400是唯一过程,因此项目/查询/窗口不必唯一地命名。项目/查询/窗口由ESPE特定的TCP/IP连接件上接收到的唯一输入流区分开。
连续查询模型化涉及定义事件流操纵和变换的窗口的定向图。事件流操纵和变换的上下文中的窗口是事件流处理模型中的处理节点。连续查询中的窗口可执行聚集、计算、图案匹配和对流经窗口的数据的其它操作。连续查询可被描述为源、关系、图案匹配和过程化视窗的定向图。一或多个源窗口406和一或多个导出窗口408表示连续地实行在新事件块流输出穿过ESPE 400时向查询结果集合产生更新的查询。举例来说,定向图是由边缘连接的节点的集合,其中边缘具有与边缘相关联的方向。
事件对象可被描述为可作为字段集合存取的数据包,字段中的至少一个被定义为关键标识符或唯一标识符(identifier,ID)。事件对象可以是事件流的个别纪录。可使用多种格式来创建事件对象,格式包含二元、字母数字、XML等等。每个事件对象可包含指定为事件的主要ID的一或多个字段,因此ESPE 400可支持用于包含插入、更新、更新或插入和删除的事件的操作码。因此,进入一或多个源窗口406中的源窗口的事件可指示为插入(I)、更新(U)、删除(D)或更新或插入(P)。
为了说明,事件对象可以是一或多个传感器测量的封装二元表示,并可包含与时戳值相关联的元数据和测量数据两者。元数据可包含:指示事件是否表示插入、更新、删除或更新或插入的操作码、指示事件是否是正常、部分更新或来自保持策略管理的保持产生事件的旗标的集合、和可用于潜时测量的微秒时间戳的集合。举例来说,一或多个微秒时间戳可指示传感器数据产生时间、事件发布装置200的数据接收时间、事件发布装置200的数据传输时间、ESPE管理器400m或ESPE A 400a的数据接收时间等等。
事件块对象可被描述为事件对象的分组或封装。事件流可被描述为事件块物件对象的流动。一或多个连续查询404中的连续查询使用一或多个源窗口406和一或多个导出窗口408来将由发布ESPE 400中的流式传输事件块对象组成的传入事件流变换成一或多个传出事件流。连续查询还可被认为是数据流模型化。
一或多个源窗口406在定向图的顶部处,且不具有馈送到其中的窗口。事件流发布一或多个源窗口406中,且从此处,事件流被导引到连接式窗口的下一集合,如由定向图定义。一或多个导出窗口408全部是不是源窗口且具有将事件流式传输到其中的其它窗口的实例化窗口。一或多个导出窗口408可对传入的事件流执行计算或变换。一或多个导出窗口408基于窗口类型(即运算符,例如接合、过滤、计算、聚合、复制、图案匹配、程序化、并集等)和窗口设置而变换事件流。当事件流发布ESPE 400中时,连续地查询事件流,且连续地更新这些查询中的导出窗口的所得集合。
再次参考图3,引擎名称和到ESPE 400的主机/端口可作为输入提供给查询,且字串的列表可与项目402的名称、连续查询404的名称、窗口406、408的名称、窗口模式的名称和/或ESPE 400的目前运行的项目的窗口边缘的名称一起返回。主机与集群管理器装置104的主机名或因特网协议(Internet Protocol,IP)地址相关联。端口是在发布/预订(pub/sub)能力由ESPE 400初始化时提供的端口数。引擎名称是ESPE 400的名称,例如ESPE管理器400m的引擎名称。ESPE 400的引擎名称和到集群管理器装置104的主机/端口可从计算机可读媒体208是的存储位置读取,可在命令行上提供,或以其它方式输入到如由本领域的技术人员理解的事件发布应用程序222或由其定义。
在操作302中,初始化发布服务。
在操作304中,开始初始化的发布服务,这可创建用于实例化事件发布应用程序222的发布客户端。发布客户端为实例化事件发布应用程序222执行各种pub/sub活动。举例来说,将URL到ESPE 400的串表示传递到“start”函数。举例来说,URL可包含在集群管理器装置104上执行ESPE管理器400m的host:port名称、项目402中的项目、连续查询404中的连续查询、和源窗口406中的窗口。“start”函数可确认并保持具体发布客户端连接的连接参数,并将指标返回到所述发布客户端。为了说明,URL可格式化为“dfESP://<host>:<port>/<project name>/<continuous query name>/<source window name>”。如果事件发布应用程序222发布到ESPE管理器400m的多于一个源窗口,那么可使用相关联名称(项目名称、连续查询名称、源窗口名称)来向每个源窗口开始初始化的发布服务。
pub/sub是基于间接寻址的消息定向互动范式。预订者(例如集群管理器装置104、ESP集群装置1000、事件预订装置500)通过预订具体等级的事件来表示其对从ESPE 400接收信息的兴趣,而信息源(事件发布装置200、集群管理器装置104、ESP集群装置1000)将事件发布到ESPE 400,而不直接寻址接收方。流处理系统100包含ESPE管理器400m,ESPE管理器400m从在事件发布系统102的事件发布装置200上执行的事件发布应用程序222接收事件,并将经处理事件发布到ESP集群系统106的ESP集群装置1000的ESPE A 400a。ESP集群系统106的ESP集群装置1000的ESPE A 400a从ESPE管理器400m接收事件,并将经进一步处理的事件发布到事件预订系统108的事件预订装置500的事件预订应用程序522。
在操作306中,对于源窗口406中的向其发布任何测量数据值的每个源窗口,在事件发布应用程序222同一ESPE 400之间进行连接,ESPE 400例如在集群管理器装置104上执行的ESPE管理器400m。为了进行连接,到所创建发布客户端的指标可传递到“连接”函数。如果事件发布应用程序222发布到ESPE 400的多于一个源窗口,那么可使用对于相应“start”函数调用返回的指标来进行到每个已开始窗口的连接。
在操作308中,通过包含测量数据值的事件发布应用程序222创建事件块对象。举例来说,可能已通过通信接口206或输入接口202或通过处理器210接收、捕获、产生等等测量数据值。测量数据值可在被包含于事件块对象中之前得以处理,例如以改变量度单位,转换成不同参考系统等等。事件块对象可包含在不同时间处和/或由不同装置测量的多个测量数据值。
在操作310中,举例来说,使用对于相应“start”函数调用返回到适当源窗口的指标,将所创建事件块对象发布到ESPE 400。事件发布应用程序222将所创建事件块对象传递到所创建发布客户端,其中可能在从所创建发布客户端请求之后,事件块对象中的唯一ID字段已由事件发布应用程序222设定。在说明性实施例中,事件发布应用程序222可等待开始发布,直到已从所创建发布客户端接收到“就绪”回呼为止。事件块对象被注入到源窗口、连续查询和与已开始发布客户端相关联的项目中。
在操作312中,进行关于是否停止处理的确定。如果处理未停止,那么处理在操作308中继续以继续创建并发布包含测量数据值的事件块对象。如果处理已停止,那么处理在操作314中继续。
在操作314中,断开通过所创建发布客户端在事件发布应用程序222与ESPE 400之间进行的连接,并停止每个已开始发布客户端。
参看图5,更少、不同和额外组件可并入到事件预订装置500中。事件预订系统108的每个事件预订装置500可包含相同或不同部件或组件组合。
第二输入接口502提供与参考事件发布装置200的输入接口202描述的功能性相同或类似的功能性,但要参考事件预订装置500。第二输出接口504提供与参考事件发布装置200的输出接口204描述的功能性相同或类似的功能性,但要参考事件预订装置500。第二通信接口506提供与参考事件发布装置200的通信接口206描述的功能性相同或类似的功能性,但要参考事件预订装置500。可使用第二通信接口506来在事件预订装置500与集群管理器装置104和/或ESP集群106之间传送数据和消息。第二计算机可读媒体508提供与参考事件发布装置200的计算机可读媒体208描述的功能性相同或类似的功能性,但要参考事件预订装置500。第二处理器510提供与参考事件发布装置200的处理器210描述的功能性相同或类似的功能性,但要参考事件预订装置500。
参考图6,描述了与事件预订应用程序512相关联的实例操作。可取决于实施例而执行额外、更少或不同操作。图6的操作的呈现次序并不意图是限制性的。
类似于操作300,在操作600中,查询ESPE 400,例如以探索项目402的、连续查询404的、窗口406、608的、窗口模式的和目前在ESPE 400中运行的窗口边缘的名称。执行ESPE400的装置的主机名、ESPE 400的引擎名称和由ESPE 400打开的端口数作为输入提供给查询,且字串的列表可与所述名称一起返回到项目402、连续查询404、窗口406、608、窗口模式和/或窗口边缘。因为事件预订装置500连接到ESP集群系统106的ESP集群装置1000的ESPEA 400a,所以ESP集群装置1000的主机名和ESP集群装置1000的ESPE A 400a对其支持pub/sub的端口数可作为输入提供给查询。
在操作602中,初始化预订服务。
在操作604中,开始初始化的预订服务,这可代表事件预订装置500处的事件预订应用程序512创建预订客户端。预订客户端为事件预订应用程序512执行各种pub/sub活动。举例来说,到ESPE 400的URL,例如到ESP集群系统106的ESP集群装置1000的ESPE A 400a的URL,可被传递到“start”函数。“start”函数可确认并保持具体预订客户端连接的连接参数,并将指标返回到所述预订客户端。为了说明,URL可格式化为“dfESP://<host>:<port>/<project name>/<continuous query name>/<window name>”。
在操作606中,可通过所创建预订客户端在在事件预订装置500上执行的事件预订应用程序512与ESPE A 400a之间进行连接。为了进行连接,到所创建预订客户端的指标可被传递到“连接”函数和被创建以等待事件块对象的接收的主要非忙等待回路。举例来说,可进行到ESP集群系统106的一或多个计算装置的连接。
在操作608中,通过在事件预订装置500上执行的事件预订应用程序512接收事件块对象。
在操作610中,基于由事件预订应用程序512提供的操作功能性而处理接收到的事件块对象。举例来说,事件预订应用程序512可从接收到的事件块对象提取数据,并将所提取数据存储在数据库中。另外或在替代方案中,事件预订应用程序512可从接收到的事件块对象提取数据,并将所提取数据发送到系统控制操作者显示系统、自动控制系统、通知装置、分析装置等等。另外或在替代方案中,事件预订应用程序512可从接收到的事件块对象提取数据,并将所提取数据发送到后注入分析装置以进一步分析所述数据。由于从接收到的事件块对象提取数据,事件预订应用程序512可执行任何数目种不同类型的动作。所述动作可涉及在第二显示器516或第二打印机520上呈现信息、使用第二扬声器518来呈现信息、在第二计算机可读媒体522中存储、使用第二通信接口506来将信息发送到另一装置等等。用户可进一步使用第二鼠标514和/或第二键盘512来与所呈现信息交互。
在操作612中,进行关于是否停止处理的确定。如果处理未停止,那么处理在操作608中继续以继续接收并处理事件块对象。如果处理已停止,那么处理在操作614中继续。
在操作614中,断开通过预订客户端在事件预订应用程序512与ESPE A 400a之间进行的连接,并停止预订客户端。
参看图7,更少、不同和额外组件可并入到集群管理器装置104中。集群管理器装置104接收包含来自事件发布系统102的测量数据值的事件块对象。在接收事件块对象之前,ESPE管理器400m可在集群管理器装置104上执行。虽然未展示,但是第三计算机可读媒体708可为接收到的事件块对象提供电子存储媒体。
第三输入接口702提供与参考事件发布装置200的输入接口202描述的功能性相同或类似的功能性,但要参考集群管理器装置104。第三输出接口704提供与参考事件发布装置200的输出接口204描述的功能性相同或类似的功能性,但要参考集群管理器装置104。第三通信接口706提供与参考事件发布装置200的通信接口206描述的功能性相同或类似的功能性,但要参考集群管理器装置104。可使用第三通信接口706来在集群管理器装置104与事件发布系统102、ESP集群系统106和/或事件预订系统108之间传送数据和消息。第三计算机可读媒体708提供与参考事件发布装置200的计算机可读媒体208描述的功能性相同或类似的功能性,但要参考集群管理器装置104。第三处理器710提供与参考事件发布装置200的处理器210描述的功能性相同或类似的功能性,但要参考集群管理器装置104。
管理器应用程序712执行与以下动作相关联的操作:通过ESP集群系统106的一或多个计算装置协调事件发布系统102与事件预订系统108之间的事件流流动。可使用硬件、固件、软件或这些方法的任何组合来实施所述操作。参考图7的实例实施例,管理器应用程序712以存储于第三计算机可读媒体708中的软件(由计算机可读计算机可读和/或计算机可执行指令组成)实施,并可由第三处理器710存取来执行体现管理器应用程序712的操作的指令。可使用一或多种编程语言、汇编语言、脚本语言等等来编写管理器应用程序712。管理器应用程序712可实施为网页应用程序。
举例来说,使用为一组类别提供成员函数的模型化应用程序编程接口(API),可开发管理器应用程序712。作为实例,由美国·北卡罗莱纳州·卡里的SAS Institute Inc.开发并提供的ESP引擎提供为一组类别提供成员函数的模型化API。这些函数使得管理器应用程序712能够实例化管理器引擎722,并将可能具有专用线程集区的ESPE管理器400m嵌入到其自有过程空间中。替代地,举例来说,使用SAS ESP的C++模型化层,可将ESPE管理器400m嵌入到管理器引擎722的过程空间中。在那种状况下,管理器引擎722聚焦于其自有杂事,并视需要与ESPE管理器400m交互。
为了进一步说明,可使用对于ESP定义的XML层来实施管理器应用程序712。XML层使得能够以动态项目创建和删除定义ESPE管理器400m。举例来说,管理器引擎722一XML客户端可将从远程ESP模型716读取的定义馈送到在ESP集群系统106的例如ESP集群装置1000等计算装置上执行的远程引擎A 722a中。
远程ESP模型716可设计成对来自事件发布系统102的事件流执行实时分析,并将结果提供给事件预订系统108。ESP的说明性用例包含但不限于传感器数据监测和管理、诈骗检测和预防、网络安全性分析、操作系统监测和管理、资本市场交换系统等等。ESPE400(例如ESPE A 400a、ESPE管理器400m)XML模型的基本句法是:
<engine>是ESPE 400的全局包装器,其可例如以“engine name=nameStringport=portNumber”形式包含引擎名称和出版/预订端口数作为ESPE 400的属性。为了说明,<engine name='myanalysis'port='31417'>可指定用于引擎,其中31417指定用于被命名为“myanalysis”的ESPE 400的pub/sub端口。<engine>的其它参数可包含零或多个http服务器和零或多个esp路由器,其中<http-servers>是HTTP服务器元素的容器,且<esp-routers>是ESP路由器元素的容器。
HTTP服务器元素可包含例如由“http-admin-server”指示的管理服务器,或例如由“http-pubsub-server”指示的pub/sub服务器。为了说明,
指定具有端口数46001的管理服务器和具有端口数46002的pub/sub服务器。管理服务器端口数定义帮助XML服务器(例如管理器引擎722、远程引擎A 722a)接收HTTP请求的端口。举例来说,端口数定义帮助远程引擎A 722a从管理器引擎722接收HTTP请求的定义端口。pub/sub服务器端口数定义帮助ESPE A 400a从ESPE管理器400m接收事件块对象的端口。视需要可定义安全性信息以通过端口提供存取。
ESP路由器是用以集成ESPE管理器400m与ESPE A 400a的机构。ESP路由器跨ESP C++pub/sub API添加XML配置层以实现此集成。ESP路由器配置可在如上所示的<engine>元素底下直接嵌入于XML服务器模型配置中,这会将ESP路由器元素直接嵌入到ESPE管理器400m中。替代地,可在模型中单独地定义ESP路由器配置,以运行仅用作使用pub/sub API的ESP路由器的XML服务器。可通过ESP代表性状态传送(REST)API动态地管理路由器引擎724。
下文对于ESP路由器元素的容器显示ESP路由器配置的说明性XML文件模式,其中“element”定义XML元素,“attribute”定义XML属性,“name=....”定义取代规则,根节点使用"start="规范,“?”指示可选,“*”指示零或多个,“+”指示一或多个:
“name”属性提供路由器引擎的名称,例如路由器引擎724的名称。“http-servers”元素指定的管理服务器(“http-admin-server”),管理服务器具有定义管理服务器的端口数的“port”属性且具有可选可选安全套接字层(secure sockets layer,SSL)元素“ssl_t”和pub/sub服务器(“http-pubsub-server”),具有定义pub/sub服务器的端口数的“port”属性且具有可选SSL元素“ssl_t”。“port”属性定义路由器引擎724的端口数。“router_t”参数是一或多个ESP路由器元素的容器元素。
说明性XML文件模式可进一步包含可基于下式而定义的模式/输出名称的正则表达式的定义:
name_t=(xsd:string{pattern="[\i][\i\d]*"})
int_t=(xsd:string{pattern="[\d]*"})
说明性XML文件模式可进一步包含可基于下式而定义的可选SSL元素的定义:
说明性XML文件可进一步包含可基于下式而定义的引擎个例规范的定义:
其中“name”属性是ESPE A 400a的名称,“host”属性是执行ESPE A 400a的装置的主机名,“port”属性是到执行ESPE A 400a的装置的pub/sub端口数,且“ha_port”属性是到执行ESPE A 400a的装置的管理服务器的端口数。举例来说,使用“ha_port”属性来发送HTTP请求;而使用“port”属性来发送经发布事件。
说明性XML文件模式可进一步包含可基于下式而定义的时间参数的定义:
说明性XML文件模式可进一步包含可基于下式而定义的操作码的定义:
opcode_t=('insert'|'update'|'delete'|'upsert'|'safedelete')
说明性XML文件模式可进一步包含可基于下式而定义的每个路由器元素的定义:
“ping-interval”属性定义路由器元素通告ESPE A 400a以确认ESPE A 400a尚未发生故障的频率。“esp-router”元素定义路由器元素的组件,例如路由器引擎724。“name”属性定义路由器个例的名称。“primary-retries”属性定义,当尝试重新连接到发生故障的ESPE A 400a时,在使用由“secondary-retry-interval”属性定义的较慢重试间隔之前,在ESPE A 400a已发生故障之后执行通告尝试的次数。举例来说,如果“primary-retries”属性被指定为十,那么在尝试重新连接十次之后,“secondary-retry-interval”属性用以定义后续重建连接尝试的时间间隔,这是因为发生故障的ESPE A 400a可能停机一段时间,因此尝试重新连接之间的时间间隔可能增大。“output-stats-interval”属性指定应输出与执行路由器元素相关的数据的频率。
说明性XML文件模式可进一步包含可基于下式而定义的每个ESPE A 400a元素的定义:
“esp-engines”元素是ESPE A 400a的容器。“esp-engine”元素囊封ESPE A 400a。“name”属性定义ESPE A 400a的名称。“host”属性定义ESPE A 400a的端口。“port”属性定义ESPE A 400a的端口数。“auth-token”元素定义用于连接到ESPE A 400a的验证令牌。“auth-token-url”元素定义用于连接到ESPE A 400a的验证令牌URL。
说明性XML文件模式可进一步包含可基于下式而定义的每个目的地ESPE A 400a的定义:
“esp-destinations”元素是用于可向其发布路由器元素的源窗口的容器。“publish-destination”元素囊封路由器元素发布的源窗口定义,包含目的地的名称、事件块对象的操作码、用以确定是否应向源窗口发布事件块对象的过滤函数、以及项目、连续查询和源窗口名称。“engine-func”元素定义用以解析目标ESPE A 400a的函数,并必须解析以匹配<esp-engine>元素中定义的ESPE A 400a中的一个的“name”的值。“project-func”元素定义用以解析ESPE A 400a的目标项目的函数,并必须解析以匹配经解析引擎中的项目的名称的值。“contquery-func”元素定义用以解析ESPE A 400a的项目的目标连续查询的函数,并必须解析以匹配经解析项目中的连续查询的名称的值。“window-func”元素定义用以解析ESPE A 400a的项目的连续查询的目标源窗口的函数,并必须解析以匹配经解析连续查询中的源窗口的名称的值。“event-fields”元素是保持通过添加新字段或修改字段来支持增强事件块对象的函数的容器。
“writer-destination”元素定义文件接收器。而非使用“publish-destination”元素来向完全限定的源窗口发布事件,事件块对象可写入到具有目的地的名称、指定格式和日期格式的计算机可读媒体。“file-func”元素定义用以解析向其中写入事件块对象的文件的名称,写入包含向控制台写入。使用“file-func”元素,“writer-destination”元素可从事件块对象的内容产生输出文件名。
说明性XML文件模式可进一步包含可基于下式而定义的每个路由的定义:
“esp-route”元素是路由的容器。“esp-routes”元素描述由预订信息连同向其发送接收到的事件块对象的目的地组成的路由。正规表达式可用以指定路由预订的窗口。可针对每个层级的阶层(使用“engine-expr”的引擎名称、使用“project-expr”的项目名称、使用“contquery-expr”的连续查询名称、使用“window-expr”的窗口名称和使用“type-expr”的窗口类型)指定正规表达式。表达式可选。对于未对于其指定表达式的任何层级,路由使用那个实体的所有可用个例。因此,当未指定表达式时,路由预订所有引擎中的所有项目中的所有连续查询中的所有窗口。
“esp-route”元素定义路由。“name”属性定义路由的名称。“to”属性定义匹配“publish-destination”元素或“writer-destination”元素的名称值的目的地元素的逗号分离的列表。“engine-expr”、“project-expr”、“contquery-expr”和“window-expr”元素定义从其接收事件区块对象的路由器引擎724的ESPE管理器400m的一或多个窗口,这是因为路由器引擎724已预订窗口。“type-expr”元素定义每个窗口的类型,例如源窗口、过滤窗口、接合窗口等等。“snapshot”属性指示事件块对象是否包含状态快照。举例来说,创建在下文进一步描述的路由器配置文件720,以基于<esp-routers>的以上XML模式而单独地在模型中实例化路由器引擎724。
返回到远程ESP模型716的XML句法,<projects>可以是用于由ESPE A 400a定义的一或多个项目402的一或多个项目元素的列表的容器。通过标识执行与连接性属性和一或多个项目402的每个待执行项目的一或多个连续查询404的列表,<project>定义一或多个项目402的项目。<project>可包含项目名称属性、线程属性、pub/sub模式属性、pub/sub端口数属性等等。线程属性定义线程集区大小。pub/sub模式属性选项可包含“无(none)”、“自动(auto)”和“手动(manual)”。当指定“自动”或“手动时,pub/sub端口数属性指定端口数。为了说明,可针对项目指定<project name='analysis'threads='16'pubsub='manual'port='31417'>。
<contqueries>可以是用于一或多个连续查询404的一或多个连续查询元素的列表的容器。每个<contquery>定义项目的一或多个连续查询404的连续查询,并包含窗口和边缘。<contquery>可包含连续查询名称属性、窗口属性等等。
<windows>是一或多个窗口类型元素的容器。说明性窗口型元素可包含“aggregate”、“compute”、“copy”、“counter”、“filter”、“functional”、“join”、“notification”、“pattern”、“procedural”、“source”、“textCategory”、“textContext”、“textSentiment”、“union”等等为了说明,下文可指定窗口类型元素:
每个窗口类型可包含窗口类型名称属性、窗口类型的pub/sub模式以及基于窗口类型的其它属性。以下是窗口类型的列表:
●“source”类型窗口指定连续查询的源窗口。事件流通过被发布或注入到源窗口中来进入连续查询。
●“compute”类型窗口定义计算窗口,其使得能够通过对输入事件流字段的计算操纵将输入事件一对一变换成输出事件。
●“copy”类型窗口进行对父窗口的复制,这可适用于设定新事件状态保持策略。可在源和复制窗口中设定保持策略,且可在超出窗口保持策略时删除事件。
●“aggregate”类型窗口类似于计算窗口,这是因为计算出非关键字段。聚合窗口使用关键字段或分组条件的字段。唯一关键字段组合在聚合窗口内形成其自有群组,使得具有相同关键组合的事件是同一群组的部分。
●“计数器”类型窗口对流式传输通过的事件进行计数,以监测正处理事件的数目和速率。
●“filter”类型窗口指定具有确定允许哪些输入事件进入过滤器窗口的暂存的布尔型过滤函数或表达式的窗口。
“functional”类型窗口指定用以操控或变换事件中的数据的不同类型的功能。功能窗口中的字段可以是阶层式的,这可适用于例如网页分析等应用。
●“join”类型窗口取得两个输入窗口和一个连接类型窗口。连接窗口支持一到多、多到一个或多到多的等值连接。可支持内部和外部内部两者。
●“notification”类型窗口通过电子邮件、文本或彩信发送通知。可指定任何数目个递送频道以发送通知。通知窗口使用相同潜在语言并充当功能窗口。
●“pattern”类型窗口使得能够检测所关注事件。此窗口类型中定义的模式是在逻辑上连接所关注的声明事件的表达式。举例来说,为了定义“pattern”窗口,使用例如"AND"、"OR"、"FBY"、"NOT"、"NOTOCCUR"和"IS"等运算符来定义并连接所关注的事件。运算符可接受可选时间条件。
●“procedural”类型窗口使得能够为每个输入窗口(即事件流)指定任意数目个输入窗口和输入处理函数。
●“textCategory”窗口使得能够对传入事件中的文本字段进行分类。文本字段可产生具有计分的零或多个类别。
●“textContext”窗口使得能够从非结构化串字段提取已分类项。此窗口类型可用以分析来自事件输入的串字段以找到已分类项。可通过其它窗口类型分析从那些术语产生的事件。举例来说,模式窗口可在“textContext”窗口之后以寻找所关注的高频模式。
●“textSentiment”窗口确定指定的传入文本字段中的文本的感受和其发生的机率。感受值是“正”、“中性”或“负”。机率是介于0与1之间的值。
●“union”窗口指定合并一或多个流与相同模式的简单连接。
<edges>是一或多个边缘元素的容器。<edge>指定两个或更多个窗口之间的连接性以定义ESPE A 400a的定向图流动。<edge>可包含各自定义使用窗口类型名称属性来定义的窗口名称源名称属性和目标名称属性。为了说明,下文可指定边缘:
管理器应用程序712可为用户提供REST API层以查询管理器配置文件714、远程ESP模型716、管理器ESP模型718和路由器配置文件720中描述的信息并查询ESPE管理器400m和/或ESPE A 400a的状态。举例来说,使用REST API,用户可创建、删除、修改和/或检索与以下各项相关的信息:ESPE管理器400m和/或ESPE A 400a的一或多个项目402、一或多个连续查询404、一或多个源窗口406和/或一或多个导出窗口408。用户可进一步开始并停止一或多个项目402中的项目。用户又另外可将事件注入到ESPE管理器400m和/或ESPE A400a中,并从ESPE管理器400m和/或ESPE A 400a检索事件。
管理器应用程序712提供从边缘装置(事件发布系统102)到可包含云端装置的ESP集群系统106的ESPE A 400a的源映射。通过管理连接器与ESPE A 400a之间的映射,管理器应用程序712便于在云端弹性地部署ESP并使大型部署更容易。举例来说,管理器应用程序712支持将事件流处理作为服务部署到在云端创建并管理硬件资源的云平台。
可在ESP集群系统106的虚拟机上供应ESPE A 400a。举例来说,使用例如“$DFESP_HOME/bin/dfesp_xml_server-pubsub 5575-http-pubsub 5577-http-admin 5576”等命令,ESPE A 400a可在其管理和pub/sub端口打开(还被称作工厂服务器)的情况下各自运行远程引擎722a。使用对于“-http-admin”输入参数指定的端口数port,ESPE A 400a可从ESPE管理器400m接收HTTP请求并对HTTP请求作出响应。使用对于“-http-pubsub”输入参数指定的端口数port来定义到ESP集群系统106上执行的HTTP服务器的pub/sub命令的端口。在替代性实施例中,管理命令的端口和pub/sub命令的端口可使用同一端口。“-http-admin”输入参数和“-http-pubsub”输入参数与HTTP服务器元素<http-servers>相关联。使用对于“-pubsub”输入参数指定的端口数port来定义到ESPE A 400a的pub/sub命令的端口。在替代性实施例中,命令行参数可默认定义、由用户通过用户界面输入等等。
在供应ESPE A 400a作为工厂服务器之后,可控制管理器应用程序712以:
●通过到HTTP服务器的管理REST API将项目部署到ESPE A 400a;
●以编排方式开始事件发布系统102的一或多个数据源;
●流式传输用于通过ESPE管理器400m的pub/sub API处理并分析的事件;以及
●动态地添加或移除ESP集群系统106的ESPE A 400a。
参考图8,描述了与管理器应用程序712相关联的实例操作。管理器应用程序712定义来自事件发布系统102的传入的事件流如何变换成由ESP集群系统106且最终由事件预订系统108消耗的有意义的传出事件流。可取决于实施例而执行额外、更少或不同操作。图8的操作的呈现次序并不意图是限制性的。
在操作800中,处理命令行。为了说明,为了开始对管理器应用程序712的执行,用户可执行对集群管理器装置104执行以下命令:“dfesp_am_server-http-admin port-pubsub port-adapter-manager modelfile<-auth><-output-projects file1><-output-routers file2>”。对命令的执行在集群管理器装置104上开始XML服务器,并触发对由编译管理器应用程序712创建的二进制文件“dfesp_am_server”的执行。使用对于“-http-admin”输入参数指定的端口数port,由“dfesp_am_server”实例化的管理器引擎722可从用户计算装置HTTP请求接收并对HTTP请求作出响应。管理器引擎722向用户计算装置发送响应,响应可在用户计算装置的显示器上和/或集群管理器装置104的显示器上出现。使用对于“-adapter-manager”输入参数指定的modelfile来指定管理器配置文件714的名称和位置。使用对于“-pubsub”输入参数指定的端口数port来定义用于pub/sub命令的端口。在替代性实施例中,命令行参数可默认定义、由用户通过用户界面输入等等。
可选“-auth”输入参数使得能够对集群管理器装置104认证用户。可选“-output-projects”输入参数触发将管理器ESP模型718写入到file1来在集群管理器装置104上手动执行以实例化ESPE管理器400m。可选“-output-routers”输入参数触发将路由器配置文件720写入到file2来在集群管理器装置104上手动执行以实例化路由器引擎724。
在操作802中,读取管理器配置文件714。为了说明,管理器配置文件714可定义经剖析以定义各种参数的XML文件,所述参数经处理以动态地控制由管理器应用程序712执行的操作并创建管理器ESP模型718和路由器配置文件720。下文展示了说明性XML文件模式,其中“element”定义XML元素,“attribute”定义XML属性,“name=....”定义取代规则,根节点使用"start="规范,“?”指示可选,“*”指示零或多个,“+”指示一或多个:
“name”属性提供管理器引擎722的名称。“http-servers”元素指定的管理服务器(“http-admin-server”),管理服务器具有定义管理服务器的端口数的“port”属性且具有可选SSL元素“ssl_t”和pub/sub服务器(“http-pubsub-server”),具有定义pub/sub服务器的端口数的“port”属性且具有可选SSL元素“ssl_t”。“managers_t”参数是用于一或多个管理器引擎元素的容器元素。
用以定义管理器配置文件714的说明性XML文件模式可进一步包含同样可基于下式定义的模式/输出名称的正则表达式的定义:
name_t=(xsd:string{pattern="[\i][\i\d]*"})
int_t=(xsd:string{pattern="[\d]*"})
用以定义管理器配置文件714的说明性XML文件模式可进一步包含同样可基于下式定义的可选SSL元素的定义:
用以定义管理器配置文件714的说明性XML文件模式可进一步包含同样可基于下式定义的引擎个例规范的,例如ESPE A 400a的定义:
其中“name”属性是ESPE A 400a的名称,“host”属性是执行ESPE A 400a的装置的主机名,“port”属性是到执行ESPE A 400a的装置的pub/sub端口数,且“ha_port”属性是到执行ESPE A 400a的装置的管理服务器的端口数。举例来说,使用“ha_port”属性来发送HTTP请求;而使用“port”属性来发送经发布事件。
用以定义管理器配置文件714的说明性XML文件模式可进一步包含同样可基于下式定义的名称/值对的属性列表的定义:
用以定义管理器配置文件714的说明性XML文件模式可进一步包含可基于description_t元素描述{文本}而定义的嵌入式文本注释的定义。
引擎的“managers_t”参数是顶部层级容器,其中基于下式而使用“esp-cluster-managers”元素来定义待由管理器引擎722创建并控制的管理器ESP模型718:
“name”属性指定管理器引擎722、集群管理器个例的名称。“output-stats-interval”属性指定应输出与执行管理器引擎722相关的数据的频率。“projects”元素指定在处于管理器引擎722控制下的ESP集群系统106上执行的一或多个项目402。“raw-sources”元素定义处于管理器引擎722控制下的事件发布系统102的事件发布源。“esp-clusters”元素定义处于管理器引擎722控制下的ESPE A 400a。“esp-maps”元素定义事件发布系统102的事件发布源与ESPE A 400a之间的映射。
可基于下式而在管理器配置文件714中定义一或多个项目402:
“project”元素指定ESPE A 400a的一或多个项目402中的项目。“name”属性指定项目元素个例的名称。“type”属性将项目元素的类型指定为参考或内联。“project-url”属性指定到项目定义的URL。举例来说,对于“project-url”属性定义的串指定可存储与第三计算机可读媒体708上、ESP集群系统106上或可由ESP集群管理器104使用通信接口706来存取的另一装置上的远程ESP模型716的名称和位置。一旦项目发布到ESPE A 400a,那么“project-name”属性指定项目的名称。
为了说明,样本项目元素如下展示:
“esp-cluster-manager”元素的“raw-sources”元素指定可基于下式而在管理器配置文件714中定义的事件发布系统102的一或多个数据源:
“名称”属性指定事件发布系统102的数据源的名称。“类别”属性指定事件发布系统102的数据源的连接器类型。为了说明,“fs”指示数据源是文件套接字指示,“kafka”指示数据源是消息代理,“mq”指示数据源是WebSpheres MQ,“mqtt”指示数据源是mq遥测传送服务器,“project”指示数据源是ESP项目,“rmq”指示数据源是RabbitMQ消息代理,“smtp”指示数据源是简单邮件传送服务器,“sol”指示数据源是Solace系统消息代理,“tdata”指示数据源是TeraData高性能数据库,“tibrv”指示数据源是Tibco会合消息总线,且“tva”指示数据源是Tervela消息传送构造。可使用更小或更大数目种连接器类型。所提供选项仅仅是用于说明。
“properties_t”元素基于由“class”属性指定的数据源的连接器类型而指定名称/值对的属性列表。举例来说,当“class”属性是“fs”时,“properties_t”元素可包含“type”属性名称和值对、“fstype”属性名称和值对和“fsname”属性名称和值对。“type”属性指定数据源是发布者还是预订者。因为数据源是事件发布系统102的事件发布装置200,所以“type”属性是发布或“pub”。
“fstype”属性可选自“binary”、“csv”、“xml”、“json”、“syslog”、“hdat”、“cef”等等,其中“binary”指示二元格式化事件,“csv”指示逗号定界的数据事件,“xml”指示XML格式化事件,“json”指示JavaScript对象表示(JavaScript object notation,JSON)格式化事件,“syslog”指示系统日志事件,“hdat”指示目标分析封装数据事件,“cef”指示通用事件格式化事件。可使用更小或更大数目种文件套接字类型。所提供选项仅仅是用于说明。
“fsname”属性指示数据源抑或文件或套接字。举例来说,呈“host:port”形式的“fsname”属性值指示数据源是套接字。否则,数据源是文件。
为了说明,事件发布系统102的四个数据源出于说明而在下文定义,其中每个数据源属于文件套接字类型:
“esp-cluster-manager”元素的“raw-clusters”元素指定可基于下式而在管理器配置文件714中定义的处于管理器引擎722的控制下的ESPE A 400a的列表:
“name”属性指定ESP集群系统106的名称。“redundancy”属性指定ESP集群系统106是否在ESP集群系统106的远程ESPE A 400a中的一个发生故障时支持一或多个冗余ESPE以用于故障接管处理。“esp-engines”元素指定到每个远程ESPE A 400a的引擎个例规范的指标。“spare-esp-engines”元素指定到可在需要时控制的每个备用ESPE A 400a的引擎个例规范的指标。举例来说,管理器引擎722可基于事件流流动的速率而开始或停止备用ESPE A400a。举例来说,可存储并监测事件流流动到每个远程ESPE A 400a的速率的纪录。如果远程ESPE A 400a的速率低于预定义阈值,那么管理器引擎722可自动地将所述远程ESPE A400a替换成备用远程ESPE A 400a。
为了说明,对于如以下说明中所展示的ESP集群系统106定义三个远程ESPE A400a:
“esp-cluster-manager”元素的“esp-maps”元素定义由<raw-sources>定义的事件发布源,例如事件发布系统102的事件发布装置200,如何被映射到ESPE A 400a的一或多个项目402中的项目的一或多个源窗口406。可基于下式而在管理器配置文件714中定义“esp-maps”元素:
“name”属性指定ESP集群图的名称。“cluster-ref”属性指定匹配对于“esp-cluster”元素指定的“name”属性字段的ESP集群的名称。“model-ref”属性指定匹配“project”元素指定的“name”属性字段的ESP项目的名称。“map”元素将源映射到ESPE A400a的ESPE源窗口。“orchestration”元素定义开始数据源与ESPE管理器400m之间的连接器的次序。
可基于下式而在管理器配置文件714中定义“esp-map”元素的“map”元素:
“name”属性指定图的名称。“from”元素指定匹配对于“raw-source”元素指定的“name”属性字段的数据源的名称。“multicast-destination”、“roundrobin-destination”或“hash-destination”中的一个用以定义如何将ESP集群系统106的ESPE A 400a选为来自数据源的事件块对象的接收端。选择“multicast-destination”指示事件被发送到每个ESPE A 400a。为了说明,可基于下式而定义“map”元素的“multicast-destination”元素:
“name”属性指定多播目的地的名称。“opcode”属性指定流式传输到ESPE A 400a的事件块对象的操作码。“publish-target”元素定义ESPE A 400a的源窗口目标。“publish-target”元素包含使用“project-func”元素的一或多个项目402中的项目、使用“contquery-func”元素的一或多个连续查询404中的连续查询和使用“window-func”元素的一或多个源窗口406中的源窗口的规范。“project-func”元素定义用以解析ESPE A 400a的目标项目的函数,并必须解析以匹配经解析ESPE A 400a中的项目的名称的值。“contquery-func”元素定义用以解析ESPE A 400a的项目的目标连续查询的函数,并必须解析以匹配经解析项目中的连续查询的名称的值。“window-func”元素定义用以解析ESPEA 400a的项目的连续查询的目标源窗口的函数,并必须解析以匹配经解析连续查询中的源窗口的名称的值。“publish-target”元素定义向其发布事件块对象的ESPE A 400a的源窗口。
对于“roundrobin-destination”的选择指示事件流式传输到一个ESPE A 400a,其中又选择ESPE A 400a。为了说明,基于使用<esp-engines>元素定义的ESPE A 400a的数目,将第一事件块流式传输到第一ESPE A1 400a1;第二事件块流式传输到第二ESPE A2400a2;第三事件块流式传输到第三ESPE A3 400a3等等,从而最终再次回归到第一ESPE A400a并重复所述顺序。为了说明,可基于下式而定义“map”元素的“roundrobin-destination”元素:
“name”属性指定多播目的地的名称。“opcode”属性指定流式传输到ESPE A 400a的事件块对象的操作码。“publish-target”元素包含使用“project-func”元素的一或多个项目402中的项目、使用“contquery-func”元素的一或多个连续查询404中的连续查询和使用“window-func”元素的一或多个源窗口406中的源窗口的规范。“project-func”元素定义用以解析ESPE A 400a的目标项目的函数,并必须解析以匹配经解析ESPE A 400a中的项目的名称的值。“contquery-func”元素定义用以解析远程ESPE A 400a的项目的目标连续查询的函数,并必须解析以匹配经解析项目中的连续查询的名称的值。“window-func”元素定义用以解析ESPE A 400a的项目的连续查询的目标源窗口的函数,并必须解析以匹配经解析连续查询中的源窗口的名称的值。“publish-target”元素定义向其发布事件块对象的远程ESPE A 400a的源窗口。
选择“hash-destination”指示事件被流式传输到一个远程ESPE A 400a,其中基于从事件块对象中的指定字段计算出的散列值而选择远程ESPE A 400a。散列值是介于零与ESPE A 400a的数目减去一之间的整数。举例来说,指定字段的字段值可转换成整数,除以远程ESPE A 400a的数目,且除法的剩余部分用作散列值。从事件块对象的指定字段的值计算出的散列值用以确定应向哪个ESPE A 400a发送事件块对象。可使用各种散列函数。举例来说,散列函数可以是插入式的以便于易于替换与指定散列值一起使用的散列函数。为了说明,可基于下式而定义“map”元素的“hash-destination”元素:
“name”属性指定散列目的地的名称。“durable”属性指定散列是否持久。当“durable”属性指示散列持久时,流式传输的事件块对象可在添加备用远程ESPE A 400a的新远程ESPE A 400a时分裂。当备用远程ESPE A 400a被添加时,其将成为由另一远程ESPEA 400a先前拥有的散列值的子空间的接收端。换句话说,先前是一组散列值的接收端的另一远程ESPE A 400a作为新接收端将所述组散列值的子集授予新远程ESPE A 400a。其它远程ESPE A 400a不受添加新远程ESPE A 400a影响。
“opcode”属性指定流式传输到ESPE A 400a的事件块对象的操作码。“publish-target”元素包含使用“project-func”元素的一或多个项目402中的项目、使用“contquery-func”元素的一或多个连续查询404中的连续查询和使用“window-func”元素的一或多个源窗口406中的源窗口的规范。“project-func”元素定义用以解析ESPE A 400a的目标项目的函数,并必须解析以匹配经解析ESPE A 400a中的项目的名称的值。“contquery-func”元素定义用以解析ESPE A 400a的项目的目标连续查询的函数,并必须解析以匹配经解析项目中的连续查询的名称的值。“window-func”元素定义用以解析ESPEA 400a的项目的连续查询的目标源窗口的函数,并必须解析以匹配经解析连续查询中的源窗口的名称的值。“publish-target”元素定义向其发布事件块对象的ESPE A 400a的源窗口。“fields”元素包含各自定义事件块对象中的字段的字段“name”的一或多个“field”元素,对ESPE A 400a的选择是基于所述字段。“fields”元素定义可用以修改即将发布的事件块对象的功能(如同功能窗口)。
“esp-map”元素的“orchestration”元素定义由<raw-sources>元素定义的事件发布源之间的连接器和ESPE管理器400m开始的次序。为了将数据流式传输到ESPE管理器400m中,使用连接器。连接器使用pub/sub API以与多种通信光纤、驱动器和客户端介接。连接器是在相同处理空间中实例化为ESPE管理器400m的C++类别。默认地,可在开始ESPE管理器400m的一或多个项目402中的项目时自动开始连接器,以使得连接器与项目同时运行。
连接器编排定义项目内的连接器执行的次序,这取决于未同时开始所有连接器时另一连接器饿状态。连接器编排可适用于负载参考数据,在注入流式传输数据之前或在使用连接窗口时将批量数据注入到窗口中。连接器编排可定义为类似于连续查询的表示的定向图。举例来说,可基于下式而在管理器配置文件714中定义“orchestration”元素:
“connector-groups”元素是用于一或多个连接器的容器。使用“connector-groups”元素来定义每个连接器,其中“connector-groups”元素的“name”属性指定匹配对于“raw-source”元素指定的“name”属性字段的数据源的名称。“connector-group”元素指定同时开始的一或多个连接器。“connector-group”元素的“connector-entry”属性包含“connector”属性和“state”属性。“connector”属性指定连接器的名称。“state”属性表示如由“connector”属性指定的在开始由“connector-groups”元素指定的下一群组之前由相关联连接器到达的状态。“state”属性的可选值可包含“finished”、“started”和“running”。为“state”属性选择“finished”指示连接器在连接器已停止时已结束处理。举例来说,用于初始化的数据已发布到ESPE A 400a。为“state”属性选择“started”指示连接器已成功地开始。为“state”属性选择“running”指示连接器正从相关联数据源接收事件块对象。
管理器引擎722提供连接器编排。当连接器更新其状态时,其还在其属于的任何连接器群组中更新其状态,这还可更新聚合群组状态。管理器引擎722监测所有连接器群组状态并视需要开始新连接器。连接器属于不同群组,且管理器引擎722记录不同群组的状态,并确保遵守了由“edges”元素定义的次序。
“edges”元素是定向图的一或多个边缘的容器。“edges”元素表示哪些连接器群组控制对另一连接器群组的开始。“edges”元素的“source”属性包含匹配对于“connector-group”元素指定的“name”属性字段的连接器群组的名称。“edges”元素的“target”属性包含匹配对于不同“connector-group”元素指定的“name”属性字段的连接器群组的名称,所述不同“connector-group”元素在到达由“source”属性指定的连接器群组中的每个连接器的状态之后开始。对于应取决于另一连接器的状态的连接器执行,在不同“connector-group”元素中定义每个连接器。群组可含有多个连接器,且根据群组而非个别连接器而定义相依性。
为了说明,在下文展示ESP图:
在操作804中,基于从管理器配置文件714读取的“start=engine”定义而实例化管理器引擎722。
在操作806中,将由管理器配置文件714中的“project”元素的“project-url”属性定义的远程ESP模型716部署到在包含备用ESPE 400a的“esp-cluster”元素下列出的每个ESPE A 400a。可使用在ESP集群系统106的每个计算装置上运行的远程引擎A 722a的管理REST接口来实现对远程ESP模型716的部署。命令行实用程序“dfesp_xml_client”可用以使用HTTP协议来与远程引擎A 722a通信。举例来说,可发送GET、POST、PUT和DELETE请求。可默认发送GET请求。客户端可支持使用HTTPS来通过安全HTTP频道与远程引擎A 722a通信。可通过到包含于管理器配置文件714的“esp-engines”元素中的每个ESPE A 400a的指标来初始化有源ESPE A 400a的列表。
为了向远程引擎A 722a发送HTTP请求,可使用以下命令结构:“dfesp_xml_client-url URLValue<-headers headersValue><-cert certificateValue><-passpassphraseValue><-auth-token token><-auth-token-url tokenURLValue><-post<postURLValue>><-put<putURLValue>><-head><-delete><-showheaders>”,其中URLValue指定向其发送HTTP请求的URL,headersValue指定指定到URL请求的标头的冒号的名称值对的逗号分离列表,certificateValue指定使用HTTPS时参考的证书文件,passphraseValue指定HTTP的SSL密码,token指定待在使用验证来与服务器通信时使用的OAuth验证验证,postURLValue指定向其发送POST请求的URL,且putURLValue指定向其发送PUT请求的URL。“-head”指定发送HTTP HEAD请求。“-delete”指定发送HTTP DELETE请求。“-showheaders”指定返回并显示HTTP响应标头的HTTP请求。
为了说明,以下命令“dfesp_xml_client-url‘http://host:ha_port/SASESP/projects/project’-put‘file://model’”可发布到由管理器引擎722在“esp-cluster”元素的“esp-engines”元素中列出的每个ESPE A 400a。作为响应,将HTTP PUT请求发送到每个ESPE A 400a。
命令行上提供的model是管理器配置文件714中的“project”元素的“project-url”属性。“project-url”可随附file://以指示其是文件。命令行上提供的host是对于管理器配置文件714中的“esp-cluster”元素定义的相关联“esp_engine”的“host”属性。命令行上提供的ha_port是对于管理器配置文件714中的“esp-cluster”元素定义的相关联“esp_engine”的“ha_port”属性。
远程ESP模型716包含应使用ESPE A 400a来在ESP集群系统106的一个或多个计算装置处执行的ESP模型的定义。为了说明,远程ESP模型716可以是经剖析XML文件。参考图9,展示了根据说明性实施例的远程ESP模型716的框图,其中综述了包含于实施交易违规检测模型的下文概括的远程ESP模型716中的样本XML(完全XML实例出于说明展示于附录A中):
参考图9,展示了样本远程ESP模型716中捕获的XML模型的图形表示。图形模型指示一或多个源窗口406包含出于说明而被命名为“restrictedInput”的源窗口(sourcewindow,SW)1 900a、出于说明而被命名为“venuesInput”的SW 2 900b、出于说明而被命名为“brokersInput”的SW 3 900c、和出于说明而被命名为“tradesInput”的SW 4 900d。SW 2900b向出于说明而被命名为“venueData”的导出窗口(DW)1 902a提供输入。SW 3 900c向出于说明而被命名为“rate”的DW 2 902a提供输入。SW 4 900d向DW 2 902b、向出于说明而被命名为“cpunter”的DW 3 902c和向出于说明而被命名为“largeTrades”的DW 4 902d提供输入。DW 2 902b、DW 3 902c和DW 4 902d向出于说明而被命名为“addBrokerData”的DW 5902e提供输入。DW 1 902a和DW 5 902e向出于说明而被命名为“addVenueData”的DW 6902f提供输入。SW 1 900a和DW 6 902f向出于说明而被命名为“addRestrictedData”的DW7 902g提供输入。DW 7 902g向出于说明而被命名为“transform”的DW 8 902h提供输入。DW8 902h向出于说明而被命名为“frontRunningSell”的DW 9 902i、向出于说明而被命名为“frontRunningBuy”的DW 10 902j、向出于说明而被命名为“closeMarking”的DW 11 902k、向出于说明而被命名为“openMarking”的DW 12 902l和向出于说明而被命名为“restrictedTrade”的DW 13 902m提供输入。DW 9 902i、DW 10 902j、DW 11 902k、DW 12902l和DW 13 902m向出于说明而被命名为“violations”的DW 14 902n和向出于说明而被命名为“brokerAlerts”的DW 15 902o提供输入。DW 14 902n向出于说明而被命名为“violationCounts”的DW 16 902p提供输入。DW 15 902o将向出于说明而被命名为“brokerAlertsAggr”的DW 17 902q提供输入。
为了说明,远程ESP模型716设计成搜索以下违例:
●抢先购买,其中中介自己购买存货,接着为客户购买相同存货,接着出售存货来谋利。
●抢先出售,其中中介自己出售存货,接着为客户出售相同存货。
●受限交易,其中交易由受限于某一场所处的存货制成。
●开放标记,其中交易在场所开放的60秒内进行且数量大于30,000。
●关闭标记,其中交易在场所关闭的60秒内进行且数量大于70,000。
若干维度窗口用以连接注入到SW 4 900d中的交易数据与注入到SW 3 900c中的中介信息,其中交易场所信息注入到SW 2 900b中,且关于什么存货不被允许从什么场所交易的信息注入到SW 1 900a中。基于由事件预订应用程序522选择的预订而将违规计数和中介警报输出到事件预订系统108的事件预订装置500。
再次参考图8,在操作808中,管理器配置文件714创建由源窗口和对应于所定义原始源的输入发布连接器组成的管理器ESP模型718。通常,管理器ESP模型718包含具有如下建构的一或多个源窗口的一个项目。从远程ESP模型716推断窗口的模式。源窗口还包含基于ESP模型718中定义的原始源而建构的连接器。ESP模型718中提供的原始源的编排信息用以在所创建模型中建构项目连接器区段。
管理器ESP模型718包含将使用ESPE管理器400m来在集群管理器装置104处执行的ESP模型的定义。为了说明,基于以上样本管理器配置文件714和样本远程ESP模型716而创建的样本管理器ESP模型718可叙述:
在说明性实施例中,“esp-map10”内部地用作四平产生模型中的项目名称。其来自管理器ESP模型718中定义的esp-map名称,也就是说,管理器ESP模型718中的每个esp-map对应于所产生模型中的项目。从源窗口的远程ESP模型716中定义的“window-source”“schema”字段属性定义“schema-string”属性。举例来说,对于管理器ESP模型718中被命名为“tradesInput”的源窗口的“schema-string”属性定义的串“id*:int64,symbol:string,currency:int32,time:int64,msecs:int32,price:double,quant:int32,venue:int32,broker:int32,buyer:int32,seller:int32,buysellflg:int32defined for the“schema-string”从从远程ESP模型716读取的被命名为“tradesInput”的源窗口的“schema”的“fields”“field”属性得以定义。下文出于说明而展示了从远程ESP模型716读取且上文概括的完整输入集合:
在操作810中,通过以管理器引擎722执行管理器ESP模型718来在集群管理器装置104处实例化ESPE管理器400m。
在操作812中,创建引擎容器。为了说明,可使用将引擎容器指定为用于模型的管理器的函数调用来实例化ESPE管理器400m。函数调用可包含ESPE管理器400m的可对于ESPE管理器400m是唯一的引擎名称。
在操作814中,通过ESPE管理器400m将由管理器ESP模型718定义的一或多个项目402实例化为模型。实体化一或多个项目402还会实例化一或多个连续查询404、一或多个源窗口406和从管理器ESP模型718定义的一或多个导出窗口408。可通过产生更新作为穿过ESPE管理器400m的新事件块对象流的一或多个专用线程集区来实例化一或多个连续查询404。
在操作816中,为ESPE管理器400m初始化pub/sub能力。在说明性实施例中,为由管理器ESP模型718定义的一或多个项目402中的每个项目初始化pub/sub能力。为了初始化并ESPE管理器400m的pub/sub能力,提供主机名和端口数。可从命令行“pubsub”参数“port”值提供端口数。
在操作818中,开始从在管理器ESP模型718中定义的一或多个项目402。一或多个开始的项目可在集群管理器装置104上的背景中运行。说明性命令可以是“dfesp_xml_client-url‘http://localhost:46001/SASESP/projects/project/state?value=running’-put”。
在操作820中,创建路由器配置文件720,且将路由表配置成具有从管理器配置文件714读取的策略。当路由器引擎724接收事件时,其检查路由表、内部数据结构,以决定将在远程ESPE A 400a的何处发送所述事件。路由表静态地定义从源到目的地的映射或动态地定义可用以决定事件的目的地的策略。举例来说,可定义散列策略以使得事件是散列的,且散列值用以决定目的地。
ESP路由器是可帮助如上文所描述而集成ESP引擎的机制。举例来说,可通过ESP路由器来集成ESPE管理器400m与ESPE A 400a。为了说明,基于在上文使用ESP路由器配置的说明性XML文件模式来从样本管理器配置文件714和样本远程ESP模型716提取的值而创建的样本路由器配置文件720可叙述:
“Esp_local”指定ESPE管理器400m。使用主机名‘127.0.0.1’自动地产生“Esp_local”,所述主机名相当于本地主机和使用-pubsub的参数在命令行上指定的pubsub端口。路由器引擎724从esp_local预订,并基于所定义esp-route而发布到esp1、esp2和esp3。
在操作822中,实例化路由器引擎724。举例来说,可通过执行PUT请求来实例化路由器引擎724,PUT请求例如$DFESP_HOME/bin/dfesp_xml_client-url"http://host:port/SASESP/routerEngines/router3/esp4"-put file://pRouter3engine.xml,其中“pRouter3engine.xml”是对所创建路由器配置文件720的参考。“file://pRouter3engine.xml”中定义的XML从HTTP请求读取,由管理器引擎722用以实例化路由器引擎724。使用ESP pub/sub API,路由器引擎724将事件流式传输到ESPE A 400a以用于处理。
在操作826中,举例来说,通过调用相关联“start”函数,开始管理器ESP模型718中定义的一或多个连接器。已开始发布者连接器从指定源读取事件数据,并将那个事件数据注入到ESPE管理器400m的具体源窗口中。
在操作828中,针对将向其发布数据的ESPE A 400a的源窗口,从ESPE管理器400m接收连接请求。
在操作830中,ESPE管理器400m通过连接器从事件发布装置200接收事件块对象。含有一或多个事件对象的事件块对象被注入到管理器ESP模型718中定义的一或多个源窗口406中的源窗口中。
在操作832中,通过管理器ESP模型718中定义的一或多个连续查询404处理接收到的事件块对象。
在操作833中,基于选择了“多播目的地”、“轮循(roundrobin)目的地”还是“散列目的地”来在如路由器配置文件720中定义的管理器配置文件714中路由,将经处理事件块对象路由到ESP集群系统106的ESPE A 400a。ESPE A 400a是选自有源ESPE A 400a的列表。如果选择了多播目的地,那么将经处理事件块对象路由到ESP集群系统106的每个ESPE A400a。通过比较例如事件发布装置200等发布者附接到事件块对象的事件块对象的唯一ID与由例如事件预订装置500等发布者接收到的事件块ID,预订装置可使经预订事件块对象的群组与所发布事件块对象的群组后相关。举例来说,接收到的事件块对象进一步可存储于第三计算机可读媒体708和/或第四计算机可读媒体1008的RAM或高速缓冲类型存储器中。
在操作834中,进行关于是否应将新ESPE 400添加到ESP集群系统106的ESPE A400a的确定。如果应添加新ESPE 400,那么处理在操作836中继续。如果不需要添加新ESPE400,那么处理在操作840中继续。
在操作836中,从备用ESPE A 400a选择备用ESPE A 400a,并将备用ESPE A 400a添加到有源ESPE A 400a的列表来进行对操作833中的事件块对象的可能路由。
在操作840中,进行关于是否应从ESP集群系统106的ESPE A 400a移除ESPE 400的确定。如果应移除ESPE 400,那么处理在操作842中继续。如果不应移除ESPE 400,那么处理在操作846中继续。
在操作842中,从有源ESPE A 400a的列表删除ESP集群系统106的最近添加的ESPEA 400a。
在操作846中,进行关于是否停止处理的确定。如果处理未停止,那么处理在操作830中持续以继续从事件发布系统102接收含有事件块对象的一或多个事件流。如果处理已停止,那么处理在操作848中继续。
在操作848中,停止已开始引擎/项目/连接器,并关断ESPE管理器400m。
参考图10,更少、不同和额外组件可并入到ESP集群装置1000中。第四输入接口1002提供与参考事件发布装置200的输入接口202描述的功能性相同或类似的功能性,但要参考ESP集群装置1000。第四输出接口1004提供与参考事件发布装置200的输出接口204描述的功能性相同或类似的功能性,但要参考ESP集群装置1000。第四通信接口1006提供与参考事件发布装置200的通信接口206描述的功能性相同或类似的功能性,但要参考ESP集群装置1000。可使用第四通信接口1006来在ESP集群装置1000与集群管理器装置104和/或事件预订系统108之间传送数据和消息。第四计算机可读媒体1008提供与参考事件发布装置200的计算机可读媒体208描述的功能性相同或类似的功能性,但要参考ESP集群装置1000。第四处理器1010提供与参考事件发布装置200的处理器210描述的功能性相同或类似的功能性,但要参考ESP集群装置1000。
ESP应用程序1012执行与以下动作相关联的操作:协调并控制对最初由事件发布系统102通过集群管理器装置104流式传输的事件的分析的执行,同时基于预订请求而将经处理事件数据发送到事件预订系统108。可使用硬件、固件、软件或这些方法的任何组合来实施所述操作。参考图10的实例实施例,ESP应用程序1012以存储于第四计算机可读媒体1008中的软件(由计算机可读计算机可读和/或计算机可执行指令组成)实施,并可由第四处理器1010存取来执行体现ESP应用程序1012的操作的指令。可使用一或多种编程语言、汇编语言、脚本语言等等来编写ESP应用程序1012。举例来说,ESP应用程序1012可实施为网页应用程序。为了说明,可使用由美国·北卡罗莱纳州·卡里的SAS Institute Inc.开发并提供的事件流处理引擎来实施ESP应用程序1012,和/或ESP应用程序1012可与事件流处理引擎集成。
参考图11,描述了与ESP应用程序1012相关联的实例操作。可取决于实施例而执行额外、更少或不同操作。图11的操作的呈现次序并不意图是限制性的。
在操作1100中,在ESP集群装置1000处开始ESPE A 400a。
在操作1102中,创建引擎容器。为了说明,可使用将引擎容器指定为用于模型的管理器的函数调用来实例化ESPE A 400a。函数调用可包含ESPE A 400a的可对于ESPE A400a是唯一的引擎名称。
在操作1104中,将且可将远程ESP模型716作为远程ESP模型A 716a在本地存储到第四计算机可读媒体1008。
在操作1106中,从集群管理器装置104接收远程ESP模型A 716a,并将远程ESP模型A 716a读取并在本地存储到第四计算机可读媒体1008。
在操作1108中,实例化由远程ESP模型A 716a定义的一或多个项目402。实体化一或多个项目402还会实例化一或多个连续查询404、一或多个源窗口406和从远程ESP模型A716a定义的一或多个导出窗口408。从远程ESP模型A 716a定义的一或多个连续查询404可通过产生更新作为穿过ESPE A 400a的新事件块对象流的一或多个专用线程集区来实例化。基于远程ESP模型A 716a,ESPE A 400a可分析并处理在运动中的事件或事件流。替代存储事件并对所存储事件运行查询,ESPE A 400a可存储查询并通过查询流式传输数据以允许在数据被接收到时连续地分析数据。可基于关系、图案匹配和程序化算法而从远程ESP模型A 716a创建一或多个源窗口406和一或多个导出窗口408,程序化算法基于由远程ESP模型A 716a定义的连续查询模型和对经流式传输数据的应用而将输入事件流变换成待模型化、模拟、评分、测试、预计等的输出事件流。
在操作1110中,为ESPE 400初始化pub/sub能力。在说明性实施例中,为一或多个项目402中的每个项目初始化pub/sub能力。为了初始化并启用ESPE A 400a的pub/sub能力,可提供主机名和端口数。可从远程ESP模型A 716a读取ESP集群装置1000的主机名和端口数。pub/sub客户端可使用ESP集群装置1000的主机名和端口数以建立到ESPE A 400a的pub/sub连接。举例来说,打开服务器监听器套接字来使端口数使集群管理器装置104和事件预订系统108能够连接到ESPE A 400a来进行pub/sub服务。ESP集群装置1000的用以建立到ESPE A 400a的连接的pub/sub主机名和端口数可被称作在ESP集群装置1000上执行的ESPE A 400a的host:port名称。
在操作1112中,开始从远程ESP模型A 716a定义的一或多个项目402。一或多个开始的项目可在ESP集群装置1000上的背景中运行。
在操作1114中,针对将向其发布数据的源窗口,从集群管理器装置104上执行的ESPE管理器400m接收连接请求。进一步从事件预订系统108的计算装置,例如从事件预订装置500接收连接请求。
在操作1116中,从ESPE管理器400m接收事件块对象。含有一或多个事件对象的事件块对象被注入到从远程ESP模型A 716a定义的一或多个源窗口406中的源窗口中。
在操作1118中,通过一或多个连续查询404处理接收到的事件块对象。举例来说,参考图9描述说明性处理细节。当事件块对象通过ESPE管理器400m和一或多个源窗口406和/或ESPE A 400a的一或多个导出窗口408之间时,维持由事件发布装置200指派给事件块对象的唯一ID。当事件块对象由连续查询处理时,唯一嵌入的事务ID进一步可嵌入于事件块对象中。ESPE A 400a从事件块发布源窗口中时维持接收到的事件块的事件块包容(containership)方面,且在输出到事件预订系统108之前通过各种事件转译完成由一或多个连续查询404定义的定向图。
在操作1120中,经处理事件块对象输出到事件预订系统108的一或多个预订装置,例如事件预订装置500。通过比较例如事件发布装置200等发布者附接到事件块对象的事件块对象的唯一ID与由例如事件预订装置500等预订者接收到的事件块ID,预订装置可使经预订事件块对象的群组与所发布事件块对象的群组后相关。接收到的事件块对象进一步可存储于例如第四计算机可读媒体1008的RAM或高速缓冲类型存储器中。
在操作1122中,进行关于是否停止处理的确定。如果处理未停止,那么处理在操作1116中继续以继续从ESPE管理器400m接收含有事件块对象的一或多个事件流。如果处理已停止,那么处理在操作1124中继续。
在操作1124中,停止已开始项目。
在操作1126中,关断ESPE A 400a。
流处理系统100可支持故障接管。集群管理器装置104的群组可形成集群,其中集群管理器装置104中的一个是有源集群管理器装置104,而其它是备用集群管理器装置104。有源集群管理器装置104可被称作领导装置,且其如上文参考图8所描述而开始,而不知晓备用集群管理器装置104的存在。每个备用集群管理器装置104可以命令行变量参数:-standby$host:$port开始,其中$host是有源集群管理器装置104的主机名或IP地址,且$port是其http管理员端口。
当每个备用集群管理器装置104开始时,其向领导装置发送加入消息以向其通知加入消息的存在并将其pubsub客户端设定成非活动。领导装置周期性地向每个备用集群管理器装置104发送更新消息以确认保持“存活”。更新消息包含已向领导装置发送加入消息的所有备用集群管理器装置104的信息。如果备用集群管理器装置104错过某一数目个连续更新消息(例如数目可默认是三个,但是数目可以是可配置的),那么其假设领导装置不可用,并立刻开始选择过程以从备用集群管理器装置104当中选择新领导装置。新领导装置变成有源集群管理器装置104,将其pubsub客户端设定成有源,并周期性地向剩余备用集群管理器装置104发送更新消息。每个更新消息可发送预定义周期,例如每3秒。
集群管理器故障接管保证来自事件发布装置200的消息递送给目标一次且仅一次。当处于非活动模式下时,pubsub客户端维持使来自事件发布装置200的事件块对象排队的滑动窗,而非将事件块对象发送给目标。当新领导装置的pubsub客户端变得有源时,它们查询目标以获得最后接收到的消息的ID,并重绕滑动窗中排队的事件以重放尚未被正确地接收到的消息。
流处理系统100提供动态过程,使用管理器配置文件714和远程ESP模型716,可通过动态过程将数据从事件发布者流式传输到事件预订者。在使用从远程ESP模型716创建的远程ESP模型A 716a来在每个ESP集群装置1000处开始远程ESPE A 400a之后,可控制管理器应用程序712以:
●通过到HTTP服务器的管理REST API将项目部署到ESPE A 400a;
●以编排方式开始事件发布系统102的一或多个数据源;
●流式传输用于通过ESPE管理器400m的pub/sub API处理并分析的事件;以及
●使用管理器配置文件714来动态地添加或移除ESP集群系统106的ESPE A 400a。
词语“说明性”在本文中用以意指“充当实例、例子或说明”。本文中描述为“说明性”的任何方面或设计未必应解释为比其它方面或设计优选或有利。另外,出于本公开的目的,且除非另外指定,否则“一(a/an)”意指“一或多个”。又另外,除非另外具体指示,在详细描述中使用“和”或“或”意图包含“和/或”。说明性实施例可使用标准编程和/或工程化技术而被实施为方法、设备或制品以产生软件、固件、硬件或其任何组合来控制计算机实施所公开实施例。
出于说明和描述的目的,已经呈现所公开主题的说明性实施例的前述描述。并非旨在是穷举的或将所公开主题限制为所公开精确形式,且根据以上教示,修改和变化是可能的,或可从所公开主题的实践获得修改和变化。选择并描述实施例是为了解释所公开主题的实施例的原理以及所公开主题的实际应用,从而使所属领域的技术人员能够利用各种实施例中的所公开主题并具有如可适合于所涵盖特定使用的具有各种修改。
附录A
Claims (30)
1.一种在上面存储有计算机可读指令的非暂时性计算机可读媒体,所述计算机可读指令在由第一计算装置执行时致使所述第一计算装置执行以下操作:
基于从管理器配置文件读取的信息而创建本地事件流处理ESP模型,其中所述本地ESP模型描述待在事件块对象由所述第一计算装置从远离所述第一计算装置的第二计算装置接收到时对所述事件块对象的一或多个第一字段执行的第一计算过程,其中所述管理器配置文件包含用以连接所述第二计算装置与所述第一计算装置的第一连接信息;
基于所述所创建本地ESP模型而在所述第一计算装置上实例化ESP引擎ESPE;
在所述实例化ESPE的第一源窗口中从所述第二计算装置接收所述事件块对象,其中所述第一源窗口由所述所创建本地ESP模型定义;
基于所述所创建本地ESP模型而处理所述接收到的事件块对象;
向远离所述第一计算装置和所述第二计算装置的第三计算装置部署远程ESP模型,其中所述远程ESP模型描述待在所述经处理事件块对象由所述第三计算装置从所述第一计算装置接收到时对所述经处理事件块对象的一或多个第二字段执行的第二计算过程,其中所述管理器配置文件进一步包含所述远程ESP模型的指示符和用以连接所述第三计算装置与所述第一计算装置的第二连接信息;
选择所述第三计算装置以接收所述经处理事件块对象;以及
将所述经处理事件块对象发布给由向所述第三计算装置部署的所述远程ESP模型定义的第二源窗口。
2.根据权利要求1所述的非暂时性计算机可读媒体,其包括进一步致使所述第一计算装置执行以下操作的计算机可读指令:
基于从所述管理器配置文件读取的信息而创建路由器配置文件,其中所述路由器配置文件描述所述事件块对象从所述第二计算装置路由到所述第三计算装置;以及
基于所述所创建路由器配置文件而在所述第一计算装置上实例化路由器引擎;
其中所述实例化路由器引擎基于所述所创建路由器配置文件选择所述第三计算装置以接收所述经处理事件块对象;以及
基于所述所创建路由器配置文件而将所述经处理事件块对象发布给所述第二源窗口。
3.根据权利要求2所述的非暂时性计算机可读媒体,其中所述实例化路由器引擎从多个远程计算装置选择所述第三计算装置。
4.根据权利要求3所述的非暂时性计算机可读媒体,其中当所述路由器配置文件指示来自所述第二计算装置的所述事件块对象被多播时,所述实例化路由器引擎选择所述多个远程计算装置中的每一个;并在所述多个远程计算装置中的每一个处将所述经处理事件块对象发布给所述第二源窗口。
5.根据权利要求3所述的非暂时性计算机可读媒体,其中当所述路由器配置文件指示来自所述第二计算装置的所述事件块对象发送给单个计算装置时,所述实例化路由器引擎从所述多个远程计算装置选择所述第三计算装置。
6.根据权利要求5所述的非暂时性计算机可读媒体,其中通过执行以下操作来从所述多个远程计算装置选择所述第三计算装置:从所述多个远程计算装置中连续地选择将向其发布所述事件块对象的不同计算装置。
7.根据权利要求5所述的非暂时性计算机可读媒体,其中通过执行以下操作来从所述多个远程计算装置选择所述第三计算装置:从所述事件块对象的预定义字段读取值并基于所述所读取值而从所述多个远程计算装置选择所述第三计算装置。
8.根据权利要求5所述的非暂时性计算机可读媒体,其中通过执行以下操作来从所述多个远程计算装置选择所述第三计算装置:从所述事件块对象的预定义字段读取值、从所述所读取值计算散列值、并基于所述计算出的散列值而从所述多个远程计算装置选择所述第三计算装置。
9.根据权利要求1所述的非暂时性计算机可读媒体,其包括进一步致使所述第一计算装置执行以下操作的计算机可读指令:
基于从所述管理器配置文件读取的信息而创建路由器配置文件,其中所述路由器配置文件描述所述事件块对象从所述第二计算装置路由到所述第三计算装置;以及
基于所述所创建路由器配置文件而在所述第一计算装置上实例化路由器引擎;
其中所述实例化路由器引擎基于所述所创建路由器配置文件开始所述第一计算装置与所述第二计算装置之间的连接器以接收所述事件块对象。
10.根据权利要求9所述的非暂时性计算机可读媒体,其中所述实例化路由器引擎开始所述第一计算装置与各自接收不同事件块对象的多个发布计算装置之间的多个连接器,其中所述第二计算装置是所述多个发布计算装置中的一个。
11.根据权利要求10所述的非暂时性计算机可读媒体,其中以从所述所创建路由器配置文件确定的次序开始所述多个连接器。
12.根据权利要求10所述的非暂时性计算机可读媒体,其中基于所述所创建路由器配置文件而一起开始所述多个连接器的群组。
13.根据权利要求10所述的非暂时性计算机可读媒体,其中在基于所述所创建路由器配置文件而开始所述连接器之后开始所述多个连接器中的第二连接器。
14.根据权利要求10所述的非暂时性计算机可读媒体,其中在基于所述所创建路由器配置文件而将所述连接器指示为已结束处理之后开始所述多个连接器中的第二连接器。
15.根据权利要求10所述的非暂时性计算机可读媒体,其中在基于所述所创建路由器配置文件而将所述连接器指示为已停止处理之后开始所述多个连接器中的第二连接器。
16.一种第一计算装置,其包括:
处理器;以及
计算机可读媒体,其以可操作方式耦合到所述处理器,所述计算机可读媒体在上面存储有计算机可读指令,所述计算机可读指令在由所述处理器执行时致使第一计算装置执行以下操作:
基于从管理器配置文件读取的信息而创建本地事件流处理ESP模型,其中所述本地ESP模型描述待在事件块对象由所述第一计算装置从远离所述第一计算装置的第二计算装置接收到时对所述事件块对象的一或多个第一字段执行的第一计算过程,其中所述管理器配置文件包含用以连接所述第二计算装置与所述第一计算装置的第一连接信息;
基于所述所创建本地ESP模型而在所述第一计算装置上实例化ESP引擎ESPE;
在所述实例化ESPE的第一源窗口中从所述第二计算装置接收所述事件块对象,其中所述第一源窗口由所述所创建本地ESP模型定义;
基于所述所创建本地ESP模型而处理所述接收到的事件块对象;
向远离所述第一计算装置和所述第二计算装置的第三计算装置部署远程ESP模型,其中所述远程ESP模型描述待在所述经处理事件块对象由所述第三计算装置从所述第一计算装置接收到时对所述经处理事件块对象的一或多个第二字段执行的第二计算过程,其中所述管理器配置文件进一步包含所述远程ESP模型的指示符和用以连接所述第三计算装置与所述第一计算装置的第二连接信息;
选择所述第三计算装置以接收所述经处理事件块对象;以及
将所述经处理事件块对象发布给由向所述第三计算装置部署的所述远程ESP模型定义的第二源窗口。
17.根据权利要求16所述的第一计算装置,其中所述计算机可读媒体进一步包括致使所述第一计算装置执行以下操作的计算机可读指令:
基于从所述管理器配置文件读取的信息而创建路由器配置文件,其中所述路由器配置文件描述所述事件块对象从所述第二计算装置路由到所述第三计算装置;以及
基于所述所创建路由器配置文件而在所述第一计算装置上实例化路由器引擎;
其中所述实例化路由器引擎基于所述所创建路由器配置文件选择所述第三计算装置以接收所述经处理事件块对象;以及
基于所述所创建路由器配置文件而将所述经处理事件块对象发布给所述第二源窗口。
18.根据权利要求17所述的第一计算装置,其中所述实例化路由器引擎从多个远程计算装置选择所述第三计算装置。
19.根据权利要求16所述的第一计算装置,其中所述计算机可读媒体进一步包括致使所述第一计算装置执行以下操作的计算机可读指令:
基于从所述管理器配置文件读取的信息而创建路由器配置文件,其中所述路由器配置文件描述所述事件块对象从所述第二计算装置路由到所述第三计算装置;以及
基于所述所创建路由器配置文件而在所述第一计算装置上实例化路由器引擎;
其中所述实例化路由器引擎基于所述所创建路由器配置文件开始所述第一计算装置与所述第二计算装置之间的连接器以接收所述事件块对象。
20.根据权利要求19所述的第一计算装置,其中所述实例化路由器引擎开始所述第一计算装置与各自接收不同事件块对象的多个发布计算装置之间的多个连接器,其中所述第二计算装置是所述多个发布计算装置中的一个。
21.根据权利要求20所述的第一计算装置,其中以从所述所创建路由器配置文件确定的次序开始所述多个连接器。
22.一种管理事件流处理引擎的集群的方法,所述方法包括:
通过第一计算装置,基于从管理器配置文件读取的信息而创建本地事件流处理ESP模型,其中所述本地ESP模型描述待在事件块对象由所述第一计算装置从远离所述第一计算装置的第二计算装置接收到时对所述事件块对象的一或多个第一字段执行的第一计算过程,其中所述管理器配置文件包含用以连接所述第二计算装置与所述第一计算装置的第一连接信息;
通过所述第一计算装置,基于所述所创建本地ESP模型而在所述第一计算装置上实例化ESP引擎ESPE;
通过所述第一计算装置,在所述实例化ESPE的第一源窗口中从所述第二计算装置接收所述事件块对象,其中所述第一源窗口由所述所创建本地ESP模型定义;
通过所述第一计算装置,基于所述所创建本地ESP模型而处理所述接收到的事件块对象;
通过所述第一计算装置,向远离所述第一计算装置和所述第二计算装置的第三计算装置部署远程ESP模型,其中所述远程ESP模型描述待在所述经处理事件块对象由所述第三计算装置从所述第一计算装置接收到时对所述经处理事件块对象的一或多个第二字段执行的第二计算过程,其中所述管理器配置文件进一步包含所述远程ESP模型的指示符和用以连接所述第三计算装置与所述第一计算装置的第二连接信息;
通过所述第一计算装置,选择所述第三计算装置以接收所述经处理事件块对象;以及
通过所述第一计算装置,将所述经处理事件块对象发布给由向所述第三计算装置部署的所述远程ESP模型定义的第二源窗口。
23.根据权利要求22所述的方法,其中所述计算机可读媒体进一步包括致使所述第一计算装置执行以下操作的计算机可读指令:
基于从所述管理器配置文件读取的信息而创建路由器配置文件,其中所述路由器配置文件描述所述事件块对象从所述第二计算装置路由到所述第三计算装置;以及
基于所述所创建路由器配置文件而在所述第一计算装置上实例化路由器引擎;
其中所述实例化路由器引擎基于所述所创建路由器配置文件选择所述第三计算装置以接收所述经处理事件块对象;以及
基于所述所创建路由器配置文件而将所述经处理事件块对象发布给所述第二源窗口。
24.根据权利要求23所述的方法,其中所述实例化路由器引擎从多个远程计算装置选择所述第三计算装置。
25.根据权利要求24所述的方法,其中当所述路由器配置文件指示来自所述第二计算装置的所述事件块对象被多播时,所述实例化路由器引擎选择所述多个远程计算装置中的每一个;并在所述多个远程计算装置中的每一个处将所述经处理事件块对象发布给所述第二源窗口。
26.根据权利要求24所述的方法,其中当所述路由器配置文件指示来自所述第二计算装置的所述事件块对象发送给单个计算装置时,所述实例化路由器引擎从所述多个远程计算装置选择所述第三计算装置。
27.根据权利要求22所述的方法,其中所述计算机可读媒体进一步包括致使所述第一计算装置执行以下操作的计算机可读指令:
基于从所述管理器配置文件读取的信息而创建路由器配置文件,其中所述路由器配置文件描述所述事件块对象从所述第二计算装置路由到所述第三计算装置;以及
基于所述所创建路由器配置文件而在所述第一计算装置上实例化路由器引擎;
其中所述实例化路由器引擎基于所述所创建路由器配置文件开始所述第一计算装置与所述第二计算装置之间的连接器以接收所述事件块对象。
28.根据权利要求27所述的方法,其中所述实例化路由器引擎开始所述第一计算装置与各自接收不同事件块对象的多个发布计算装置之间的多个连接器,其中所述第二计算装置是所述多个发布计算装置中的一个。
29.根据权利要求28所述的方法,其中以从所述所创建路由器配置文件确定的次序开始所述多个连接器。
30.根据权利要求28所述的方法,其中基于所述所创建路由器配置文件而一起开始所述多个连接器的群组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010093173.8A CN111290763B (zh) | 2016-12-09 | 2017-11-16 | 事件流处理集群管理器 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662432238P | 2016-12-09 | 2016-12-09 | |
US62/432,238 | 2016-12-09 | ||
US201762449430P | 2017-01-23 | 2017-01-23 | |
US62/449,430 | 2017-01-23 | ||
PCT/US2017/062046 WO2018106426A1 (en) | 2016-12-09 | 2017-11-16 | Event stream processing cluster manager |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010093173.8A Division CN111290763B (zh) | 2016-12-09 | 2017-11-16 | 事件流处理集群管理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108419447A true CN108419447A (zh) | 2018-08-17 |
CN108419447B CN108419447B (zh) | 2020-02-07 |
Family
ID=62489255
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780004037.3A Active CN108419447B (zh) | 2016-12-09 | 2017-11-16 | 事件流处理集群管理器 |
CN202010093173.8A Active CN111290763B (zh) | 2016-12-09 | 2017-11-16 | 事件流处理集群管理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010093173.8A Active CN111290763B (zh) | 2016-12-09 | 2017-11-16 | 事件流处理集群管理器 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10152361B2 (zh) |
EP (2) | EP3374890B1 (zh) |
CN (2) | CN108419447B (zh) |
CA (1) | CA3009354C (zh) |
HK (1) | HK1252930A1 (zh) |
WO (1) | WO2018106426A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110443638A (zh) * | 2019-07-16 | 2019-11-12 | 广州微米物联网科技有限公司 | 一种基于运动场所的智能售货机信息管理方法及系统 |
CN112395072A (zh) * | 2019-08-14 | 2021-02-23 | 北京三快在线科技有限公司 | 模型部署的方法、装置、存储介质及电子设备 |
US11550643B1 (en) | 2021-08-06 | 2023-01-10 | Sas Institute Inc. | Automated streaming data model generation with parallel processing capability |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346142B1 (en) * | 2017-12-21 | 2019-07-09 | Sas Institute Inc. | Automated streaming data model generation |
US20190319864A1 (en) * | 2018-04-17 | 2019-10-17 | Telia Company Ab | Network monitoring |
US10740085B2 (en) * | 2018-11-30 | 2020-08-11 | Target Brands, Inc. | Webserver interface for deployment management tool |
CN109725899B (zh) * | 2019-01-04 | 2022-03-22 | 中国银行股份有限公司 | 数据流式处理方法及装置 |
CN110474839B (zh) * | 2019-07-08 | 2021-09-03 | 冯瑞军 | 边缘计算网关设备 |
EP3796167B1 (en) * | 2019-09-23 | 2023-05-03 | SAS Institute Inc. | Router management by an event stream processing cluster manager |
US11483412B2 (en) * | 2020-12-30 | 2022-10-25 | Blackberry Limited | Method for marshalling events in a publish-subscribe system |
US11544123B1 (en) * | 2021-06-28 | 2023-01-03 | Anurag Singla | Systems and methods for detecting partitioned and aggregated novel network, user, device and application behaviors |
US11954468B2 (en) * | 2021-07-20 | 2024-04-09 | EMC IP Holding Company LLC | AIML-based continuous delivery for networks |
CN114443257A (zh) * | 2022-04-11 | 2022-05-06 | 戎腾科技(长沙)有限公司 | 一种基于线程池的任务调度方法、装置及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140280986A1 (en) * | 2013-03-12 | 2014-09-18 | Sas Institute Inc. | Delivery acknowledgment in event stream processing |
US9432430B1 (en) * | 2015-04-02 | 2016-08-30 | Sas Institute Inc. | Event stream processing device providing real-time incident identification |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7290048B1 (en) | 2002-03-29 | 2007-10-30 | Hyperformix, Inc. | Method of semi-automatic data collection, data analysis, and model generation for the performance analysis of enterprise applications |
US7480640B1 (en) | 2003-12-16 | 2009-01-20 | Quantum Leap Research, Inc. | Automated method and system for generating models from data |
CN101207561B (zh) * | 2006-12-22 | 2010-11-10 | 华为技术有限公司 | 集群管理器、集群系统、以及集群管理方法 |
US8387076B2 (en) * | 2009-07-21 | 2013-02-26 | Oracle International Corporation | Standardized database connectivity support for an event processing server |
US8874526B2 (en) | 2010-03-31 | 2014-10-28 | Cloudera, Inc. | Dynamically processing an event using an extensible data model |
US8713049B2 (en) * | 2010-09-17 | 2014-04-29 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
US9092802B1 (en) | 2011-08-15 | 2015-07-28 | Ramakrishna Akella | Statistical machine learning and business process models systems and methods |
US10122598B2 (en) | 2012-07-25 | 2018-11-06 | International Business Machines Corporation | Subscription watch lists for event handling |
US9596279B2 (en) | 2013-02-08 | 2017-03-14 | Dell Products L.P. | Cloud-based streaming data receiver and persister |
US9122651B1 (en) * | 2014-06-06 | 2015-09-01 | Sas Institute Inc. | Computer system to support failover in an event stream processing system |
US10055691B2 (en) * | 2014-09-08 | 2018-08-21 | Pivotal Software, Inc. | Stream processing with dynamic event routing |
EP3292518A4 (en) * | 2015-05-05 | 2019-01-16 | RetailMeNot, Inc. | EVOLUTIVE COMPLEX EVENT TREATMENT COMPRISING PROBABILISED AUTOMATIC LEARNING MODELS FOR PREDICTING SUBSEQUENT GEOGRAPHIC LOCATIONS |
-
2017
- 2017-11-16 WO PCT/US2017/062046 patent/WO2018106426A1/en active Application Filing
- 2017-11-16 EP EP17877384.2A patent/EP3374890B1/en active Active
- 2017-11-16 CN CN201780004037.3A patent/CN108419447B/zh active Active
- 2017-11-16 CN CN202010093173.8A patent/CN111290763B/zh active Active
- 2017-11-16 CA CA3009354A patent/CA3009354C/en active Active
- 2017-11-16 EP EP19218074.3A patent/EP3690640B1/en active Active
- 2017-11-16 US US15/815,293 patent/US10152361B2/en active Active
-
2018
- 2018-09-25 HK HK18112284.0A patent/HK1252930A1/zh unknown
- 2018-10-18 US US16/163,748 patent/US10423469B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140280986A1 (en) * | 2013-03-12 | 2014-09-18 | Sas Institute Inc. | Delivery acknowledgment in event stream processing |
US9432430B1 (en) * | 2015-04-02 | 2016-08-30 | Sas Institute Inc. | Event stream processing device providing real-time incident identification |
Non-Patent Citations (1)
Title |
---|
STEFAN APPEL等: "Modeling and execution of event stream processing in business processes", 《INFORMATION SYSTEMS》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110443638A (zh) * | 2019-07-16 | 2019-11-12 | 广州微米物联网科技有限公司 | 一种基于运动场所的智能售货机信息管理方法及系统 |
CN112395072A (zh) * | 2019-08-14 | 2021-02-23 | 北京三快在线科技有限公司 | 模型部署的方法、装置、存储介质及电子设备 |
US11550643B1 (en) | 2021-08-06 | 2023-01-10 | Sas Institute Inc. | Automated streaming data model generation with parallel processing capability |
Also Published As
Publication number | Publication date |
---|---|
HK1252930A1 (zh) | 2019-06-06 |
CN111290763B (zh) | 2021-05-04 |
US20190050277A1 (en) | 2019-02-14 |
CN111290763A (zh) | 2020-06-16 |
WO2018106426A1 (en) | 2018-06-14 |
EP3374890A1 (en) | 2018-09-19 |
EP3374890A4 (en) | 2019-01-09 |
EP3690640B1 (en) | 2021-12-01 |
US10423469B2 (en) | 2019-09-24 |
EP3374890B1 (en) | 2020-05-13 |
CN108419447B (zh) | 2020-02-07 |
EP3690640A1 (en) | 2020-08-05 |
US20180165139A1 (en) | 2018-06-14 |
US10152361B2 (en) | 2018-12-11 |
CA3009354C (en) | 2019-01-08 |
CA3009354A1 (en) | 2018-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108419447A (zh) | 事件流处理集群管理器 | |
US11627053B2 (en) | Continuous data sensing of functional states of networked computing devices to determine efficiency metrics for servicing electronic messages asynchronously | |
CN104142629B (zh) | 用于对工业机器环境进行虚拟化的系统和方法 | |
CN105991765B (zh) | 将工业自动化工厂备份在云中 | |
CN105988367B (zh) | 云中的工业自动化环境的建模 | |
CN104142661B (zh) | 使用基于云的数据用于工业自动化系统训练 | |
US10747592B2 (en) | Router management by an event stream processing cluster manager | |
CN112540948B (zh) | 通过事件流处理集群管理器进行路由管理 | |
CN104950741B (zh) | 用于系统连接的多控制器的配置管理接口 | |
CN104954242B (zh) | 用于将工业数据迁移至云平台的统一数据摄取适配器 | |
CN104142630B (zh) | 用于工业自动化环境的虚拟化的系统和方法 | |
CN104950836B (zh) | 使用工业云代理的预置型数据收集和摄取 | |
CN105074692B (zh) | 使用基于逻辑多维标签的策略模型的分布式网络管理系统 | |
US20190196795A1 (en) | Automated streaming data model generation | |
CN105339941B (zh) | 针对etl映射设计使用投影器和选择器组件类型 | |
CN105988451A (zh) | 针对工业自动化的基于云的分析 | |
CN108491626A (zh) | 进行工业自动化系统的模拟的系统、方法和存储介质 | |
CN107250932A (zh) | 可编程逻辑控制器中的语义情境化 | |
CN110134674A (zh) | 一种货币信贷大数据监测分析系统 | |
CN107480189A (zh) | 一种多维度实时分析系统及方法 | |
US20230315580A1 (en) | Disaster recovery in a cell model for an extensibility platform | |
Habraken | Reflections of Understanding Smart Industry | |
US12009997B2 (en) | Cell-based architecture for an extensibility platform | |
Prévost et al. | A Cloud-Based Service for the Visualization and Monitoring of Factories | |
US8838715B2 (en) | Providing client system support |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1252930 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |