具体实施方式
概览
以介绍的方式,通过计算机可执行程序指令(如,计算机程序)的设计以及使用控制计算设备的操作。传统地,考虑计算复杂性和程序的存储器占用量而创建程序。例如,存在诸如大O提醒等之类的度量来使编程者能推理出给定计算机程序或算法的计算复杂性,这接着能实现对速度和效率高度优化的各种算法的开发。另外,在一些情况中相对存储器存取,磁盘存取较慢,设计了各种程序来平衡与存储器存取相关联的速度和存储器要求。例如,对于相对较高的存储器要求,可设计其中需要最少的磁盘存取的数据库应用和/或其他应用。类似地,为在具有大量存储器的计算设备上使用而设计的程序可利用设备存储器来执行缓冲和/或用于减少磁盘存取和/或增加程序速度的其他机制。
然而,尽管存在推理出程序的速度和存储器占用量的各种机制,这些机制没有将能耗考虑在内,这同样也是对效率、降低成本等的理想考虑。进一步,尽管在计算系统中诸如存储器之类的因素一般表现为固定成本(如,因为存储器的给定量只需要购买一次),随着时间推移,能耗表现为作为计算系统的操作成本中的一项基本因素的可变成本。附加地,可理解的是,将来,由于增加的要求和其他因素,预计能量消耗增加,这导致能量消耗随时间变得越来越重要。
传统地,编程技术已经在为限制能耗的计算系统编写软件时遭遇了困难。基本所有类型的计算系统(诸如嵌入式系统或移动手持设备之类较小的设备以及较大的数据中心和其他大型计算系统)都会经历这个困难。例如,对于诸如移动手持设备之类的小形状因子设备而言,理想的是以降低的能耗来最大化电池寿命,而对于大型系统而言是为了降低操作成本(如,与增加系统能耗的冷却要求相关联等)。由于传统的用于优化程序的存储器占用量和正确度的度量已造成了程序处理的极大负担,理想的是在不增加这个负担的情况下实现用于优化计算系统的能耗的技术。另外,理想的是利用类似技术来减轻与优化程序存储器或正确性相关联的传统的困难。
一些现有计算系统实现用于减少系统功率储备的各种原始机制(primitive mechanism)。这些机制包括,例如,降低处理器时钟速度、待机或休眠模式、显示器亮度降低等。然而,这些技术一般在自组织模式中部署且不提供编程模型,从而可在程序中利用这些机制。进一步,相比提供用于测量性能的具体度量的存储器之类的资源,难以量化由这些机制所提供的能源节省的量。因此,难以使用传统的技术对特定功率级别将计算系统优化。
在实施例中,利用基于事件的编程的异步特性来缓解传统编程技术的上述缺点。抽象而言,此处的各种实施例产生能耗和/或类似于能耗的其他资源的节省,这类似于经由异步电路实现的节省。例如,如果在异步电路中没有出现输入事件,电路可保持断电(如,对比于时钟系统,其电路是持续保持带电的)。在此处的各实施例中,应用类似的概念到软件系统中。在其他实施例中,使用各种机制来定速(pace)将事件输入到软件系统的速率。这些机制包括,如,在底层系统和环境、应用优选权管理、资源成本分析等之间的反馈回路。此处进一步详细描述这些机制,以及其他可采用的机制。
在一个实施例中,如此处所述的计算事件管理系统包括被设置为经由与环境相关联的至少一个事件流来接收一个或多个事件的事件管理器组件,和被设置为计算目标事件使用水平(level)的资源分析器组件,其中至少一个事件处理节点将与该一个或多个事件中的相应事件相关地使用该目标资源使用水平(level)。附加地,事件管理器组件以根据目标资源使用水平而确定的顺序和速率将该一个或多个事件中的至少一个事件提供给该至少一个事件处理节点。
在一些实施例中,该目标资源使用水平可包括功率水平和/或其他合适的工作水平。在另一个实施例中,资源分析器组件还被设置标识资源成本,基于此,事件管理器组件将事件提供给至少一个事件处理节点。
在另一个示例中,该系统,还包括解样组件,其被设置为至少部分地通过从一个或多个到达的事件中移除至少一个事件而产生一个或多个经解样的事件流。作为响应,事件管理器组件将经解样的事件流中的至少一个事件提供给事件处理节点。在一个示例中,可至少部分地基于,如从相应事件的实例化所经历的时间来移除响应事件。
在进一步的示例中,将事件管理器组件进一步设置为将至少两个事件的猝发串(burst)提供给至少一个事件处理节点。附加地或可选地,可将事件管理器组件进一步设置为将至少一个事件分布在一组事件处理节点中。
在一些情况下该系统附加地包括反馈处理组件,其被设置为从至少一个事件处理节点接收活动级别反馈并控制将事件至少部分地基于该活动级别反馈提供给至少一个事件处理节点的速率。
在还有另一个示例中,该系统可附加地包括被设置为标识相应事件的优先级的优选权管理器组件。在这样的实施例中,可将事件管理器组件进一步设置为根据相应事件的优先级将至少一个事件提供给至少一个事件处理节点。在一个示例中,将优先级管理器组件进一步设置为获得与相应事件的优先级相关的至少一个用户指定的信息或者与相应事件流的优先级相关的用户指定的信息。附加地或可选地,可将该优先级管理器组件进一步设置为至少部分地基于至少一个事件处理节点的操作状态而动态地配置相应事件的优先级。
在此处描述的还有另一个示例中,将事件管理器组件进一步设置为以不规则的速率标识经由至少一个事件流接收的一组事件,并以均匀速率将该组事件提供给至少一个事件处理节点。可将该事件管理器组件附加地或可选地设置为将经由至少一个事件流接收的相应事件聚集起来。
在进一步的示例中,该系统包括配置文件(profile)管理器,其被设置为维护与至少一个事件处理节点的资源使用配置文件相关的信息。接着,事件管理器组件可利用这个资源使用配置文件信息来将至少一个事件提供给至少一个事件处理节点。
在另一个实施例中,用于协调事件驱动的计算系统的方法包括接收与至少一个事件流相关联的一个或多个事件、标识相应于该一个或多个事件将由至少一个事件处理器所维护的工作水平、以及至少部分地基于一个调度(根据将由该至少一个事件处理器所维护的工作水平而确定)来将一个或多个事件中的至少一个事件分配给至少一个事件处理器。
在示例中,对应于一个或多个事件而标识将由至少一个事件处理器所维护的功率水平和/或其他合适的资源水平。在另一个示例中,至少部分地通过选择不分配至少一个所接收到的事件和/或跨多个事件处理器以分布方式分配相应事件而执行分配。在附加示例中,该方法可包括接收与至少一个事件处理器的活动级别相关的反馈,基于此可分配至少一个事件。
在附加实施例中,辅助协调和管理计算事件的系统包括,用于标识与计算事件的一个或多个流相关的信息的装置、用于确定将由至少一个事件处理节点在处理计算事件的一个或多个流的相应事件时所使用的资源使用级别的装置、以及用于至少部分地基于由用于确定的装置所确定的资源使用水平而将计算事件的一个或多个流的至少一个计算事件分配给至少一个事件处理节点的装置。
此处,上文已呈现了用于实现知晓资源的(resource-aware)程序事件管理的一些实施例的概览。作为接下来的内容的向导,更详细地描述分布式事务管理的各种示范性、非限制性实施例和特征。然后,为了附加说明给出一些非限制行的实现和示例,接着是可在其中实现这样的实施例和/或特征的代表性网络和计算环境。
经由事件流管理的绿色计算
为了进一步描述,可以理解,从在系统上运行的程序的角度而言一些现有的计算系统是一样的。相应地,用以程序为中心的方式来实现这样的系统中的性能分析,其有关于程序如何与其环境交互。然而,在这样的系统中的资源使用仅能通过在该系统上运行的程序来优化。例如,由于程序一般被处理为一系列指令,不可能通过解样程序来获得性能增益,因为在一些情况下从程序中移除指令将导致程序产生不正确的后果。进一步,如上所述,难以使用传统的编程技术来创建优化诸如能耗之类的资源的程序。
反之,此处提供的各实施例在其环境的控制中放置程序。相应地,程序环境可为底层程序提供输入信息,以使该程序能等待输入并一旦接收到输入就相应地反应。在这个方式中,可将程序视为状态机器,其中程序接收输入,基于程序的当前状态来执行一个或多个动作来处理该输入,并在一旦完成对该输入的处理时在合适的时候移至另一个状态。
在诸如上述的实现中,程序为响应相应输入而消耗资源(如,功率)。相应地,通过控制环境提供输入给程序的方式(如,使用速率控制、过滤、聚集等),可以高量的粒度来控制与程序相关联所使用的资源。
相关于如上所述的进行程序输入控制的一个或多个非限制性方法,以图1大体上示出示例性计算系统的框图。该计算系统包括环境100,其以一个或多个到达事件流110的方式来提供输入。进一步,可在计算系统中配置事件处理组件140来以异步方式实现一个或多个程序。例如,可配置事件处理组件140来等待输入(如,以事件和/或其他合适的输入的方式),并在以一个或多个预先指定的方式接收到输入的时候来处理输入。相应地,在不响应输入的时候可停用(如,关断电源,等)事件处理组件140,藉此降低该计算系统使用的资源。
进一步如图1所示,事件管理器组件120从环境100中截取到达的事件流110并处理到达的事件流110的相应事件来产生一个或多个经管理的事件流130,其顺序地被提供给事件处理组件140。如此处所述,事件管理器组件120可实现用于将事件流调节给事件处理组件140的一个或多个技术,以实现资源使用的理想水平。例如,事件管理器组件120可限制到事件处理组件140的事件流,缓冲或排队事件、重新排列事件、聚集事件和/或执行合适的操作来增强事件处理组件140的资源使用效率。
在实施例中,由图1所示的基于事件的计算系统在操作中可不同于传统的同步计算系统,从而提供超越于同步计算系统可获得的益处的附加益处。例如,如图2中的框图200所示,同步事件处理组件220可用连续的方式(如,基于时钟信号)操作以执行与环境210相关联的指令和/或与同步事件处理组件220相关联的一个或多个程序。因此,独立于来自环境210的输入的出现或不出现,同步事件处理组件220在每一个时钟循环时一次执行指令。例如,即使环境210处没有输入可用,在一些情况下将同步事件处理组件220配置为经由空闲的命令或输入请求仍然保持激活直到接收到新的输入。
类似地,可将如框图202中所示的异步事件处理组件240设置为响应来自环境210的输入(经由事件管理器230)来执行动作。然而,与框图200中示出的同步系统不同,当没有出现输入事件的时候,将异步事件处理组件240设置为休息或者停用。进一步,可将事件管理器230设置为控制经由调度或其他方式提供给异步事件处理组件240的事件的量和/或速率,藉此能使事件管理器230得以精细地控制异步事件处理组件240的活动水平,以及,作为结果,得以控制异步事件处理组件240使用诸如存储器、功率等之类的资源的速率。在实施例中,可由独立于和异步事件处理组件240相关联的程序以及和环境210相关联的输入流的实体(如,操作系统等)来实现事件管理器230,这能使事件管理器230透明地操作环境210以及异步事件处理组件240。进而,对于在程序的创建过程中较少关注资源优化的给定程序,这能实现资源优化,藉此加速编程及相关过程。
说明一个或多个附加方面,图3是示出事件管理器组件300的框图,事件管理器组件300含有资源分析器组件310和如此处大体描述的那样用于管理与环境事件流相关的事件的相应其他组件320-324。在实施例中,一旦截取和/或收集到来自事件流的一组事件的时候,事件管理器组件300可利用资源分析器组件310来计算或标识负责处理该组事件的一个或多个实体将要使用的资源使用的理想水平(如,工作水平、功率水平等)。例如,资源分析器组件310可估算或确定与相应事件相关的资源使用的水平,基于此,事件管理器组件300调制那些传送到其他实体用于进一步处理的事件的量。
在实施例中,事件管理器组件300通过控制由事件处理实体执行的工作的速度和/或量来作为输入调节器。因此,事件管理器组件300可最终控制由其相关联的计算系统所利用的资源使用的量(如,功率使用等)。在一个示例中,可将事件管理器组件300实现为独立于应用开发,如,作为操作系统和/或其他装置的一部分。
进一步,一旦有相应接收到的事件,事件管理器组件300可操作以辅助事件的一致性和/或以其他合适的方式辅助事件的处理。例如。事件管理器组件300可截取以不规律的速率到达的事件并缓冲和/或处理该事件,从而以较平滑的输入速率将事件提供给一个或多个处理节点。在另一个示例中,事件管理器组件300可辅助将多个事件归组为事件猝发串(burst)和/或其他合适的结构中,在一些情况下这可加速猝发串事件的处理(如,由于事件之间的共同性和/或其他因素)。附加地或可选地,事件管理器组件300可聚集相应事件并在将事件传输给处理节点之前在事件上执行一个或多个批预处理操作。
如图3中进一步所示,如此处所述,资源分析器组件310可与各种其他组件320-324交互以辅助系统工作流控制。这些组件可包括,如,解样组件320、优先级管理器组件322、和/或配置文件管理器组件324。在一个示例中,利用解样组件320从输入事件流中移除一个或多个到达的事件,藉此在将事件流的相应事件传输到其所负责的程序之前解样事件流。在实施例中,事件管理器组件300可利用解样组件320作为全部事件时间控制方案的一部分。更具体地,事件管理器组件300参考如上所述的异步、基于事件的计算系统而操作。相应地,事件管理器组件300,经由解样组件320等,将输入事件流的事件从它们所接收的时间和/或速率中分离出来,容许事件管理器组件300及时在相应的事件上移动、重新排序、移除、改变和/或执行其他合适的操作,从而保持由资源分析器组件310所确定的理想的资源使用水平。
作为相关于一组事件而可执行的时移的说明性示例,图4中的图400示出一组四个输入时间及该输入事件可被重新配置的示例性方式。如图400所示,可将一个或多个事件从到达流中移除(在图400上用向外的箭头表示),而可将其他事件进行时移、重新排序和/或以其他合适的方式进行处理。
重新参考图3的解样组件320,可以各种方式并根据任何合适的准则来执行相应的到达事件的移除。在一个示例中,可进行事件流的解样,以使一旦事件实例化之后预先确定的时间量期满时就将该事件从事件流中移除。对于例如对时间敏感的应用可执行这个方式的事件解样,对时间敏感的应用随着事件变得“陈旧”,诸如股票监测应用、实时通信应用等。在另一个示例中,可直接丢弃经解样的事件或通过其他装置有效地丢弃,诸如通过把经解样的事件在时间上无限向前安排。
在另一个实施例中,通过事件管理器组件300实现的优先级管理器组件322在将事件提供给处理实体之前基于各种因素对到达的事件排定优先级。在一个示例中,事件优先级的排定可基于事件和/或与事件相关联的应用的特性。作为非限制性的示例,第一应用可优先于第二应用,这样第二应用的事件在第一应用的事件之前被一起传输以供处理。
在一个示例中,优先级管理器组件322所利用的优先级动态地基于底层系统的操作状态。作为非限制性示例,带有全球定位系统(GPS)功能的移动手持设备在该手持设备被确定为移动的时候可将GPS数据事件相比其他事件(如,媒体播放事件等)排定为较高优先级,而在该手持设备静止的时候可将GPS数据事件相比其他事件排定为较低优先级。在另一个涉及移动手持设备的GPS事件的具体示例中,可取决于手持设备的移动而以更精细的粒度来调整GPS事件的优先级。因此,当设备以较高速率的速度移动的时候(如,当该设备的用户在高速移动的车辆中旅行的时候,等),可给GPS事件高的优先级,而当设备是静止的或者以较低速率的速度移动的时候(如,当该设备的用户在步行,等),给低的优先级。
在附加示例中,至少部分地将优先级信息展示给底层系统的用户,以使该用户能为各事件指定优先级偏好。在一个实施例中,可提供界面给用户,通过该界面用户可指定相关于相应应用或应用的类别(如,媒体应用、e-mail和/或消息应用、声音应用等)的理想的相关优先级的信息。
在另一个实施例中,事件管理器组件300可,在优先级管理器组件322的帮助下或者独立地,根据各种因素基于资源成本的考虑来调节流向相关联的程序的事件流。例如,如图5中的图500所示,在一些情况下,资源(如,功率等)可与随时间变化的成本相关联。进而,事件管理器组件300可利用这个成本变化来优化底层计算系统的性能。可以理解的是尽管图500示出资源成本与事件之间的示例性关系,但仅为了说明性目的而提供了图500,而不是意在指代任何资源与其成本变化之间的任何具体的关系,且图500也并不意在指代在事件管理器组件300的确定中的任何具体资源的考虑。
在一个示例中,可由事件管理器组件300来追踪诸如图500所示的变化的资源成本,从而帮助对相应事件的调度确定。例如,图500示出四个时间段,表示为T1到T4,在这些时间段之间,资源相关于预先定义的阈值成本而变化。相应地,可在资源成本被确定为低于阈值的时间段内(如图所示的时间T2和T4)调度更多的事件。反之,当资源成本被确定为高于阈值的时候,如时间T1和T3所示,调度较少的事件(如,经由输入缓冲、速率降低、在较低成本的时间段内排列用于释放的事件等)。尽管图500示出相关于单个阈值的考虑,可以理解的是可在资源成本的确定中利用多个阈值。进一步,阈值并不需要是不变的,可选择地是可基于变化的操作特性和/或其他因素而动态调整的。
对上述作为非限制性的实现示例,在资源成本分析中可考虑用电池操作的计算设备的电池充电水平。例如,由于用电池操作的设备在电池被高度充电或该设备被插入从属电源的时候具有更多的可用功率,与这样的设备相关联的功率成本可被认为其成本低于与当其电池被较少地充电的时候的设备相关联的功率成本。相应地,当设备被高度充电的时候,事件管理器组件300可增加由该设备处理的输入的量,而该设备给较少充电的时候则降低。
作为另一个实现示例,与冷却计算系统相关联的变化的金钱成本相关的因素,诸如室温的变化、每单位功率的金钱等,可用与上述类似的方式被考虑。作为进一步的示例,当资源的使用增加时,它们的成本可增加。例如,对于在较弱的无线电信号的区域内工作的移动手持设备,大量无线电冲突等可能会经由其无线电子系统以相对较高的速率来利用功率。在这样的情况下,可减少无线电事件和/或其他事件的数量来优化设备的资源使用。
在图3所示的进一步实施例中,事件管理器组件300包括配置文件管理器组件324,其促进与全局资源配置文件相关的事件流的管理。在传统的计算系统中,可以理解的是一般以较低水平的方式实现资源配置文件。例如,在功率配置文件的情况下,相隔离地影响相应组件(如,屏幕变暗/关断、图形控制器功率降低、处理器时钟减少、和/或在预先确定的时间量之后的其他操作)。反之,配置文件管理器组件324能使用全局功率配置文件和/或其他资源配置文件,可利用这些来以更全面的方式来控制计算系统的资源使用。在进一步的示例中,配置文件管理器组件324所利用的功率配置文件可动态地基于来自底层计算系统和/或其他装置的反馈环。
在其他实施例中,可利用如此处所述的事件管理来优化跨一组事件处理节点(如,处理器、处理器核心、分布式系统中的机器等)的性能。例如,如图6所示,如果相应的节点通过从程序环境中请求输入600,并基于所请求的输入产生输出610而以传统的方式操作,则相应的节点可能在不知道其他节点和/或运行在其他节点上的应用的情况下而操作。在这样的传统系统中在节点之间和应用之间缺少相互通信的结果是,在一些情况下相应节点所做出的对于输入600的请求会造成对于这些输入600的争用,这可导致系统效率的降低、资源使用的增加和/或其他负面特性。
反之,如图7中所示,可利用事件管理器组件710作为输入和相应处理节点之间的中介,以将在相应节点中分配输入,藉此能使节点以基本增加的效率来处理输入700并创建相应的输出720。在实施例中,由事件管理器组件710所确定的加载方案可以任何合适的方式将输入700分布到一组节点中。例如,在节点中加载可以是基本平衡的,或者考虑到相应节点能力差异和/或其他因素,可选地可利用非均匀的分布。在另一个示例中,事件管理器组件710利用的加载分布可以是根据各种因素而动态地调整的。作为非限制性示例,带有多个处理器核心的用电池操作的计算设备可由事件管理器组件710配置,从而当该设备的电池水平为低的时候停用一个或多个核心。相应地,事件管理器组件710可如上大体所述地那样将成本考虑考虑到其加载分配方案中。在另一个示例中,事件管理器组件710可被配置为将输入700从误操作的、非操作的、和/或不理想的处理节点中转移。
接着参看图8,提供了在事件管理器组件800和事件处理组件810之间的示例性交互的框图。如图8所示,事件管理器组件800经由活动速率分析器组件812来追踪其活动水平。接着,事件处理组件810可将与其活动水平相关的信息和/或其他合适的信息经由反馈组件814反馈给事件管理器组件800。响应于从事件管理器组件800接收到的反馈信息,事件管理器组件800可调节分配给事件处理组件810的工作速率和/或提供给事件处理组件810的事件的其他方面。
进一步相关于上述实施例,图9提供了与一个或多个事件流910相关的可由事件管理器组件930所执行相应操作的图示概览。在实施例中,事件管理器组件930操作以降低与处理到达事件流910的相应事件相关联的成本。相应地,相比于保持未过滤的事件流到框图900中所示的事件处理组件,藉此导致利用了大量资源的高度压力的系统,可用如框图902中所示的事件管理器组件930来调节由事件处理组件920所处理的事件的数量。
在一个示例中,框图902所示的系统利用反馈环来促进到事件处理组件920的输入速率的调整。例如,如果事件处理组件920的理想的工作负载改变,则到事件管理器组件930的反馈环使用一个或多个机制调整输入速率来匹配该理想的工作负载。在实施例中,这些机制可由配置文件和/或其他装置所影响,这可基于日间时(time of day)和/或其他外部因素容许不同的策略。
当以如图9所示的事件驱动类型来构造应用的时候,可以理解的是,相比在传统系统中,实现诸如此处所描述的工作负载调节机制的工作负担更少。在一个实施例中,事件管理器组件920所利用的节流机制对于在事件处理组件920上运行的应用的实际逻辑而言是透明的。
在实施例中,相应的节流机制可被封装为流处理器(如,经由事件管理器组件930和/或其他装置来实现),其使用代表原始输入流等的各种输入,来自反馈环的提醒和配置文件以及基于规则的输入来产生可被馈入原始系统的经修改的事件流(如,对应于事件处理组件920)。在一个示例中,此处的技术所提供的组合性的水平能实现对于不同的事件流使用不同策略。作为非限制性的示例,当功率级别相对较低的时候,GPS采样速率和准确度、加速器采样速率、无线电输出强度和/或设备操作的其他方面也被降低了。
在另一个示例中,可经由基于特定阈值的新的事件的产生而实现节流。在具体的,GPS接收器的非限制性示例中,通过增加移动阈值(且因此降低了分辨率),可极大地降低事件的量。例如,通过将GPS从10米的阈值改变为100米的阈值,可获得因数为10的节约。在实施例中,GPS接收器和/或任何其他接收可如此处所利用的GPS信号的设备的用户可被提供有各种机制,通过这些机制用户可为此处所描述的目的而同意所接收到的GPS信号的使用或选择退出。
在进一步的实施例中,事件管理器组件930可利用队列数据结构和/或其他合适的数据结构来将与事件流910相关联的事件维持为事件到达的顺序。附加地或可选地,可利用诸如优先级队列之类的其他结构来维持相应事件的优先级。相应地,事件管理器组件930可利用如第一队列用于在事件被接收到的时候代表事件,该第一队列可接着被转换为第二队列,用于在事件将要被传递的时候代表这些事件。在一个示例中,事件管理器组件930可知晓相应的到达事件的源并在其操作中利用这个信息。可在,如,对应于该事件的数据中发现标识到达的事件的源的信息。例如,鼠标输入事件可提供事件的时间,键盘输入事件可提供事件的时间和已被敲击的键的标识等。
图10是示出用于管理基于事件的计算系统的示例性非限制性过程的流程图。在1000,截取与至少一个事件流相关联的一个或多个事件。在1010,计算与在1000所截取的事件相关联的节点处理器将要维持的工作水平。在1020,基于至少部分地根据在1010计算出来的工作水平所确定的调度来分配在1000所截取的到达的事件中的至少一个给节点处理器。
图11是流程图,示出用于将活动流调节给一个或多个处理节点的示例性非限制性过程。在1100,截取与至少一个事件流相关联的一个或多个到达的事件。在1110,分析在1100截取到的到达事件,并标识出将由与事件相关的节点处理器所利用的理想的资源使用水平(如,功率水平等)。在1120,基于在1110标识出的理想的资源使用水平来部分地用排队、聚集、重新排序和/或移除来调节从事件流到节点处理器的事件的流。在1130,然后判定是否已经从节点处理器接收到反馈。如果没有,继续常规操作。否则,在1140,基于所接收到的反馈来调节从事件流到节点处理器的事件的流。
示例性联网和分布式环境
本领域普通技术人员可以理解,此处所描述的事件管理系统与方法的各实施例可以结合任何计算机或其它客户机或服务器设备来实现,该任何计算机或其它客户机或服务器设备可作为计算机网络的一部分来部署或者被部署在分布式计算环境中,并且可以连接到任何种类的数据存储。就此,此处所描述的各实施例可以在具有任意数量的存储器或存储单元以及出现在任意数量的存储单元上的任意数量的应用程序和进程的任何计算机系统和环境中实现。这包括但不限于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。
分布式计算通过计算设备和系统之间的通信交换提供了计算机资源和服务的共享。这些资源和服务包括信息的交换、对于诸如文件等对象的高速缓存存储和盘存储。这些资源和服务还包括多个处理单元之间的处理能力共享以便进行负载平衡、资源扩展、处理专门化,等等。分布式计算利用网络连接,从而允许客户机利用它们的集体力量来使整个企业受益。就此,各种设备可具有可如参考本发明的各实施例描述地参与资源管理机制的应用程序、对象或资源。
图12提供了示例性的联网或分布式计算环境的示意图。该分布式计算环境包括计算对象1210、1212等以及计算对象或设备1220、1222、1224、1226、1228等,这些计算对象或设备可包括如由应用程序1230、1232、1234、1236、1238表示的程序、方法、数据存储、可编程逻辑等。可以理解,计算对象1210、1212等以及计算对象或设备1220、1222、1224、1226、1228等可包括不同的设备,诸如个人数字助理(PDA)、音频/视频设备、移动电话、MP3播放器、个人计算机、膝上型计算机等。
每一个计算对象1210、1212等以及计算对象或设备1220、1222、1224、1226、1228等可经由通信网络1240或直接或间接地与一个或多个其他计算对象1210、1212等以及计算对象或设备1220、1222、1224、1226、1228等通信。尽管在图12中被示为单个元件,但通信网络1240可包括向图12的系统提供服务的其他计算对象或计算设备,和/或可表示未示出的多个互连网络。每个计算对象1210、1212等或计算对象或设备1220、1222、1224、1226、1228等还可以含有应用,诸如可以利用API或其他对象、软件、固件和/或硬件的、适于实现或与根据各实施例所提供的事件管理技术进行通信的应用1230、1232、1234、1236、1238。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可以由有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的网络,但任何网络基础结构可用于变得与如各实施例中所描述的事件管理系统相关联的示例性通信。
因此,可以利用诸如客户机/服务器、对等、或混合体系结构等网络拓扑结构和网络基础结构的主机。“客户机”是使用与它无关的另一类或组的服务的一个类或组中的成员。客户机可以是进程,即大致上是请求由另一程序或进程提供的服务的一组指令或任务。客户机进程利用所请求的服务,而不必“知道”有关其他程序或服务本身的任何工作细节。
在客户机/服务器体系结构中,尤其在联网系统中,客户机通常是访问由例如服务器等另一计算机提供的共享的网络资源的计算机。在附图12的图示中,作为非限制性示例,计算对象或设备1220、1222、1224、1226、1228等可被认为是客户机而计算对象1210、1212等可被认为是服务器,其中计算对象1210、1212等作为提供数据服务的服务器,诸如从客户机计算对象或设备1220、1222、1224、1226、1228等处接收数据、存储数据、处理数据、向客户机计算对象或设备1220、1222、1224、1226、1228等发送数据,但任何计算机都可取决于环境而被认为是客户机、服务器或两者。
服务器通常是可通过诸如因特网或无线网络基础架构等远程网络或本地网络访问的远程计算机系统。客户机进程可以在第一计算机系统中活动,而服务器进程可以在第二计算机系统中活动,它们通过通信介质彼此通信,从而提供分布式功能并允许多个客户机利用服务器的信息收集能力。按照此处描述的技术来利用的任何软件对象可以单独提供或分布多个计算设备或对象上。
在其中通信网络1240或总线是因特网的网络环境中,例如,计算对象1210、1212等可以是其他计算对象或设备1220、1222、1224、1226、1228等经由诸如超文本传输协议(HTTP)等多种已知协议中的任一种与其通信的web服务器。计算对象1210、1212等作为服务器还可用作诸如计算对象或设备1220、1222、1224、1226、1228等的客户机,这可以是如分布式计算环境的特性。
示例性计算设备
如上所述,有利的是,此处所描述的技术可适用于期望在计算系统中执行事件管理的任何设备。因此,应当理解,构想了结合各实施例使用的所有种类的手持式、便携式和其它计算设备和计算对象,即,在设备的资源使用可理想地优化的任何地方。因此,以下在图13中描述的通用远程计算机只是计算设备的一个示例。
尽管并非所需,但各实施例可以部分地经由操作系统来实现,以供设备或对象的服务开发者使用,和/或被包括在用于执行此处所描述的各实施例的一个或多个功能方面的应用软件中。软件可以在由诸如客户机工作站、服务器或其他设备等一个或多个计算机执行的诸如程序模块等计算机可执行指令的通用上下文中描述。本领域的技术人员可以理解,计算机系统具有可用于传递数据的各种配置和协议,并因此没有特定配置或协议应被认为是限制性的。
因此,图13示出了其中可实现各实施例的一个或多个方面的合适的计算系统环境1300的一个示例,尽管如上所述,计算系统环境1300仅为合适的计算环境的一个示例,并非对使用范围或功能提出任何限制。也不应将计算系统环境1300解释为对在示例性计算系统环境1300中示出的组件中的任何一个或其组合有任何依赖或要求。
参考图13,用于实现一个或多个实施例的示例性远程设备包括计算机1310形式的通用计算设备。计算机1310的组件可以包括,但不仅限于,处理单元1320、系统存储器1330,以及将包括系统存储器的各种系统组件耦合到处理单元1322的系统总线1320。
计算机1310通常包括各种计算机可读介质,并可以是可由计算机1310访问的任何可用介质。系统存储器1330可以包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)等易失性和/或非易失性存储器形式的计算机存储介质。作为示例而非限制,系统存储器1330还可包括操作系统、应用程序、其他程序模块、和程序数据。
用户可以通过输入设备1340向计算机1310输入命令和信息。监视器或其他类型的显示设备也经由接口,诸如输出接口1350连接至系统总线1322。除监视器之外,计算机还可以包括其他外围输出设备,如扬声器和打印机,它们可以通过输出接口1350连接。
计算机1310可使用至一个或多个远程计算机,诸如远程计算机1370的逻辑连接在网络化或分布式环境中操作。远程计算机1370可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点、或任何其他远程媒体消费或传输设备,并且可以包括上面关于计算机1310所描述的任何或全部元件。图13所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)等的网络1372,但也可以包括其他网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。
如上所述,尽管结合各种计算设备和网络体系结构描述了各示例性实施例,但基本概念可被应用于其中期望改进资源使用的效率的任何网络系统和任何计算设备或系统。
而且,存在实现相同或相似功能的多种方法,例如适当的API、工具箱、驱动程序代码、操作系统、控件、独立或可下载软件对象等,它们使得应用和服务能够使用此处提供的技术。由此,此处的各实施例从API(或其他软件对象)的观点以及从实现如此处描述的一个或多个实施例的软件或硬件对象构想。因此,此处描述的各实施例可以具有完全采用硬件、部分采用硬件并且部分采用软件、以及采用软件的方面。
在本文中使用的词语“示例性”意味着用作示例、范例或说明。为避免疑惑,本文公开的主题不受限于这样的示例。此外,本文描述为“示例性”的任何方面或设计不必解释成优于其他方面或设计或比其他方面或设计有利,它也不旨在排除本领域的普通技术人员所知的等效示例性结构和技术。而且,就术语“包括”、“具有”、“包含”和其他类似的词语的使用而言,为避免疑惑,这样的术语旨在以类似于术语“包括”作为开放的过渡词的方式解释而不排除任何附加或其他元素。
如上所述,此处所述的各种技术可结合硬件或软件,或在适当时以两者的组合来实现。如在此所使用的,术语“组件”、“系统”等同样指的是计算机相关实体,或者是硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在计算机上的应用程序和计算机本身都可以是计算机组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。
如前所述的系统是利用多个组件之间的交互来描述的。可以了解,这样的系统和组件可以包括这些组件或其中指定的子组件,某些指定的组件或子组件,和/或附加的组件,并根据前述的内容的各种置换和组合。子组件也可以作为可通信地耦合到其他组件的组件来实现,而不是包括在父组件内(层次性)。另外,应注意到一个或多个组件可被组合成提供聚集功能的单个组件,或被分成若干单独的子组件,且诸如管理层等任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集成功能。此处所描述的任何组件也可以与一个或多个此处没有专门描述的但本领域技术人员广泛地知道的其他组件进行交互。
考虑到以上描述的示例性系统,参考各附图的流程图将也可以理解依照所描述的主题实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述了方法,但是,应该理解,各实施例不仅限于所描述框的顺序,一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其他框并发地进行。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达成相同或类似结果的各种其他分支、流程路径和框次序。此外,并非全部所示出的框都是实现下面所描述的方法所必需的。
除了此处所描述的各实施例之外,可以理解,可以使用其他相似的实施例或者可对所述实施例作出修改和添加以便执行对应的实施例的相同或等效的功能而不背离这些实施例。此外,多个处理芯片或多个设备可共享此处所描述的一个或多个功能的执行,并且类似地,存储可以跨多个设备实现。因此,本发明不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。