平码五不中公式规律
  • / 27
  • 下载费用:30 金币  

利用虚拟处理代理的流处理.pdf

关 键 ?#21097;?/dt>
利用 虚拟 处理 代理
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580037434.1

申请日:

2015.07.06

公开号:

CN106663039A

公开日:

2017.05.10

当前法律状态:

实审

?#34892;?#24615;:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):G06F 9/54申请日:20150706|||公开
IPC分类号: G06F9/54 主分类号: G06F9/54
申请人: 微软技术许可有限责任公司
发明人: H·H·索迈; S·贝克夫; T·梅拉米德; R·L·罗迪; F·张; M·W·马亚克; A·A·赫斯基; G·克利奥特; J·特林; A·S·盖勒
地址: 美国华盛顿州
优?#28909;ǎ?/td> 2014.07.08 US 14/326,239
专利代理机构: 上海专利商标事务所有限公司 31100 代理人: 段登新
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580037434.1

授权公告号:

|||

法律状态公告日:

2017.06.06|||2017.05.10

法律状态类型:

实质审查的生效|||公开

摘要

本文描述了用于利用虚拟处理代理进行事件递送和流处理的技术。在接收到队列中的事件发布之后,运行时系统标识可能对被发布的事件?#34892;?#36259;但是尚未显式地订阅所述被发布的事件的一个或多个虚拟处理代理。被发布的事件的事件信息随后被递送至被标识的虚拟处理代理。在实际递送之前,运行时系统还确定虚拟处理代理是否已被激活并且激活尚未被激活的那些处理代理。基于所接收的事件信息,一些虚拟处理代理可决定显式地提交订阅以从该队列接收更多事件。显式订阅随后可触发运行时系统向处理代理递送被订阅事件,这些被订阅事件可包括在该显式订阅被接收之前队列中已经发布的过去事件。

权利要求书

1.一种用于将事件递送至处理代理的计算机实现的方法,所述方法包括:
接收事件的发布;
基于处理代理的配置标识用于接收与所述事件相关联的信息的处理代理,其中所述处
理代理没有显式订阅以接收所述事件;
确定所述处理代理是否被激活;
响应于确定所述处理代理没有被激活,激活所述处理代理;
将与所述事件相关联的信息递送?#20102;?#36848;处理代理;
从所述处理代理接收对一个或多个事件的订阅;以及
将所述一个或多个事件递送?#20102;?#36848;处理代理。
2.如权利要求1所述的方法,其特征在于,进一步包括:
确定所述订阅是否指定要被递送的一个或多个过去事件;以及
响应于确定所述订阅指定要被递送的一个或多个过去事件,将所述一个或多个过去事
件递送?#20102;?#36848;处理代理。
3.如权利要求1所述的方法,其特征在于,接收事件的发布包括:
接收在队列中发布所述事件的请求;
激活与所述事件相对应的虚拟流;以及
通过所述虚拟流将所述事件发布在所述队列中。
4.如权利要求1所述的方法,其特征在于,对一个或多个事件的订阅定义了虚拟流,且
所述订阅是对与所述一个或多个事件相对应的所述虚拟流的订阅。
5.如权利要求4所述的方法,其特征在于,激活所述处理代理包括向所述处理代理分配
系统资源,以及?#36816;?#36848;虚拟流的订阅激活所述虚拟流并引起系统资源被分配给所述虚拟
流。
6.如权利要求5所述的方法,其特征在于,进一步包括:
当在特定时间段上没有在所述虚拟流中接收到事件时,通过回收分配给所述虚拟流的
系统资源来停用所述虚拟流;以及
当所述处理代理变得空闲达给定时间段时,通过回收分配给所述处理代理的系统资源
来停用所述处理代理。
7.一种系统,包括执行运行时的一个或多个计算设备,所述运行时被配置成:
管理用于接收和保持事件的发布的队列;
接收第一虚拟流中的事件的发布并将所述事件的发布转发?#20102;?#36848;队列;
基于处理代理的配置标识用于递送所述事件的事件信息的处理代理,其中所述处理代
理没有显式订阅以接收所述事件并且能被寻址以用于递送所述事件信息而?#36824;?#25152;述处理
代理是否被激活;
确定所述处理代理是否被激活;
响应于确定所述处理代理没有被激活,激活所述处理代理;
将所述事件信息递送?#20102;?#36848;处理代理;
在所述事件信息被递送?#20102;?#36848;处理代理之后,从所述处理代理接收对第二虚拟流中的
事件的显式订阅;
在接收所述显式订阅之前,确定所述显式订阅是否指定在所述队列中发布的过去事
件;
响应于确定所述显式订阅指定过去事件,从在所述队列中发布的过去事件检索过去事
件并将所述过去事件推送?#20102;?#36848;第二虚拟流,以及
将所述第二虚拟流中的事件递送?#20102;?#36848;处理代理。
8.如权利要求7所述的系统,其特征在于,激活所述处理代理包括向所述处理代理分配
系统资源,以及其中?#36816;?#36848;第二虚拟流的订阅激活所述第二虚拟流并引起系统资源被分配
给所述第二虚拟流。
9.如权利要求7所述的系统,其特征在于,进一步包括执行一个或多个处理代理的多个
服务器,其中所述运行时被进一步配置成在一处理代理在其上被激活的一个服务器?#25910;?#20043;
后通过在另一服务器上重新激活所述处理代理来?#25351;?#25152;述处理代理。
10.如权利要求7所述的系统,其特征在于,所述处理代理的配置被用编程方式获得或
者从所述处理代理的声明式定义中被确定。

说明书

利用虚拟处理代理的流处理

背景

在流处理系统中,流处理单元可与其它处理单元通信以接收用于处理的事件。这
可通过从一个处理单元与另一个处理单元的直接通信或者通过发布-订阅模型完成,在发
布-订阅模型中,处理单元订阅某些事件并且当这些事件被发布时接收这些事件。

随着流处理系统的规模的增加,例如其中涉及数百万处理单元,利用处理单元间
的直接通信技术可能是不切实际的。尽管发布-订阅模型可能看上去可行,然而传统的发
布-订阅模型需要处理单元在接收与事件有关的任何信息之前显式地提交事件订阅。这可
能成为问题,因为在一些情况下,处理单元或许不可能在某些事件发生之前预测要订阅什
么事件。例如,被配置成处理在游戏应用的地图上发生的事件的处理单元直?#25509;?#25103;已经在
该地图上开始才知道要订阅哪个游戏。在这样的情形中,为了使处理单元接收它?#34892;?#36259;的
事件,处理单元必须订阅所有可能事件,这在大规模流处理系统中同样变得不切实?#26159;业?br />效。

本文所做出的本公开正是关于这些和其他考虑事项而提出的。

概述

本文描述了用于利用虚拟处理代理进行事件递送和流处理的技术。一个或多个虚
拟处理代理可被创建并被配置成接收并处理流事件。一?#21482;?#21046;(诸如队列)可被利用和/或
被配置成接收来自流处理系统中的各实体的事件发布。被发布的事件还可被保持或保存以
供以后在需要时检索和递送。在接收到事件发布之后,运行时系统可标识可能对接收被发
布的事件?#34892;?#36259;但是尚未显式地订阅被发布的事件的一个或多个虚拟处理代理。被发布的
事件的事件信息随后可被递送至被标识的虚拟处理代理。在实际递送事件或事件信息之
前,运行时系统可进一步确定虚拟处理代理是否已被激活,且如果处理代理尚未被激活则
运行时系统可激活处理代理。其中包含的事件或事件信息随后可被递送至被激活的处理代
理。

基于所接收的事件或事件信息,虚拟处理代理可决定显式地提交订阅以从该队列
接收更多事件。显式订阅随后可触发要被递送至处理代理的被订阅事件,这些被订阅事件
可包括在该显式订阅被提交之前已在队列中发布的过去事件。通过利用本文描述的技术,
虚拟处理代理可以能够订阅、接收和处理处理代理在事件在队列中被发布之前原本不知道
的事件。通过利用虚拟处理代理来订阅、接收和处理事件,可改善计算资源的可扩展性、可
靠性和灵活性。

应该了解,上文所描述的主题还可以被实现为计算机控制的装置、计算机进程、计
算系统或诸如计算机可读存储介质之类的?#30772;貳?#36890;过阅?#26009;?#38754;的详细描述并审阅相关联的
附图,这些及各种其他特征将变得显而易见。

提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本
发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用来
限制所要求保护的主题的?#27573;А4送猓?#25152;要求保护的主题不限于解决在本公开的任一部分
中所提及的任何或所有缺点的实现。

附?#25216;?#36848;

图1是计算机系统图,其提供了本文公开的一种用于利用虚拟处理代理进行流处
理的机制的概览描述;

图2是示出队列和虚拟流的诸方面的框图;

图3是示出用于将事件递送至虚拟处理代理的一个说明性过程的进一步方面的流
程图;

图4是示出用于由虚拟处理代理进行事件订阅和处理的一个说明性过程的方面的
流程图;

图5A-5D解说响应于在不同时间点在队列中发布的事件,示例虚拟处理代理的操
作;以及

图6是示出用于能够实现此处所提出的诸技术的计算系统的说明性计算机硬件架
构的计算机架构图。

详细描述

本文描述了用于利用虚拟处理代理进行事件递送和流处理的技术。在本文公开的
技术中,一个或多个虚拟处理代理(其在本文中可被称为“处理代理?#34987;頡癙A”)可被用作用于
流处理的处理单元。这些虚拟处理代理可在一个或多个服务器上执行,并且能够独立于处
理代理是否被激活而可寻址(addressable)以供操作和交互。每个虚拟处理代理可被配置
成发布、接收和/或处理各事件。事件可在队列中被发布,并且可进一步被保持或保存在队
列中以供稍后检索。

一旦事件的发布在队列中被接收,一个或多个处理代理可被标识以接收被发布事
件。被标识的处理代理可包括尚未显式订阅以接收被发布事件的处理代理,这种处理代理
在本文中被称为“隐式订阅者处理代理?#34987;頡?#38544;式订阅者”。隐式订阅者的标识可基于虚拟处
理代理的设置或配置而被执行,包括但不限于:要由虚拟处理代理执行的动作、虚拟处理代
理的输入和输出、虚拟处理代理的状态、以及虚拟处理代理的其它可能配置。虚拟处理代理
的配置可被从处理代理的声明式定义中推导出,或者用编程方式获得。

被发布事件或被发布事件内包含的信息或与被发布事件相关联的信息(在本文中
被称为“事件信息”)随后可被递送至被标识的隐式订阅者处理代理。在实际递送之前,支持
和管理虚拟处理代理的运行时系统可确定所述隐式订阅者处理代理是否已被激活,并且如
果所述处理代理尚未被激活则可激活所述处理代理。事件或事件信息随后可被递送至被激
活的处理代理,在被激活的处理代理处事件或事件信息可被进一步处理。类似地,当事件发
布在队列处被接收时,已显式订阅以接收被发布事件的一个或多个处理代理也可被标识并
且在需要时被激活。被发布事件随后可被递送至显式订阅者处理代理以供处理。

基于接收的事件或事件信息,隐式订阅者处理代理可决定更多事件需要被处理并
且可进而提交显式订阅以在它们被在队列中发布时接收那些事件。取决于处理代理的配
置,在显式订阅中指定的事件可包括已经发生并在队列中发布的过去事件。在这样的场景
中,因为在队列中发布的事件已经被保持或存储,所以队列可检索被订阅的那些过去事件
并将其递送给处理代理。?#22791;?#22810;事件在队列中被发布时,队列可进一步将被订阅事件递送
给处理代理。

根据进一步方面,队列中的事件可被?#25104;?#21040;一个或多个虚拟流或提取到一个或多
个虚拟流中,并且每个虚拟流可包括在队列中被发布的事件的子集。处理代理和/或其它实
体执行的事件发布和事件订阅可被定向到虚拟流而非队列。每个虚拟流可由要在其中发布
的事件定义和/或由处理代理?#34892;?#36259;接收的事件类型定义。如此,虚拟流可以是动态的,且
虚拟流的存在可取决于要被发布的事件和/或要被递送的事件。关于本文提出的技术的这
些方面和其它方面的附加?#38468;?#22312;下面参考图1-6提供。

尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一
般上下文中提出了本文描述的主题,但是本领域技术人员将认识到,其他实现可以结合其
他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类
型的例程、程序、组件、数据结构及其他类型的结构。?#36865;猓?#26412;领域技术人员将明白,可以利
用其他计算机系统配?#32654;?#23454;施本文描述的主题,这些计算机系统配置包括手持式设备、多
处理器系统、基于微处理器的或可编程消费电?#30828;?#21697;、小型计算机、大型计算机等?#21462;?br />

在以下详细描述中,将参考构成本发明的一部分并作为说明?#35789;?#20986;的附图、各具
体方面、或示例。现在参考附图,其中全部若干附图中相同的标号表示相同的元素,用于订
阅、接收和处理事件的计算系统和方法的各方面将被描述。

现在转向图1,将提供关于根据本文提出的诸方面的计算机系统和其中包括的若
干组件的?#38468;凇?#29305;别而言,图1示出用于利用虚拟处理代理进行事件递送和流处理的流处理
系统100的诸方面。如图1中所示,流处理系统100可包括运行时系统108,该运行时系统支持
并促成流处理系统100中的各实体间的通信,所述实体包括但不局限于虚拟处理代理102A-
102N(其在本文中可被单独称为虚拟处理代理102或统称为虚拟处理代理102)、队列系统
104、客户端计算设备116、以及服务器计算设备118。

运行时系统108可包括一组分布式服务器(图1中未示出),所述分布式服务器可被
配置成执行运行时基层122以共同提供并支持“虚拟化分布式组件”(其在本文中也可被称
为“虚拟组件”)。在本文中使用的“组件”指代软件组件,诸如软件对象或其它种类的可单独
寻址的隔离实体,诸如分布式对象、代理、行动者(actor)?#21462;?#36816;行时系统108所支持的虚拟
化分布式组件具有独立于其任?#26410;?#20648;器内实例化(in-memory instantiations)的生命期
并从而独立于运行时系统108中的任何特定服务器的生命期的存在性。如果不存在虚拟组
件的存储器内实例,被发送到该组件的消息自动引起新实例被运行时基层122在可用服务
器上创建,所述可用服务器可以是运行时系统108中的任何可用服务器。如此,虚拟组件总
是能够独立于该虚拟组件是否在该系统中被激活地通过该虚拟组件的身份被寻址以进行
交互和/或操作。

运行时基层122还可被配置成管理虚拟组件激活和停用(deactivation)。运行时
基层122可被进一步配置成管理对使用该虚拟组件的程序?#35813;?#30340;到该虚拟组件的通信。为
了实现这一点,运行时基层122可维持指示虚拟组件的任何被激活实例的一个或多个服务
器位置的信息,向被激活的虚拟组件实例发送一个或多个通信,或保持到处于停用状态的
虚拟组件的通信直到该虚拟组件的实例被激活为激活以接收到该实例的通信为止。运行时
基层122从而可以给开发者虚拟的“组件空间?#20445;?#20854;允许像其被激活(即,存在于存储器中)一
样调用系统中的任何可能虚拟组件。

如果虚拟组件在其上被激活的服务器?#35272;#?#21017;可通过重新激活运行时系统108中
的另一服务器上的该虚拟组件的另一激活来还原该虚拟组件。如此,虚拟组件不需要被基
于运行时基层122开发的应用监管和/或显式重新创建。

组件的虚拟化基于从虚拟组件?#25104;?#21040;当前运行的物理实例化/激活的间接程度。
此间接程度可向运行时基层122提供处理原本需要被应用开发者解决的许多问题的机会,
诸如虚拟组件放置和负载平衡、未使用虚拟组件的停用、以及服务器?#25910;?#20043;后的虚拟组件
?#25351;础?#20174;而,运行时基层122所提供的虚拟组件可简化编程模型,同时允许平衡负载和从故
障中?#35813;?#22320;?#25351;?#30340;运行时灵活性。关于运行时基层122的更多?#38468;?#21487;在于2014年3月26日提
交且题为“Virtualized Components in Computing Systems(计算系统中的虚拟化组件)”
的共同待决的美国专利申请号14/228,129中找到。

根据本文提出的技术的诸方面,流处理系统100中的虚拟处理代理102可被构造为
运行时系统108的运行时基层122所提供并支持的虚拟组件。基于这种构造,虚拟处理代理
102可以总是可寻址以进行交互和/或操作,而?#36824;?#34394;拟处理代理102是否被激活。通过在运
行时系统108中的另一服务器上重新激活虚拟处理代理102,虚拟处理代理102可在该虚拟
处理代理102在其上被激活的服务器的?#25910;?#20043;后被?#25351;础?br />

在一些方面,虚拟处理代理102可各自被配置成实现某些动作并可共同提供用于
大规模软件应用的功能性。例如,在计算机游戏应用中,虚拟处理代理102可针对游戏应用
中的每个游戏被创建并被配置成管理这些游戏。虚拟处理代理102还可针对主存游戏应用
中的游戏的每个地图被创建。分开的虚拟处理代理102可进一步被创建并被配置成管理参
与游戏应用中的各游戏的个?#36865;?#23478;。虚拟处理代理102的配置(包括要由虚拟处理代理102
执行的动作、虚拟处理代理102的输入和输出、和/或其它配置)可通过虚拟处理代理102的
声明式定义来指定,或可用编程方式获得。

为了提供用于流处理的相干系统,流处理系统100中的各虚拟处理代理102可能需
要彼?#36865;?#20449;。例如,消息可被从一个虚拟处理代理102传递到另一个虚拟处理代理以更新该
虚拟处理代理102的状态,以激活该另一虚拟处理代理102,和/或以触发要由该另一虚拟处
理代理102执行的某些动作。根据本文描述的一些方面,来自虚拟处理代理102的旨在被传
递至其它虚拟处理代理102和/或系统中的另一实体的消息可作为事件112在由队列系统
104实现的队列106中发布。

队列系统104可包括实现队列106以接收并保持来自流处理系统100中的各实体的
事件发布的一个或多个服务器。应当理解,队列系统104和运行时系统108中的服务器可包
括相同或不同的服务器,且队列系统104和运行时系统108中的服务器可以是web服务器、应
用服务器、网络设施、专用计算机硬件设备、个人计算机(“PC”)、或这些的任何组合和/或本
领域中已知的其它计算设备。服务器可通过网络(在图1中未示出)连接,所述网络可以是局
域网(“LAN”)、广域网(“WAN”)、因特网、或本领域中已知的连接计算设备的任何其它联网拓
扑。

要在队列106中发布的事件112可包括与事件发送实体处已发生的或者在事件发
送实体处观察到的事件相关联的各?#20013;?#24687;,所述事件发送实体可以是虚拟处理代理102、客
户端计算设备116、服务器计算设备118、和/或流处理系统100中的其它可能实体。事件112
中包含的信息可包括但不限于:事件源起的实体的标识、事件的时间、事件的位置、事件中
涉及的实体的标识、和/或可被用来描述事件的其它信息。事件112可经由通过运行时系统
108发送事件发布110而在队列106中被发布。事件发布110可包括相应事件112中包含的所
?#34892;?#24687;,以及诸如该事件为用于发布的事件的指?#23613;?#25351;定事件112应当在何地和何时被发布
的数据等附加信息。在进一步方面中,队列系统104还可将被发布事件112保持或存储在队
列106中或队列系统104和/或运行时系统108能访问的其它存储位置中。

为了接收来自其它虚拟处理代理102和/或流处理系统100的其它事件源起实体的
事件以供处理,虚拟处理代理102可发送一个或多个事件订阅114以订阅来接收在队列106
中发布的事件。这种虚拟处理代理102在本文中可被称为那些事件的“显式订阅者处理代理
102?#34987;頡?#26174;式订阅者102”。作为示例而非限制,事件订阅114可包含指定订阅虚拟处理代理
102?#34892;?#36259;接收的事件的类型或内容的数据。事件订阅114还可指定在期间被订阅事件应当
发生的时间段。事件订阅114可进一步指定可被用来过滤要递送至虚拟处理代理102的事件
的一个或多个断言(predicate)或规则。应当理解,描述虚拟处理代理102?#34892;?#36259;接收的事
件的各种其它数据也可被包括在事件订阅114中。

如下面将更详细地讨论的,运行时系统108还可被配置成执行流处理层124,其在
本文中可被称为“流处理层124?#34987;頡?#36816;行时流处理层124”。运行时流处理层124可被配置成
管理流处理系统100中的诸实体间的事件通信,包括但不限于:管理队列106中的事件发布
110、协调事件112到虚拟处理代理102和/或其它事件订阅者的递送、接收并处理事件订阅
114、以及其它可能操作。

运行时流处理层124可接收来自一个或多个显式订阅者处理代理102的事件订阅
114,并在被订阅事件112在队列106中被发布时将被订阅事件112发送给相应显式订阅者处
理代理102。根据进一步方面,运行时流处理层124可进一步发送被发布事件112或者事件
112中包含的事件信息至尚未显式订阅事件112但是可能?#34892;?#36259;接收被发布事件112中包含
的信息的一个或多个虚拟处理代理102,这样的虚拟处理代理在本文中被称为被发布事件
112的“隐式订阅者处理代理102?#34987;頡?#38544;式订阅者102”。

隐式订阅者处理代理102可通过检查虚拟处理代理102的配置或设?#32654;?#26631;识,所述
配置或设置诸如要由虚拟处理代理102执行的动作、虚拟处理代理102的输入和输出、虚拟
处理代理102的状态、和/或虚拟处理代理102的其它配置。例如,如果要由虚拟处理代理102
执行的动作涉及发起被发布事件112、在被发布事件112中被提及、或以其它方?#25509;?#34987;发布
事件112相关联的对象或实体,则该虚拟处理代理102可被标识为隐式订阅者处理代理102。
如果被发布事件112中包括的数据被虚拟处理代理102消费或处理,则该虚拟处理代理102
也可被标识为隐式订阅者处理代理102。应当理解,这些示例仅是解说性的,并且不应被解
释为构?#19978;?#21046;。也可利用标识隐式订阅者处理代理102的其它方式。

一旦运行时流处理层124已标识隐式订阅者处理代理102,则事件112可通过运行
时基层122被递送至隐式订阅者处理代理102。如同上面讨论的,流处理系统100中的虚拟处
理代理102可被实现为被运行时系统108的运行时基层122支持的虚拟组件。从运行时流处
理层124的角度看,虚拟处理代理102可以总是可寻址以用于递送事件112,而?#36824;?#34394;拟处理
代理102是否在该系统中被激活。运行时流处理层124从而可将事件112传递至运行时基层
122以供递送。

在接收到事件112之后,运行时基层122可确定隐式订阅者处理代理102是否已被
激活,即,隐式订阅者处理代理102是否已被加载到存储器中并准备好操作。如果隐式订阅
者处理代理102尚未被激活,则运行时基层122可激活隐式订阅者处理代理102并且随后将
事件112递送至被激活的隐式订阅者处理代理102。类似地,在向显式订阅者处理代理102递
送事件112时,运行时基层122还可确定显式订阅者处理代理102是否被激活,且如果必要则
在递送事件112之前激活该显式订阅者处理代理102。

取决于虚拟处理代理102的实现和虚拟处理代理102被激活时的状态,一些被激活
的隐式订阅者处理代理102可能尚未被配置成接受和处理事件112。例如,隐式订阅者处理
代理102可能在激活时尚未构造事件处理程序(event handler)。在这种场景中,包括事件
112中包含的一些或全部数据的事件信息可以隐式订阅者处理代理102能够接受的格式被
重新布置并递送至隐式订阅者处理代理102。在其它场景中,将指示事件112发生的事件信
息发送到虚拟处理代理102可能就足够了而无需发送事件112中包含的详细数据。

基于接收的事件112或事件信息,一些隐式订阅者处理代理102可决定向运行时流
处理层124提交一个或多个事件订阅114以接收在队列106中发布的更多事件以进行处理。
如上面简要提及的,隐式订阅者处理代理102提交的显式事件订阅114中包含的事件可包括
在事件订阅114被接收和处理之前已在队列106中被发布的过去事件。运行时流处理层124
可从相应事件保持于其中的队列或其它存储中检索过去事件,并将所检索的事件递送至隐
式订阅者处理代理102。应当注意,?#24065;?#24335;订阅者处理代理102提交事件订阅114时,隐式订
阅者处理代理102可针对被订阅的事件转换为显式订阅者处理代理102并可按照上面针对
处理显式订阅者处理代理102所描述的类似的方式处理。

应当进一步理解,尽管上面主要描述了虚拟处理代理102可发送事件发布110、提
交事件订阅114、和/或接收事件112,然而流处理系统100中的各种其它实体也可执行这些
操作。例如,计算机游戏应用的用户可能对接收关于游戏的信息?#34892;?#36259;,诸如该游戏的排行
榜信息。用户可向运行时系统108发送事件订阅114以通过客户端计算设备116获得此类信
息,该客户端计算设备可以是个人计算机(“PC”)、膝上型计算机、?#22987;?#26412;、个人数?#31181;?#29702;
(“PDA”)、游戏控制台、机顶?#23567;?#30005;子阅读器、消费者电子设备、智能电话、平板计算设备、服
务器计算机、或能够与运行时系统108通信的任何其它计算设备。

类似地,服务器计算设备118可发送事件发布110以在队列106中发布游戏开始事
件112,该服务器计算设备可以是服务器计算机、web服务器、应用服务器、网络设施、专用计
算机硬件设备、或这些的组合和/或本领域中已知的其它计算设备,并且其上可执行游戏。
服务器计算设备118还可发送一个或多个事件订阅114以便接收服务器计算设备118?#34892;?#36259;
处理的事件112。流处理系统100中的其它实体也可被配置成按照与上面描述的类似的方式
发布、接收、和/或订阅事件112。

还应当领会,尽管图1主要公开了使用队列106来接收和保持来自流处理系统100
中的各实体的事件订阅110,然而也可按类?#21697;?#24335;使用各种其它机制。事实上,基本上能存
储和保持数据以供稍后处理的任何数据结构可按上面关于队列106描述的类?#21697;?#24335;被利
用。此应用旨在包括用于保持和存储事件发布110的所有此类数据结构。

现在参考图2,将描述示出队列106和运行时流处理层124的进一步方面的框图。如
上面简要讨论的,运行时流处理层124可提供和支持用于处理事件发布110和事件订阅114
的虚拟流。通过利用虚拟流,虚拟处理代理102和/或其它实体所提交的事件发布110和事件
订阅114可被定向至虚拟流而非队列106。结果是,虚拟处理代理102可能不需要知道队列
106的存在。图2解说了运行时流处理层124提取的各种虚拟流以及虚拟流、队列106和虚拟
处理代理102之间的交互。

如图2中所示,运行时流处理层124可包括用于提供和支持与虚拟流相关联的功能
性以及用于维持队列106和虚拟流间的事件的?#25104;?#30340;虚拟流处理模块202。虚拟流模块202
所提供的虚拟流可包括事件发布虚拟流204A-204C(其在本文可被单独称为事件发布虚拟
流204或被统称为诸事件发布虚拟流204)和事件订阅虚拟流206A-206D(其在本文中可被单
独称为事件订阅虚拟流206或被统称为诸事件订阅虚拟流206)。

每个事件发布虚拟流204可由要在其中发布的事件来定义,且每个事件订阅虚拟
流206可由订阅实体?#34892;?#36259;接收的事件定义。例如,虚拟处理代理102A可发送事件发布110
至运行时流处理层124以发布事件112。事件发布110可通过事件发布虚拟流204C被发送至
运行时流处理层124。在事件发布110被在运行时流处理层124处接收之前,事件发布虚拟流
204C可能不存在且事件发布110的到达可引起事件发布虚拟流204C被创建。换言之,事件发
布110或其中包含的事件可定义并引起事件发布110被发送到的事件发布虚拟流204的出
现。同样,其它虚拟处理代理102也可提交事件发布110至其相应的事件发布虚拟流204以发
布事件。在通过事件发布虚拟流204接收事件发布110之后,虚拟流模块202可将在事件发布
110中指定的事件发送至队列106以供发布。

类似地,当虚拟处理代理102P提交指示虚拟处理代理102P?#34892;?#36259;接收的事件的事
件订阅114时,这一事件订阅114可定义与由事件订阅114指定的事件相对应的事件订阅虚
拟流206D。结果是,通过提交事件订阅114,虚拟处理代理102P等同地订阅事件订阅114所定
义的事件订阅虚拟流206D。应当理解,虚拟处理代理102可通过向运行时流处理层124提交
一个或多个事件订阅114来订阅多个事件订阅虚拟流206。一旦运行时流处理层124已接收
到事件订阅114,则事件订阅虚拟流206D可被创建并出现。基于事件订阅114,虚拟流模块
202可检索在队列106中发布的事件112,并将事件112推送至事件订阅虚拟流206D,所述事
件接着可被递送至虚拟处理代理102P。

例如,虚拟处理代理102A可被配置成处理游戏,并可发送事件发布110至运行时流
处理层124以发布在该游戏中发生的事件112。被提交的事件发布110可引起游戏事件流
204C被创建以接收事件112以供发布。通过游戏事件流204C接收的事件112可被进一步发送
至队列106以供发布和存储。同时,运行时流处理层124可能已经接收了来自虚拟处理代理
102P的订阅来接收游戏中的所有杀害事件的事件订阅114。这种事件订阅114可已引起杀害
事件流206D被创建。

在游戏事件流204C中接收到事件发布110之后,虚拟流模块202可检测杀害事件,
(如果存在),通过游戏事件流204C发布的杀害事件应当被转发至杀害事件流206D以供递送
至虚拟处理代理102P。所述检测可通过例如利用队列106中和虚拟流模块202所维持的虚拟
流中的事件的?#25104;?#26469;执行,如上所讨论接着,对于通过游戏事件流204C发布的每个杀害事
件112,虚拟流模块202可从队列106检索杀害事件112并将其推送至杀害事件流206D以供递
送至虚拟处理代理102P。应当领会,上述示例仅是说明性的,且各种其它事件112、事件发布
110、事件订阅114和/或其它数据可通过虚拟流204和206和/或运行时流处理层124在虚拟
处理代理102和队列106中传递。

根据进一步方面,虚拟处理代理102提交的事件订阅114可进一步指定一个或多个
断言,所述断言可被用于进一步定义相应事件订阅虚拟流206。断言可由运行时流处理层
124在?#23454;?#26102;间处理以细化事件订阅虚拟流206,诸如以创建可被用于过滤被推送至事件订
阅虚拟流206的事件的一个或多个过滤器。利用断言,被发送至虚拟处理代理102的事件可
被进一步细化并从而消除不需要的事件到虚拟处理代理102的递送。

从上文可以看出,虚拟流204和206是高度动态和灵活的,并且只要需要即可被创
建,由此显著增加了流处理系统100的可扩展性。根据进一步方面,虚拟流204和206在逻辑
上可同时存在,但是仅在虚拟流204和206中有事件要处理时系统资源才被分配给它们。虚
拟流204和206可通过在某个时间段上没有在虚拟流204和206中接收到事件时回收其资源
而被停用。此时间段可被预先确定或者根据系统的状态(诸如系统资源的使用)动态调整。
这种实现在以细粒度构建虚拟流的场景中可能是有利的。例如,应用系统中的虚拟流可在
每用户基础上、?#21487;?#22791;基础上和/或每会话基础上被构造。在大型应用系统中,用户、设备
和/或会话的数量以及由此而来的虚拟流的数量可能在数亿或甚至数十亿数?#32771;丁?#28982;而,与
那些虚拟流相关联的事件可能仅不频繁地发生和/或按突发方式(in bursts)发生,且在一
个时刻,仅一小部分虚拟流可能需要是活动的。在这种系统中,通过仅在虚拟流204和206中
存在要处理的事件时才向虚拟流分配资源可显著提高效率和系统的可伸缩性。

而且,虚拟流模块202可被进一步配置成在与队列106交互之前聚集来往虚拟处理
代理102的通信。例如,虚拟流模块202可接收来自多个虚拟处理代理102的多个事件发布
110。这些多个事件发布110可通过例如复用(multiplexing)被聚集并被传递至队列106以
通过单个通信连接发布多个事件112。同样,从多个虚拟处理代理102接收的多个事件订阅
114可被处理和聚集,且要被发送至多个虚拟处理代理102的事件112也可通过与队列106的
单个通信连接被从队列106中检索。

应当领会,尽管上述示例已经描述了多个通信被聚集并通过单个通信连接传递至
队列106,然而应当理解,在运行时流处理层124和队列106之间可建立多于一个的通信连接
以用于通信。然而,建立的通信连接的数量可比来自虚拟处理代理102的通信请求(诸如事
件发布110、和/或事件订阅114)的数量小得多。随着流处理系统100的规模的增加,通信聚
集的优点可变得更加显著。例如,对于具有数百万个虚拟处理代理102的流处理系统100,来
自虚拟处理代理102的通信请求可能在数亿?#32771;叮?#19988;对于队列106来说与每个虚拟处理代理
102建立如此大数量的直接TCP/IP连接通常是不切实际的。通过通信聚集,虚拟流模块202
可将到队列106的直接TCP/IP连接的数?#32771;?#23569;到数千,由此显著减少通信资源的消耗。

应当进一步领会,尽管图1和2解说了一个队列106被用于发布和保持事件112,然
而也可采用多个队列106。在这种实现中,虚拟流模块202可被进一步配置成管理多个队列
106并维持队列106和各虚拟流204和206之间的事件的?#25104;洹?#36824;应当理解,流处理系统100中
的其它实体(诸如客户端计算设备和服务器计算设备)也可经由事件发布110发布事件,通
过虚拟流204和206提交事件订阅114和/或接收事件112。

图2进一步解说了用于利用处理代理容器208A-208B(其在本文中可被单独称为处
理代理容器208或被统称为诸处理代理容器208)组织和管理虚拟处理代理102的方面。每个
处理代理容器208可向虚拟处理代理102提供与其它处理代理容器208分开且隔绝的独立计
算环?#22330;?#21508;种计算资源(诸如虚拟机)可被分配至处理代理容器208以主存虚拟处理代理
102。每个处理代理容器208也可独立于其它处理代理容器208缩放。应当理解,发布事件112
的虚拟处理代理102和订阅并接收事件112的虚拟处理代理102可以处于同一处理代理容器
208中或处于两个不同的处理代理容器208中。还应当理解,虚拟处理代理102可按不涉及对
处理代理容器208的使用的各种其它方式被组织和管理。

图3是解说用于将事件递送至虚拟处理代理102的一个说明性例程300的各方面的
流程图。在一些实现中,例程300由上面关于图1描述的运行时系统108的运行时流处理层
124执行。然而,应当领会,例程300也可由运行时系统108的其它模块和/或组件执行或由图
1中解说的流处理系统100中的其它实体的模块和/或组件执行。

应该了解,这里参考图3和其他附图所描述的逻辑操作是(1)作为计算机实现的动
作或在计算系统上运行的程序模块的序列和/或(2)计算系统内的互连机器逻辑电路或电
?#32442;?#22359;来实现的。该实现是取决于计算系统的性能及其他要求的选择问题。因此,此处描述
的逻辑操作被不同地称为状态、操作、结构设备、动作或模块。这些状态、操作、结构设备、动
作和模块可以软件、固件、专用数字逻辑、以及其任何组合实现。还应该明白,可以执行比附
图中示出并在此处描述的操作更多或更少的操作。这些操作还可以?#20174;?#27492;处所描述的不同
次序来执行。还应当理解,所示的每个方法可在任何时间结束且不必完整地执行。

这些方法的部分或全部操作和/或基本等效的操作可通过执行计算机存储介质上
所包括的计算机可读指令来执行,如在下文中所定义的。如在说明书和权利要求书中使用
的术语“计算机可读指令”及其变型,在本文是用来广泛地包括例程、应用、应用模块、程序
模块、程序、组件、数据结构、算法等?#21462;?#35745;算机可读指令可以在各种系统配置上实现,包括
单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持式计算设备、基于微
处理器的可编程消费电?#30828;?#21697;、其组?#31995;鵲取?br />

例程300开始于操作302,其中运行时系统108的流处理层124可接收相应事件发布
虚拟流204中的事件发布110。如上面所讨论的,事件发布虚拟流204可基于接收的事件发布
110被动态创建。例程300随后进行至操作304,其中运行时流处理层124将在事件发布110中
指定的事件112发送至队列106以供发布。运行时流处理层124可进一步指示队列106将事件
112保持或存储在队列106中以使得事件112可在稍后被检索。在一些实现中,事件112还可
被保持或存储在队列106和/或运行时流处理层124能够访问的存储设备中。

从操作304,例程300进行至操作306,其中运行时流处理层124可从队列106检索事
件112,且例程300进一步前进至操作308,其中基于事件112的隐式订阅者处理代理102可被
标识。如上所述,隐式订阅者处理代理102是没有显式订阅事件112,但是可能?#34892;?#36259;接收被
发布事件112中包含的信息的虚拟处理代理102。隐式订阅者处理代理102可通过检查虚拟
处理代理102的配置或设?#32654;?#34987;标识,所述配置或设置诸如要由虚拟处理代理102执行的动
作、虚拟处理代理102的输入和输出、虚拟处理代理102的状态、和/或虚拟处理代理102的其
它配置。例如,如果要由虚拟处理代理102执行的动作涉及发起被发布事件112、在被发布事
件112中被提及、或以其它方?#25509;?#34987;发布事件112相关联的对象或实体,则该虚拟处理代理
102可被标识为隐式订阅者处理代理102。如果被发布事件112中包括的数据被虚拟处理代
理102消费或处理,则该虚拟处理代理102也可被标识为隐式订阅者处理代理102。

在一些实现中,运行时流处理层124可维持隐式激活表,该隐式激活表将不同类型
的事件或相应的事件订阅虚拟流206?#25104;?#21040;一个或多个隐式订阅者处理代理102。示例隐式
激活表在图6中示出且将在稍后描述。隐式激活表可被预先生成并由运行时流处理层124在
需要时查找。隐式激活表还可通过运行时流处理层124中执行的函数或模块实现,其可针对
给定事件或事件信息输出一个或多个隐式订阅者处理代理102。应当注意,隐式激活表可遵
循上面描述的相同原理按其它方式实现。

从操作308,例程300前进至操作310,其中可向在操作308中标识的隐式订阅者处
理代理102告知事件112,例如通过向隐式订阅者处理代理102发送事件112或事件112的事
件信息。如同上面提及的,事件信息可包含事件112内包含的或与事件112相关联的信息。取
决于隐式订阅者处理代理102的性?#21097;?#34987;发送至一些隐式订阅者处理代理102的事件信息可
包含事件112中包含的数据的一部分或全部。对于其它隐式订阅者处理代理102,事件信息
可仅包含事件112的存在的指?#23613;?#22914;将参考图4详细讨论的,基于接收到的事件112或事件信
息,隐式订阅者处理代理102可决定是否订阅以接收更多事件和/或执行进一步操作。

从操作310,例程300前进至操作312,其中运行时流处理层124可接收来自一个或
多个隐式订阅者处理代理102的事件订阅114以订阅相应事件订阅虚拟流206。例程300接着
前进至操作314,其中运行时流处理层124可确定显式事件订阅114中指定的事件是否包括
已经发生并且已经在队列106中发布的过去事件。如果确定显式事件订阅114包括过去事
件,则例程300前进至操作316,其中运行时流处理层124可从队列106和/或存储过去事件的
其它存储设备检索过去事件,并将检索的过去事件递送至相应虚拟处理代理102。

从操作316,或者如果在操作314确定显式事件订阅114不包括过去事件,则例程
300前进至操作318,其中运行时流处理层124可基于接收到的显式事件订阅114更?#28388;?#25152;维
护的显式订阅和/或执行其它操作,诸如更新事件发布虚拟流204、事件订阅虚拟流206、以
及队列106中的事件的?#25104;洹?br />

从操作306,例程300还可前进到操作320。在操作320,运行时流处理层124可基于
虚拟处理代理102先前提交的事件订阅114标识一个或多个显式订阅者处理代理102。例程
300可进一步前进至操作322,其中事件112可被递送至显式订阅者处理代理102。从操作318
或操作322,例程300前进至操作324,其中可确定运行时流处理层124是否需要递送更多事
件。如果运行时流处理层124需要递送更多事件,则例程300返回操作302以接收更多事件发
布110以供处理和递送。否则,例程300前进至操作326,在该处例程300结束。

应当领会,在上述事件递送过程中,在向显式订阅者处理代理102递送事件112和/
或向隐式订阅者处理代理102发送事件112或事件信息时,运行时基层122可首先确定相应
处理代理102是否已被激活。如果存在任何尚未被激活的处理代理102,则运行时基层122可
激活处理代理102并且接着将事件112或事件信息递送至被激活的处理代理102。

就此,处理代理102(诸如隐式订阅者处理代理102)可被动态激活,包括在流206中
处理代理102负责处理的第一事件112到达之际分配系统资源。从而,系统资源(诸如存储器
和CPU)可无需在第一事件112到达之前被分配给处理代理102。同样,在处理代理102变得空
闲达给定时间段(例如,因为没有从流206接收到处理代理102所订阅的事件112以供处理)
后,处理代理102可被?#35813;?#22320;停用以回收其系统资源。用于停用处理代理102的该给定时间
段可被预先确定或者根据系统的状态(诸如系统资源的使用)动态调整。

图4是解说用于事件处理和订阅的一个说明性例程400的各方面的流程图。在一些
实现中,例程400被上面关于图1和2描述的虚拟处理代理102执行。然而,应当领会,例程400
还可由图1中示出的流处理系统100中的其它实体执行。

例程400开始于操作402,其中隐式订阅者处理代理102可从运行时流处理层124接
收事件112或事件112的事件信息,并进一步处理接收的事件112或事件信息。从操作402,例
程400进一步前进至操作404,其中隐式订阅者处理代理102可基于接收的事件112或事件信
息确定它是否需要订阅更多事件112。如果确定隐式订阅者处理代理102需要订阅更多事
件,则例程前进至操作406,其中隐式订阅者处理代理102可标识隐式订阅者处理代理102有
兴趣从其接收事件的一个或多个事件订阅虚拟流206。在操作408,隐式订阅者处理代理102
可通过向运行时流处理层124提交事件订阅114来订阅被标识的事件订阅虚拟流206。通过
提交事件订阅114,就被提交的事件订阅114而言,隐式订阅者处理代理102可转变为显式订
阅者处理代理102。

从操作408,例程400前进至操作410,其中显式订阅者处理代理102可接收在队列
106中发布的被订阅事件。如同上面所讨论的,如果在操作408处提交的事件订阅114指定了
过去事件,则在操作410接收的事件可包括那些过去事件。例程400接着前进至操作412,其
中被接收的事件可被处理。例程400进一步前进至操作414,其中可确定显式订阅者处理代
理102是否需要更多事件来处理。如果确定需要更多事件,则例程400返回至操作410,其中
显式订阅者处理代理102可接收更多事件112以供处理。如果在操作414确定不需要更多事
件,或者如果在操作404确定隐式订阅者处理代理102不需要订阅更多事件,则例程400前进
至操作416,其中例程400结束。

图5A-5D解说了根据本文提出的一个或多个方面的示例虚拟处理代理102响应于
在不同时间点在队列106中发布的事件112所进行的操作。如图5A中所解说的,运行时系统
108的流处理层124可维持或以其它方式生成隐式激活表506,该隐式激活表将不同类型的
事件112或其相应的事件订阅虚拟流206?#25104;?#21040;隐式订阅者处理代理102。根据图5A中示出
的示例隐式激活表506,地图处理代理、游戏处理代理、排行榜处理代理、和/或精英玩家处
理代理可被标识为游戏流504的隐式订阅者处理代理102。类似地,对于玩家流520,潜在隐
式订阅者处理代理102可包括玩家处理代理、游戏处理代理、和/或精英玩家处理代理。基于
隐式激活表506,当事件112被接收并在队列106中被发布时,运行时流处理层124可标识并
激活一个或多个隐式订阅者处理代理102。

在时间T0,游戏开始事件502在队列106中被发布,例如通过事件发布虚拟流204。
游戏开始事件502中包含的数据指示游戏X开始于地图H,其中玩家A-F当前在游戏X中。运行
时流处理层124可从队列106检索游戏开始事件502,并标?#38431;?#28216;戏开始事件502相对应的游
戏流504的隐式订阅者处理代理102。基于隐式激活表506,运行时流处理层124可确定游戏
流504的隐式订阅者处理代理102可包括用于计算地图G上的杀害数量的地图处理代理508、
用于计算地图H上的杀害数量的地图处理代理510、以及用于计算精英玩家C、M和S的杀害数
量的精英玩家处理代理512。运行时流处理层124接着可基于游戏开始事件502生成游戏开
始事件信息514并将该信息推送?#25509;?#25103;流504以供递送到被标识的隐式订阅者处理代理
508、510和512。

在如在图5B中示出的时间T1,游戏开始事件信息514可能已经被递送至隐式订阅
者处理代理508、510和512并被其处理。在处理代理508,可能确定与游戏开始事件信息514
中指示的游戏X相关联的地图H不同于地图处理代理508?#34892;?#36259;的地图G。结果是,处理代理
508可能针对接收到的游戏开始事件信息514不做处理。然而,在地图处理代理510,可能确
定游戏开始事件信息514中包含的地图H是地图处理代理510?#34892;?#36259;的,并且从而地图处理
代理510可接着发送订阅520以订阅游戏X杀害流530以接收游戏X中的所有杀害事件。

类似地,精英玩家处理代理512可确定游戏X包括其正在处理的精英玩家之一,并
且从而可提交订阅524以订阅游戏X玩家C杀害流532以接收玩家C在游戏X中的所有杀害事
件。应当注意,尽管游戏开始事件信息504被递送至处理代理508、510和512并由其处理,然
而可能有更多事件在队列106中被发布,诸如玩家C的杀害事件514、用于?#23849;?#29609;家A的?#23849;?br />事件516、以及玩家F的杀害事件518。

在如图5C中所示的时间T2,运行时流处理层124可处理地图处理代理510和精英玩
家处理代理512提交的事件订阅。因为订阅522请求自游戏X开?#35745;?#30340;所有杀害事件,所以运
行时流处理层124可确定这种订阅包括在接收到订阅522之前发布的过去杀害事件514和
518。同样,运行时流处理层124还可确定订阅524包括过去杀害事件514。相应地,运行时流
处理层124可从队列106检索杀害事件514和518,将杀害事件514和518通过游戏X杀害流530
发送到地图处理代理510并将杀害事件514通过游戏X玩家C杀害流532发送到精英玩家处理
代理512。

如图5D中所示,在时间T3,新杀害事件528在队列106中被发布。运行时流处理层
124可从队列106检索事件528并确定此新杀害事件528属于游戏X杀害流530。杀害事件528
可接着被推送至游戏X杀害流530并被递送至地图处理代理510。随着更多事件按类?#21697;?#24335;
在队列106中被发布,运行时流处理层124可继续处理并递送这些事件。

从上文可以看出,通过允许隐式订阅者处理代理102接收关于它尚未订阅的事件
的信息,流处理代理102可基于流过系统的事件被自动激活,由此支持非常粒度化的流处理
单元,由此显著简化编程模型。而且,通过将流的定义缩减为要通过流递送的事件的语义,
处理代理102可不需要知晓流拓扑并可转而聚焦于它们希望处理的具体事件,这进一步简
化了编程模型。?#36865;猓?#36890;过利用本文提出的技术,复杂事件检测和聚集逻辑的自组织定义可
被动态应用于该系统而无需重新编译或重新部署该拓扑。

图6示出能够存储和执行图1中示出的组件的计算设备600的示例计算机架构。图6
所示的计算机体?#21040;?#26500;示出了控制台、常规服务器计算机、工作?#23613;?#21488;式计算机、膝上型计
算机、平板、平板?#21482;?#32593;络设备、个人数?#31181;?#29702;(“PDA”)、电子阅读器、数?#22336;?#31389;电话或其他
计算设备,并且可用于执行本文提及的任一软件组件。例如,图6所示的计算机体?#21040;?#26500;可
用于执行上述任一软件组件。

计算设备600包括基板602或“母板?#20445;?#20854;是大量组件或设备可通过系统总线或其他
电子通信路径所连接到的印刷电路板。在一个说明性方面中,一个或多个中央处理单元
(“CPU”)604结?#38386;?#29255;组606一起操作。CPU 604可以是执行计算设备600的操作所需的算术
和逻辑操作的标准可编程处理器。

CPU 604通过从一个?#33267;?#30340;物理状态转换到下一状态来执行操作,该转换是通过
操纵在各状态之间进行区别并改变这些状态的切换元件来实现的。切换元件一般可包括维
?#33267;?#20010;二进制状态之一的电子电路,诸如触发电路,以及基于一个或多个其它切换元件的
状态的逻辑组合来提供输出状态的电子电路,诸如逻辑门。这些基本切换元件可被组合以
创建更复杂的逻辑电路,包括寄存器、加减器、算术逻辑单元、浮点单元等?#21462;?br />

芯片组606提供CPU 604与基板602上的其余组件和器件之间的接口。芯片组606可
提供对用作计算设备600中的主存储器的RAM 608的接口。芯片组606还可提供对诸如只读
存储器(“ROM”)610或?#19988;资?#24615;RAM(“NVRAM”)之类的用于存储有助于启动计算设备600并在
各种组件和器件之间传送信息的基本例程的计算机可读存储介质的接口。ROM 610或NVRAM
还可存储根据本文描述的方面的计算设备600的操作所必需的其他软件组件。

计算设备600可以通过诸如局域网620等网络使用到远程计算设备和计算机系统
的逻辑连接来在联网环境中操作。芯片组606可包括用于通过诸如千兆比特以太网适配器
等网络接口控制器(NIC)612提供网络连通性的功能。NIC612能够通过网络620将计算设备
600连接到其他计算设备。应当领会,多个NIC 612可存在于计算设备600中,以将该计算机
连接到其它类型的网络和远程计算机系统。局域网620允许计算设备600与远程服务和服务
器(诸如远程计算机650)通信。

计算设备600可连接到为计算设备提供?#19988;资源?#20648;的大容?#30475;?#20648;设备616。大容
?#30475;?#20648;设备616可存储已经在本文更详细地描述的系统程序、应用程序、其他程序模块和数
据。大容?#30475;?#20648;设备616可以通过连接到芯片组606的存储控制器614连接到计算设备600。
大容?#30475;?#20648;设备616可包括一个或多个物理存储单元。存储控制器614可以通过串行附连
SCSI(“SAS”)接口、串行高级技术附连(“SATA”)接口、光?#36865;?#36947;(“FC”)接口或用于在计算机
和物理存储单元之间物理地连接和传送数据的其它类型的接口与物理存储单元对接。还应
理解,大容?#30475;?#20648;设备616、其他存储介质和存储控制器614可包括多媒体卡(MMC)组件、
eMMC组件、安全数字(SD)组件、PCI高速组件?#21462;?br />

计算设备600可通过变换物理存储单元的物理状态以?#20174;?#34987;存储的信息来将数据
存储在大容?#30475;?#20648;设备616上。在本说明书的不同实现中,物理状态的具体变换可取决于各
种因素。这些因素的示例可以包括,但不仅限于:用于实现物理存储单元的技术,大容?#30475;?br />储设备616被表征为主存储还是辅存储等?#21462;?br />

例如,计算设备600可通过经由存储控制器614发出以下指令来将信息存储在大容
?#30475;?#20648;设备616:更改?#25490;?#39537;动器单元内的特定位置的磁特性、光存储单元中的特定位置的
反射或折射特性,或者固态存储单元中的特定电容、晶体管或其它?#33267;?#32452;件的电特性。在没
有偏离本说明书的?#27573;?#21644;精神的情况下,物理介质的其他变换也是可能的,前面提供的示
例只是为了便于此描述。计算设备600还可通过检测物理存储单元内的一个或多个特定位
置的物理状态或特性来从大容?#30475;?#20648;设备616中读取信息。

除了上述大容?#30475;?#20648;设备616之外,计算设备600还可访问其它计算机可读存储介
质以存储和检索信息,诸如程序模块、数据结构或其它数据。由此,尽管运行时系统108和其
他模块被描绘为存储在大容?#30475;?#20648;设备616中的数据和软件,但应理解,运行时系统108和/
或其他模块可被至少部分地存储在设备600的其他计算机可读存储介质中。虽然对此处包
含的计算机可读介质的描述引用了诸如固态驱动器、?#25165;?#25110;CD-ROM驱动器之类的大容?#30475;?br />储设备,但是本领域的技术人员应该明白,计算机可读介质可以是可由计算设备600访问的
任何可用计算机存储介质或通信介质。

通信介质包括诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、
数据结构、程序模块或其它数据,且包含任?#26410;?#36882;介质。术语“已调制数据信号”指的是其一
个或多个特征以在信号中编码信息的方式被更改或设定的信号。作为示例而非限制,通信
介质包括诸如有线网络或直接线连接之类的有线介?#21097;?#20197;及诸如声学、RF、红外及其他无线
介质之类的无线介质。上述的?#25105;?#32452;合也应包括在计算机可读介质的?#27573;?#20043;内。

作为示例而非限制,计算机存储介质可包括以用于存储诸如计算机可读指令、数
据结构、程序模块或其它数据等信息的任何方法或技术实现的?#36164;?#24615;和?#19988;资?#24615;、可移动
和不可移动介质。例如,计算机介质包括但不限于,RAM、ROM、EPROM、EEPROM、闪存或其他固
态存储器技术,CD-ROM、数字多功能盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储,磁带?#23567;?br />磁带、?#25490;?#23384;储或其他磁?#28304;?#20648;设备,或能用于存储所需信息且可以由计算设备600访问的
任何其他介质。为了权利要求书的目的,短语“计算机存储介质”和“计算机可读存储介质”
及其变型不包括波或信号本身和/或通信介质。

大容?#30475;?#20648;设备616可存储用于控制计算设备600的操作的操作系统622。根据一
个方面,操作系统包括LINUX操作系统。根据另一方面,操作系统包括来自微软公司的
操作系统。根据进一步方面,操作系统可包括可包括UNIX、Android、Windows
Phone或iOS操作系统。应理解,也可利用其他操作系统。大容?#30475;?#20648;设备616可存储由计算
设备600利用的其他系统或应用程序和数据,诸如运行时系统108和/或上述任一其他软件
组件和数据。大容?#30475;?#20648;设备616可能还存储本文未具体标识的其他程序和数据。

在一个方面中,大容?#30475;?#20648;设备616或其他计算机可读存储介质用计算机可执行
指令来编码,这些计算机可执行指令在被加载到计算设备600中时将计算机从通用计算系
统变换成能够实现本文描述的方面的专用计算机。这些计算机可执行指令通过如上所述地
指定CPU 604如何在各状态之间转换来变换计算设备600。根据一个方面,计算设备600具有
对存储计算机可执行指令的计算机可读存储介质的访?#21097;?#36825;些计算机可执行指令在由计算
设备600执行时执行以上参考图3和图4描述的各个例程。计算设备600可能还包括用于执行
本文描述的?#25105;?#20854;他计算机实现的操作的计算机可读存储介质。

计算设备600还可包括用于接收和处理来自输入设备619的输入的一个或多个输
入/输出控制器617。输入设备619可包括数个输入设备,诸如键盘、鼠标、话筒、?#21453;?#24335;套件、
触摸板、触摸屏、电子指示笔、或任何其它类型的输入设备。类似地,输入/输出控制器617可
向诸如计算机监视器、平板显示器、数字?#38431;?#20202;、打印机、绘图仪或其它类型的输出设备等
显示器提供输出。可以领会,计算设备600可以不包括图6所示的全部组件,可以包括未在图
6中明确示出的其它组件,或者可使用完全不同于图6所示的体?#21040;?#26500;。

可鉴于以下条款来考虑本文提出的公开。

条款1:一种用于递送事件的计算机实现的方法,所述方法包括:接收事件的发布;
基于处理代理的配置标识用于接收与所述事件相关联的信息的处理代理,其中所述处理代
理没有显式订阅以接收所述事件;确定所述处理代理是否被激活;响应于确定所述处理代
理没有被激活,激活所述处理代理;将与所述事件相关联的信息递送?#20102;?#36848;处理代理;从所
述处理代理接收对一个或多个事件的订阅;以及将所述一个或多个事件递送?#20102;?#36848;处理代
理。

条款2:如条款1所述的方法,进一步包括:确定所述订阅是否指定要被递送的一个
或多个过去事件;以及响应于确定所述订阅指定要被递送的一个或多个过去事件,将所述
一个或多个过去事件递送?#20102;?#36848;处理代理。条款3:如条款1-2所述的方法,其中接收在队列
中的事件的发布包括:接收在队列中发布所述事件的请求;激活与所述事件相对应的虚拟
流;以及通过所述虚拟流将所述事件发布在所述队列中。

条款4:如条款1-3所述的方法,对一个或多个事件的订阅定义虚拟流,且所述订阅
是对与所述一个或多个事件相对应的所述虚拟流的订阅。

条款5:如条款1-4所述的方法,激活所述处理代理包括向所述处理代理分配系统
资源,以及?#36816;?#36848;虚拟流的订阅激活所述虚拟流并引起系统资源被分配给所述虚拟流。

条款6:如条款1-5所述的方法,进一步包括:当在特定时间段上没有在所述虚拟流
中接收到事件时,通过回收分配给所述虚拟流的系统资源来停用所述虚拟流;以及当所述
处理代理变得空闲达给定时间段时,通过回收分配给所述处理代理的系统资源来停用所述
处理代理。

条款7:如条款1-6所述的方法,其中所述处理代理的配置被用编程方式获得或者
从所述处理代理的声明式定义确定。

条款8:如条款1-7所述的方法,其中所述处理代理能够被寻址以用于递送所述事
件,而?#36824;?#25152;述处理代理是否被激活。

条款9:一种其上存储有计算机可执行指令的计算机可读存储介?#21097;?#25152;述计算机可
执行指令在由计算机执行时使所述计算机:确定用于接收在队列中被发布且所述处理代理
没有显式订阅的事件的处理代理,其中所述事件通过与所述事件相对应的第一虚拟流在所
述队列中被发布;确定所述处理代理是否被激活;响应于确定所述处理代理没有被激活,激
活所述处理代理;引起所述事件的事件信息被递送?#20102;?#36848;处理代理;处理对由显式订阅定
义的第二虚拟流的显式订阅,其中所述显式订阅由所述处理代理响应于被递送?#20102;?#36848;处理
代理的所述事件信息被提交;以及引起所述第二虚拟流中的事件被递送?#20102;?#36848;处理代理。

条款10:如条款9所述的计算机可读存储介?#21097;?#20854;中在所述队列中发布的事件被保
持。条款11:如条款9-10所述的计算机可读存储介?#21097;?#36827;一步包括在由计算机执行时将使得
所述计算机执行以下动作的计算机可执行指令:确定所述第二虚拟流是否包括在所述队列
中发布的过去事件;以及响应于确定所述第二虚拟流包括在所述队列中发布的过去事件,
引起所述过去事件被推送?#20102;?#36848;第二虚拟流并被递送?#20102;?#36848;处理代理。

条款12:如条款9-11所述的计算机可读存储介?#21097;?#36827;一步包括在由计算机执行时
将使得所述计算机执行以下动作的计算机可执行指令:当在特定时间段上没有在所述第二
虚拟流中接收到事件时,通过回收分配给所述第二虚拟流的系统资源来停用所述第二虚拟
流;以及当所述处理代理变得空闲达给定时间段时,通过回收分配给所述处理代理的系统
资源来停用所述处理代理。

条款13:如条款9-12所述的计算机可读存储介?#21097;?#28608;活所述处理代理包括向所述
处理代理分配系统资源,以及?#36816;?#36848;第二虚拟流的订阅激活所述第二虚拟流并引起系统资
源被分配给所述第二虚拟流。

条款14:如条款9-13所述的计算机可读存储介?#21097;?#20854;中所述处理代理能够被寻址
以用于递送所述事件,而?#36824;?#25152;述处理代理是否被激活。

条款15:如条款9-14所述的计算机可读存储介?#21097;?#20854;中所述处理代理用编程方式
获得或基于所述处理代理的声明式定义来确定。

条款16:一种系统,包括执行运行时的一个或多个计算设备,所述运行时被配置
成:管理用于接收和保持事件的发布的队列;在第一虚拟流中接收事件的发布并将所述事
件的发布转发?#20102;?#36848;队列;基于处理代理的配置标识用于递送所述事件的事件信息的处理
代理,其中所述处理代理没有显式订阅以接收所述事件并且能被寻址以用于递送所述事件
信息而?#36824;?#25152;述处理代理是否被激活;确定所述处理代理是否被激活;响应于确定所述处
理代理没有被激活,激活所述处理代理;将所述事件信息递送?#20102;?#36848;处理代理;在所述事件
信息被递送?#20102;?#36848;处理代理之后,从所述处理代理接收对第二虚拟流中的事件的显式订
阅;在接收所述显式订阅之前,确定所述显式订阅是否指定在所述队列中发布的过去事件;
响应于确定所述显式订阅指定过去事件,从在所述队列中发布的过去事件检索过去事件并
将所述过去事件推送?#20102;?#36848;第二虚拟流,以及将所述第二虚拟流中的事件递送?#20102;?#36848;处理
代理。

条款17:如条款16所述的系统,其中激活所述处理代理包括向所述处理代理分配
系统资源,以及其中?#36816;?#36848;第二虚拟流的订阅激活所述第二虚拟流并引起系统资源被分配
给所述第二虚拟流。

条款18:如条款16-17所述的系统,进一步包括执行一个或多个处理代理的多个服
务器,其中所述运行时被进一步配置成在一处理代理在其上被激活的一个服务器?#25910;?#20043;后
通过在另一服务器上重新激活所述处理代理来?#25351;?#25152;述处理代理。

条款19:如条款16-18所述的系统,其中所述处理代理的配置被用编程方式获得或
者从所述处理代理的声明式定义确定。

条款20:如条款16-19所述的系统,其中所述运行时被进一步配置成:当在特定时
间段上没有在所述第二虚拟流中接收到事件时,通过回收分配给所述第二虚拟流的系统资
源来停用所述第二虚拟流;以及当所述处理代理变得空闲达给定时间段时,通过回收分配
给所述处理代理的系统资源来停用所述处理代理。

基于上述内容,应当领会,本文提供了用于订阅、接收和处理事件的概念和技术。
虽然已经以计算机结?#22266;?#24449;、方法动作、以及计算机可读介质专用的语言描述了本文提出
的主题,但是将理解,在所附权利要求书中所限定的本发明不一定限于本文描述的具体特
征、动作或介质。相反,这些具体特征、动作以及介质是作为实现权利要求的示例形式而公
开的。

以上所述的主题仅作为说明提供,并且不应被解释为限制。可对本文中所描述的
主题作出各?#20013;?#25913;和改变,而不必遵循示出和描述的示例方面和应用且不背离所附权利要
求书中所阐述的本发明的真正精神和?#27573;А?br />

关于本文
本文标题:利用虚拟处理代理的流处理.pdf
链接地址:http://www.pqiex.tw/p-6091862.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 我想干个小餐桌赚钱吗 派派主持赚钱嘛 彩天地app正规嘛 采购比会计赚钱吗 昨天青海快3开奖结果 吉林时时彩计划软件 梦幻打宝图多少级赚钱吗 足彩比分直播360 一肖中特平100 金蟾捕鱼游戏网络版