保证分布式系统中多阶段处理的事件次序的制作方法

文档序号:14649827发布日期:2018-06-08 21:33阅读:264来源:国知局
保证分布式系统中多阶段处理的事件次序的制作方法

本申请要求于2016年4月11日提交的标题为“GUARANTEEING THE EVENT ORDER FOR MULTI-STAGE PROCESSING IN DISTRIBUTED SYSTEMS”的美国专利申请No.15/095,766的优先权和权益,该美国专利申请是于2015年10月21日提交的标题为“GUARANTEEING THE EVENT ORDER FOR MULTI-STAGE PROCESSING IN DISTRIBUTED SYSTEMS”的美国临时申请No.62/244,452的非临时申请并且依据35U.S.C.119(e)要求该美国临时申请的权益和优先权,出于所有目的将这两个申请的全部内容通过引用并入本文。



背景技术:

在传统的数据库系统中,数据通常以表的形式存储在一个或多个数据库中。然后使用数据管理语言(诸如结构化查询语言(SQL))来查询和操纵所存储的数据。例如,可以定义和执行SQL查询,以从存储在数据库中的数据中识别相关数据。因此SQL查询对存储在数据库中的有限数据集执行。此外,当SQL查询被执行时,它对有限数据集执行一次并产生有限静态结果。因此数据库最佳地被配备为对有限的存储的数据集运行查询。

但是,许多现代应用和系统以连续数据或事件流的形式生成数据,而不是有限数据集。这样的应用的示例包括但不限于传感器数据应用、金融报价机(ticker)、网络性能测量工具(例如,网络监视和业务管理应用)、点击流分析工具、汽车交通监视等。这种应用已经引起了对可以处理数据流的新型应用的需求。例如,温度传感器可以被配置为发出温度读数。

管理和处理这些类型的基于事件流的应用的数据涉及构建具有强大时间焦点的数据管理和查询功能。需要包括针对连续的无限数据集的长期运行的查询的不同种类的查询机制。虽然一些供应商现在提供面向事件流处理的产品套件,但是这些产品提供物仍然缺乏处置当今的事件处理需求所需的处理灵活性。



技术实现要素:

出于至少提供对主题的基本理解的目的,本公开的以下部分给出了本公开内发现的一个或多个创新、实施例和/或示例的简化的概要。这个概要不试图提供任何特定实施例或示例的详尽概述。此外,这个概要不旨在识别实施例或示例的关键/重要的元素或者勾勒本公开的主题的范围。因而,这个概要的一个目的可以是以简化的形式给出本公开内发现的一些创新、实施例和/或示例,以作为稍后给出的较详细描述的序言。

除了上面的部分之外,还应当参考本公开的其余部分、任何附图和权利要求来实现对本公开的主题的性质和等价物(以及所提供的任何固有的或明确的优点和改进)的进一步理解。

在一些示例中,可以提供方法、系统和计算机可读介质。该方法、系统和/或计算机可读介质可以包括确定作为事件流的一部分被接收的事件序列中的第一事件,利用第一事件的时间戳初始化事件计数器的值,和/或处理事件流的附加事件。附加事件可以包括事件序列中的除了第一事件之外的任何事件。在一些情况下,该方法、系统和/或计算机可读介质还可以包括识别事件流的被过滤的事件,为被过滤的事件生成跳过节拍(skip-beat),和/或将跳过节拍插入到事件流中。另外,在一些示例中,该方法、系统和/或计算机可读介质还可以包括接收事件流的后续事件,识别事件流的无序事件,和/或按照与后续事件中的每个后续事件相关联的时间戳的次序来处理后续事件,而与事件流中的下一个事件是实际事件还是跳过节拍无关。后续事件可以包括在插入跳过节拍之后作为事件流的一部分被接收的事件序列中的任何事件。在一些实例中,该方法、系统和/或计算机可读介质还可以包括通过起动定时器来确定第一事件,接收事件序列中的事件集合直到定时器到期,按时间次序将该事件集合重新排序,以及将第一事件识别为重新排序的集合中具有最新时间戳的事件。在定时器到期之前,附加事件可以被批处理(batch)。被过滤的事件可以已经被上游阶段滤除。实际事件可以包括与事件流对应的事件数据。

附图说明

为了合理地描述和说明在本公开内发现的那些创新、实施例和/或示例,可以参考一个或多个附图。用于描述一个或多个附图的附加细节或示例不应当被认为是对要求保护的公开内容中的任何公开内容的范围、当前描述的实施例和/或示例中的任何实施例和/或示例或者本公开内给出的任何创新的目前被理解为的最佳模式的限制。

图1是可以结合本公开的实施例的系统的简化图示。

图2是用于实现本公开的实施例的细节的简化框图。

图3是用于实现本公开的实施例的方法的流程图。

图4是用于实现本公开的实施例的方法的流程图。

图5是用于实现本公开的实施例的方法的流程图。

图6绘出了根据至少一个示例的、用于实现本文描述的示例中的一些示例的分布式系统的简化图。

图7是根据至少一个示例的、根据本文描述的示例中的一些示例的系统环境的组件的简化框图,其中由实施例系统的组件提供的服务可以通过该系统环境作为云服务被提供。

图8示出了根据至少一个示例的示例性计算机系统,在该示例性计算机系统中可以根据本文描述的示例中的一些示例来实现本公开的各种实施例。

具体实施方式

在复杂事件处理平台中,为了获得正确的结果,应当按照事件的应用时间戳的次序处理事件。如果事件“a”在事件“b”之前由应用产生,那么事件“a”应当在“b”之前被处理。例如,为了识别当前温度高于先前温度的设备,数据应当按照设备ID被分区并被依次处理。在一些示例中,当前数据与先前数据之间的差异由这些事件的时间戳定义。在从单个点摄取数据的系统中,确保事件的有序处理相对容易。例如,可以识别事件的分区号,并且可以将事件放在特定于分区的队列中以供处理。但是在分布式系统中,尤其当从集群中的任何节点摄取数据时,事件的有序处理是极其复杂的。在一些情况下,应当发生一些事情以确保有序处理。(1)首先,应当初始化具有正确序号或时间戳的起动计数器。(2)第二,应当检测事件是否无序(out of order)到达。(3)第三,已被缓冲但尚未处理的事件应当被重新排序。(4)最后,应当确定何时继续,以便不会无限期地等待较老的失序(out of sequence)事件到达。在多阶段处理中可能尤其如此,因为它们可能已经被流水线中的前一个处理阶段滤除。通过预热和跳过节拍技术,本公开提供了用于按次序处理事件的示例,并且在一些示例中,即使处理需要多个阶段,也保证事件按照它们发生的次序被处理。

在一些示例中,本公开的一个特征是在一开始时和系统启动时考虑晚期事件。这可以被称为预热阶段。在一些示例中,当系统接收到第一个事件时,时钟被起动,并且事件被收集直到时钟或定时器到期。在定时器到期之后,事件被重新排序并且具有最高/最新时间戳的事件被用来初始化计数器“LAST_SEEN_TIMESTAMP”的值,并且计数器“NEXT_EXPECTED_TIMESTAMP”被设置为LAST_SEEN_TIMESTAMP+1。分批(batched)的事件被处理并且预热阶段完成。在预热阶段之后,使用以上两个计数器严格实行排序。

本公开的另一个特征是使用与被过滤的事件相同的时间戳来触发跳过节拍。在多阶段处理中,事件被上游阶段滤除是可能的。在这种情况下,处理系统(例如,复杂事件处理(CEP)引擎)不应当无限期地等待并尝试事件排序,因为被过滤的事件将永远不会到达。上游阶段可以以许多方式和/或出于许多原因滤除流的事件。不管怎样,一旦被滤除,该事件就将不再是流中的事件序列的一部分。照此,在过滤已经发生之后事件将永远不会到达流水线的任何阶段(例如,它可能不会到达CEP引擎)。为了处理这种情况,可以生成具有与被过滤的应用事件相同的时间戳的跳过节拍,并且系统可以跨所有的下游阶段传播该跳过节拍。然后使用跳过节拍来代替实际事件,以保证在部署多阶段处理的应用中的次序。一旦如上文描述的预热阶段完成,传入的事件就可以以正确的次序被处理(例如,按照与后续事件中的每个后续事件相关联的时间戳的次序来处理后续事件);因此,使用以下逻辑保证后续事件的有序处理:

如果实际事件或“跳过节拍”以与“NEXT_EXPECTED_TIMESTAMP”相同的时间戳到达,那么LAST_SEEN_TIMESTAMP被赋予NEXT_EXPECTED_TIMESTAMP的值,并且NEXT_EXPECTED_TIMESTAMP递增。

如果“跳过节拍”或“实际事件”以高于NEXT_EXPECTED_TIMESTAMP的时间戳到达,那么将事件添加到缓冲区,并且起动具有预配置的到期间隔的定时器,并实现以下行为:

■随着定时器继续运行,具有高于NEXT_EXPECTED_TIMESTAMP的时间戳的更多传入事件或跳过节拍被缓冲。

■当传入的事件或跳过节拍以与NEXT_EXPECTED_TIMESTAMP相同的时间戳到达时,定时器被关闭,缓冲区中的事件被重新排序并处理。请注意,跳过节拍将继续被传播。

■当传入的事件或跳过节拍以低于NEXT_EXPECTED_TIMESTAMP的时间戳到达时,该事件或节拍将作为带外的(out-of-band)而被丢弃。同样,增加预热阶段的长度可以减少这种场景的可能性。

■当定时器到期时,缓冲的事件被重新排序并处理,同时继续传播跳过节拍。

这些技术允许计数器的正确初始化,并且考虑可能由处理流水线中的上游阶段过滤的事件。

在一些示例中,查询的任务可以是确定事件相对于较早的事件更高还是更低。例如,温度在过去一小时(或某个其它时间段)中是否增加。但是,为了准确地回答这个问题,必须按照与产生事件的相同次序来处理事件(例如,与温度相关的事件)。在单处理器系统或者从单个点摄取数据的系统中,通过仅在事件进入时将它们排队并且按次序处理它们,这可以相对容易。但是,在分布式系统中,在事件到达事件处理器之前,事件流过多个节点,并且它们可能是无序的。

如所描述的,一种解决方案是初始化具有准确的值的起动计数器,以便事件处理器具有准确的开始点。否则,当系统启动时(例如,在重启或重新启动之后),不能假设事件处理器将以正确的值开始。照此,当系统启动时,可以使用预热期来确定哪个事件是适当的起动事件。然后可以使用该起动事件来开始定序(sequencing)。然后,一旦事件的处理开始,系统就需要能够检测什么时候某个事物失序。在一些情况下,一旦确定事件失序,事件就必须重新排序。但是,可能并不总是有可能保证失序的事件将到达。例如,在一些情况下,事件可能已经被分布式系统中较早的节点或过程滤除。

在一些示例中,“跳过节拍”(例如,被传播通过系统的伪(dummy)事件)被用于指示事件处理器不需要等待特定事件。例如,跳过节拍可以指示事件可能永远不会到达。在一些情况下,如果事件已被较早的节点滤除,那么可以将具有适当的时间戳(例如,与被过滤的事件对应的相同时间戳)的“跳过节拍”插入到流中。当下游处理器接收到“跳过节拍”时,“跳过节拍”将被视为丢失的事件(例如,看似无序的事件的处理器正在等待的事件),并且处理器将继续处理它检测到的下一个事件。在一些示例中,由于在较早的节点处被处理的条件,事件可能被滤除。例如,如果查询仅识别高于特定阈值(例如,大于70度等)的温度增加,那么与低于60的温度相关联的所有事件可以被滤除。当事件被滤除时,可以将“跳过节拍”插入到流中以代替被过滤的事件。当事件处理器识别出“跳过节拍”时,它将停止等待该事件。可以通过创建仅包括时间戳信息的空事件来生成“跳过节拍”事件。当生成空事件时,元组可以包括被过滤的事件的时间戳。

事件处理器可能不知道哪些事件已经在上游被滤除。因此,如果它监听“跳过节拍”事件,它将知道它不需要依次(或者在这种情况下,根本不需要)处理哪些事件。如上面所指出的,“跳过节拍”事件本质上是替代实际事件的伪事件。因此,本质上,如果事件处理器希望能够保证准确有序的事件处理,那么系统必须至少采用上面提到的预热时段和“跳过节拍”的使用。此外,能够检测事件何时无序可以是重要的。

在一些示例中,可以提供保证用于分布式系统中的多阶段处理的事件次序的机制。一般而言,连续的数据流(也被称为事件流)可以包括没有明确结束的、本质上可以是连续的或无界的事件或数据的流。逻辑上,事件或数据流可以是数据元素(也被称为事件)的序列,每个数据元素具有相关联的时间戳。连续的事件流可以在逻辑上被表示为元素(s,T)的包或集合,其中“s”表示数据部分,并且“T”在时域中。“s”部分一般被称为元组或事件。因此事件流可以是带时间戳的元组或事件的序列。

在一些方面,与流中的事件相关联的时间戳可以等同于时钟时间。但是,在其它示例中,与事件流中的事件相关联的时间可以由应用域定义,并且可以不与时钟时间对应,而是可以代替地例如由序列号表示。因而,与事件流中的事件相关联的时间信息可以由数字、时间戳或表示时间概念的任何其它信息表示。对于接收输入事件流的系统,事件按照递增时间戳的次序到达系统。可以存在具有相同时间戳的多于一个事件。

在一些示例中,事件流中的事件可以表示某个世间(worldly)事件的发生(例如,温度传感器将值改变为新值,股票代号的价格改变)并且与事件相关联的时间信息可以指示由数据流事件表示的世间事件何时发生。

对于经由事件流接收的事件,可以使用与事件相关联的时间信息来确保事件流中的事件按照递增的时间戳值的次序到达。这可以使事件流中接收到的事件能够基于它们相关联的时间信息被排序。为了实现这种排序,时间戳可以以非递减的方式与事件流中的事件相关联,使得较晚生成的事件具有比较早生成的事件晚的时间戳。作为另一个示例,如果序列号被用作时间信息,那么与较晚生成的事件相关联的序列号可以大于与较早生成的事件相关联的序列号。在一些示例中,例如,当由数据流事件表示的世间事件同时发生时,多个事件可以与相同的时间戳或序列号相关联。属于相同事件流的事件一般可以按照由相关联的时间信息施加在事件上的次序来处理,其中较早的事件在较晚的事件之前被处理。

与事件流中的事件相关联的时间信息(例如,时间戳)可以由流的源设置,或者可替代地可以由接收流的系统设置。例如,在某些实施例中,可以在接收事件流的系统上维持心跳,并且与事件相关联的时间可以基于由心跳测得的事件到达系统处的时间。事件流中的两个事件有可能具有相同的时间信息。要注意的是,虽然时间戳排序要求特定于一个事件流,但是不同流的事件可以被任意交织。

事件流具有相关联的模式“S”,该模式包括时间信息和一个或多个命名属性的集合。属于特定事件流的所有事件都符合与该特定事件流相关联的模式。因而,对于事件流(s,T),事件流可以具有作为(<time_stamp>,<attribute(s)>)的模式“S”,其中<attributes>表示模式的数据部分并且可以包括一个或多个属性。例如,股票报价机事件流的模式可以包括属性<stock symbol(股票代号)>和<stock price(股票价格)>。经由这样的流接收的每个事件将具有时间戳和这两个属性。例如,股票报价机事件流可以接收以下事件和相关联的时间戳:

(<timestamp_N>,<NVDA,4>)

(<timestamp_N+1>,<ORCL,62>)

(<timestamp_N+2>,<PCAR,38>)

(<timestamp_N+3>,<SPOT,53>)

(<timestamp_N+4>,<PDCO,44>)

(<timestamp_N+5>,<PTEN,50>)

在上面的流中,对于流元素(<timestamp_N+1>,<ORCL,62>),事件是属性为“stock_symbol”和“stock_value”的<ORCL,62>。与流元素相关联的时间戳是“timestamp_N+1”。因此,连续事件流是事件的流,每个事件具有相同的一系列属性。

如上面所指出的,流可以是CQL查询可以对其起作用的数据的主要源。流S可以是元素(s,T)的包(也称为“多集”),其中“s”处于S的模式中,并且“T”在时域中。此外,流元素可以是元组-时间戳对,其可以被表示为带时间戳的元组插入的序列。换句话说,流可以是带时间戳的元组的序列。在一些情况下,可以存在多于一个具有相同时间戳的元组。并且,可以请求输入流的元组按照递增的时间戳次序到达系统。可替代地,关系(也被称为“时变关系”,并且不要与“关系数据”(“关系数据”可以包括来自关系数据库的数据)混淆)可以是从时域到模式R的元组的无界包的映射。在一些示例中,关系可以是无序的、时变的元组包(即,瞬时关系)。在一些情况下,在每个时间实例,关系可以是有界集合。它还可以被表示为带时间戳的元组的序列,带时间戳的元组可以包括插入、删除和/或更新,以捕获关系的变化状态。类似于流,关系可以具有关系的每个元组可以符合的固定的模式。此外,如本文所使用的,连续查询可能一般能够处理流和/或关系的数据(即,针对流和/或关系进行查询)。此外,关系可以引用流的数据。

在一些示例中,商业智能(BI)可以帮助以特定的间隔(例如,在一些情况下以每天为基础)驱动和优化商业运营。这种类型的BI通常被称为运营商业智能、实时商业智能或运营智能(OI)。在一些示例中,运营智能模糊了BI与商业活动监视(BAM)之间的界线。例如,BI可以关注对历史数据的周期性查询。照此,它可以具有一个向后看的焦点。但是,BI还可以放到运营应用中,并且因此它可以从单纯的策略分析工具扩展到商业运营中的前沿。照此,BI系统还可以被配置为实时地分析事件流并计算聚合。

此外,在一些示例中,OI是实时动态的业务分析形式,它可以提供(deliver)对业务运营的可视性和洞察力。OI常常与BI或实时BI有关,或者与BI或实时BI进行比较,因为两者都有助于理解大量信息。但是存在一些基本的差异:OI可以是主要以活动为中心的,而BI可以是主要以数据为中心的。此外,OI可以更适于检测发展的情况(例如,趋势和模式)并且对发展的情况做出响应,这与传统上可以用作识别模式的事后的和基于报告的方法的BI不同。

在一些示例中,商业事件分析和监视(BEAM)系统可以包括处理和/或接收飞行中数据的CQL引擎。例如,CQL引擎可以是被配置为查询或以其它方式处理传入的实时信息的存储器内实时事件处理引擎(例如,BI或OI)。CQL引擎可以利用或理解时间语义并被配置为允许定义要处理的数据的窗口。在一些情况下,使用CQL引擎可以涉及一直对传入的数据运行查询。

在一些方面,CQL引擎可以包括充分发展的(full blown)查询语言。照此,用户可以依据查询指定计算。此外,CQL引擎可以被设计为用于优化存储器、利用查询语言特征、操作者共享、丰富的模式匹配、丰富的语言构造等等。此外,在一些示例中,CQL引擎可以处理历史数据和流传输数据两者。例如,用户可以设置查询,以便在加利福尼亚销售额高于某个目标时发送警报。因此,在一些示例中,警报可以至少部分地基于历史销售数据以及传入的实况(即,实时)销售数据。

在一些示例中,下面描述的概念的CQL引擎或其它特征可以被配置为以实时方式组合历史上下文(即,仓库数据)与传入数据。因此,在一些情况下,本公开可以描述数据库存储的信息和飞行中(in-flight)的信息的边界。数据库存储的信息和飞行中的信息两者都可以包括BI数据。照此,在一些示例中,数据库可以是BI服务器或者它可以是任何类型的数据库。此外,在一些示例中,本公开的特征可以使得能够在无需用户知道如何编程或以其它方式编写代码的情况下实现上述特征。换句话说,特征可以以允许非开发者实现历史数据与实时数据的组合的特征丰富的用户界面(UI)或其它方式被提供。

上文和下文描述的技术可以以多种方式以及在多个上下文中实现。如下面更详细地描述的,参考以下附图提供若干示例实施方式和上下文。但是,以下实施方式和上下文仅仅是许多实施方式和上下文中的几个实施方式和上下文。

图1绘出了其中可以实现用于保证事件次序的技术的简化的示例系统或架构100。在架构100中,一个或多个用户102(例如,账户持有者)可以利用用户计算设备104(1)-(N)(统称为“用户设备104”)经由一个或多个网络108访问一个或多个服务提供商计算机106。在一些方面,服务提供商计算机106还可以经由网络108与一个或多个流传输数据源计算机110和/或一个或多个数据库112进行通信。例如,用户102可以利用服务提供商计算机106访问或以其它方式管理流传输数据源计算机110和/或数据库112的数据(例如,查询可以针对110、112中的任一个或两者来运行)。数据库112可以是关系数据库、SQL服务器等,并且在一些示例中可以代表用户102管理历史数据、事件数据、关系、归档的关系等。此外,数据库112可以接收或以其它方式存储由流传输数据源计算机110提供的数据。在一些示例中,用户102可以利用用户设备104通过提供对数据(例如,历史事件数据、流传输事件数据等)的查询(也称为“查询语句”)或其它请求来与服务提供商计算机106交互。然后,这些查询或请求可以由服务提供商计算机106执行,以处理数据库112的数据和/或来自流传输数据源计算机110的传入数据。另外,在一些示例中,流传输数据源计算机110和/或数据库112可以是与服务提供商计算机106相关联的集成的分布式环境的一部分。

在一些示例中,网络108可以包括多种不同类型的网络(诸如线缆网络、互联网、无线网络、蜂窝网络、内联网系统和/或其它私有和/或公共网络)中的任何网络或其组合。虽然所示示例表示用户102通过网络108访问服务提供商计算机106,但是所描述的技术可以等同地应用于用户102通过固定电话经由一个或多个用户设备104、经由信息亭(kiosk)或以任何其它方式与一个或多个服务提供商计算机106交互的实例。还要注意的是,所描述的技术可以应用于其它客户端/服务器布置(例如,机顶盒等)以及非客户端/服务器布置(例如,本地存储的应用等)。

用户设备104可以是任何类型的计算设备,诸如但不限于移动电话、智能电话、个人数字助理(PDA)、膝上型计算机、桌上型计算机、瘦客户端设备、平板PC等。在一些示例中,用户设备104可以经由网络108或经由其它网络连接与服务提供商计算机106进行通信。另外,用户设备104还可以被配置为提供用于请求处理数据库112(或其它数据存储库)的数据的一个或多个查询或查询语句。

在一些方面,服务提供商计算机106还可以是任何类型的计算设备,诸如但不限于移动计算设备、桌上型计算设备、瘦客户端计算设备和/或云计算设备(诸如服务器)。在一些示例中,服务提供商计算机106可以经由网络108或经由其它网络连接与用户设备104进行通信。服务提供商计算机106可以包括一个或多个服务器,该一个或多个服务器可能被布置在集群中、被布置为服务器场或者被布置为彼此不关联的单独的服务器。这些服务器可以被配置为执行或以其它方式托管本文描述的特征,包括但不限于对归档的关系的管理、与归档的关系相关联的可配置数据窗口和/或对与本文描述的管理归档的关系相关联的变化事件进行准确计数。此外,在一些方面,服务提供商计算机106可以被配置为集成的分布式计算环境的一部分,该集成的分布式计算环境包括流传输数据源计算机110和/或数据库112。

在一个说明性配置中,服务提供商计算机106可以包括至少一个存储器136和一个或多个处理单元(或(一个或多个)处理器)138。(一个或多个)处理器138可以在硬件、计算机可执行指令、固件或其组合中适当地实现。(一个或多个)处理器138的计算机可执行指令或固件实现可以包括用于执行所描述的各种功能的、以任何合适的编程语言编写的计算机可执行指令或机器可执行指令。

存储器136可以存储在(一个或多个)处理器138上可加载并且可执行的程序指令以及在这些程序的执行期间生成的数据。取决于服务提供商计算机106的配置和类型,存储器136可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器等)。服务提供商计算机106或服务器还可以包括附加存储装置140,附加存储装置140可以包括可移动存储装置和/或不可移动存储装置。附加存储装置140可以包括但不限于磁存储装置、光盘和/或带存储装置。盘驱动器及其相关联的计算机可读介质可以为计算设备提供计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。在一些实施方式中,存储器136可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或ROM。

存储器136、可移动和不可移动的附加存储装置140都是计算机可读存储介质的示例。例如,计算机可读存储介质可以包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术实现的易失性或非易失性的、可移动或不可移动的介质。存储器136和附加存储装置140都是计算机存储介质的示例。

服务提供商计算机106还可以包含允许身份接口计算机120与网络108上的存储的数据库、另一个计算设备或服务器、用户终端和/或其它设备进行通信的(一个或多个)通信连接142。服务提供商计算机106还可以包括(一个或多个)输入/输出(I/O)设备144,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、显示器、一个或多个扬声器、打印机等等。

转向存储器136的更详细的内容,存储器136可以包括操作系统146以及用于实现本文公开的特征的一个或多个应用程序或服务,该一个或多个应用程序或服务至少包括预热模块148、(例如,利用Leslie Lamport算法等的)无序检测模块150和/或跳过节拍模块152。预热模块148可以被配置为启用上文描述的预热时段。无序检测模块150可以被配置为当接收到事件时启用对无序事件的检测。而且,跳过节拍模块152可以被配置为确定事件何时被滤除,并且生成跳过节拍以及在适当的时候将它们插入到流中。如本文所使用的,模块可以指作为服务的一部分的、由服务器或服务器集群执行的编程模块。在这个特定的上下文中,模块可以由作为服务提供商计算机106的一部分的服务器或服务器集群来执行。

图2绘出了可以结合本公开的实施例的事件处理系统200的简化的高级图。事件处理系统200可以包括一个或多个事件源(204、206、208)、被配置为提供用于处理事件流的环境的事件处理服务器(EPS)202(也被称为CQ服务202)以及一个或多个事件汇点(sink)(210、212)。事件源生成由EPS 202接收的事件流。EPS 202可以从一个或多个事件源接收一个或多个事件流。例如,如图2中所示,EPS 202从事件源204接收输入事件流214、从事件源206接收第二输入事件流216以及从事件源208接收第三事件流218。一个或多个事件处理应用(220、222和224)可以被部署在EPS 202上并且由EPS 202执行。由EPS 202执行的事件处理应用可以被配置为监听一个或多个输入事件流,基于从输入事件流中选择一个或多个事件作为显著事件的处理逻辑来处理经由一个或多个事件流接收的事件。然后可以将显著事件以一个或多个输出事件流的形式发送到一个或多个事件汇点(210、212)。例如,在图2中,EPS 202将输出事件流226输出到事件汇点210,并将第二输出事件流228输出到事件汇点212。在某些实施例中,事件源、事件处理应用和事件汇点彼此解耦,以使得可以添加或移除这些组件中的任何组件,而不会造成对其它组件的改变。

在一个实施例中,EPS 202可以被实现为具有共享服务的、包括轻量级Java应用容器(诸如基于Equinox OSGi的轻量级Java应用容器)的Java服务器。在一些实施例中,例如通过使用JRockit Real Time,EPS 202可以支持用于处理事件的超高吞吐量和微秒延迟。EPS 202还可以提供包括用于开发事件处理应用的工具(例如,Oracle CEP Visualizer和Oracle CEP IDE)的开发平台(例如,完整的实时端到端Java事件驱动架构(EDA)开发平台)。

事件处理应用被配置为监听一个或多个输入事件流,执行用于从一个或多个输入事件流中选择一个或多个显著事件的逻辑(例如,查询),并经由一个或多个输出事件流将所选择的显著事件输出到一个或多个事件源。图2为一个这样的事件处理应用220提供了向下钻取(drilldown)。如图2中所示,事件处理应用220被配置为监听输入事件流218,执行包括用于从输入事件流218中选择一个或多个显著事件的逻辑的查询230,以及经由输出事件流228将所选择的显著事件输出到事件汇点212。事件源的示例包括但不限于适配器(例如,JMS、HTTP和文件)、通道、处理器、表、高速缓存等。事件汇点的示例包括但不限于适配器(例如,JMS、HTTP和文件)、通道、处理器、高速缓存等。

虽然图2中的事件处理应用220被示为监听一个输入流并经由一个输出流输出所选择的事件,但是这不旨在是限制性的。在替代实施例中,事件处理应用可以被配置为监听从一个或多个事件源接收的多个输入流,从被监视的流中选择事件,并且经由一个或多个输出事件流将所选择的事件输出到一个或多个事件汇点。同一个查询可以与多于一个事件汇点相关联以及与不同类型的事件汇点相关联。

由于其无界的性质,经由事件流接收的数据的量一般非常大。因此,为了查询的目的而存储或归档所有数据一般而言是不切实际的并且是不期望的。事件流的处理要求在EPS 202接收到事件时实时地处理事件,而不必存储所有接收到的事件数据。因而,EPS 202提供了特殊的查询机制,该特殊的查询机制使得事件的处理能够在EPS 202接收到事件时被执行,而不必存储所有接收到的事件。

事件驱动的应用是规则驱动的,并且这些规则可以以用于处理输入流的连续查询的形式表达。连续查询可以包括识别要针对接收到的事件执行的处理的指令(例如,业务逻辑),该处理包括什么事件将被选择为显著事件并作为查询处理的结果输出。连续查询可以被持久化到数据存储库并用于处理输入事件流以及生成输出事件流。连续查询通常执行过滤和聚合功能,以从输入事件流中发现和提取显著事件。因此,输出事件流中的出站事件的数量通常远远低于从其选择事件的输入事件流中的事件数量。

与对有限数据集运行一次的SQL查询不同,针对特定事件流的由应用已经向EPS 202注册的连续查询可以在每次在该事件流中接收到事件时被执行。作为连续查询执行的一部分,EPS 202基于由连续查询指定的指令来评估接收到的事件,以确定是否一个或多个事件被选择为显著事件,并且作为连续查询执行的结果被输出。

连续查询可以使用不同的语言进行编程。在某些实施例中,连续查询可以使用由Oracle公司提供并由Oracle的复杂事件处理(Complex Events Processing,CEP)产品提供物使用的CQL来配置。Oracle的CQL是一种声明性语言,它可以用于对可以针对事件流执行的查询(称为CQL查询)进行编程。在某些实施例中,CQL基于SQL并且具有支持处理流传输事件数据的附加构造。

在一个实施例中,事件处理应用可以包括以下组件类型:

(1)直接对接到输入流和输出流以及关系源和汇点的一个或多个适配器。适配器被配置为理解输入和输出流协议,并且负责将事件数据转换为可以由应用处理器查询的规格化形式。适配器可以将规格化的事件数据转发到通道或者输出流和关系汇点中。事件适配器可以针对各种数据源和汇点定义。

(2)充当事件处理端点的一个或多个通道。通道负责将事件数据排队,直到事件处理代理可以对其采取动作等。

(2)一个或多个应用处理器(或事件处理代理)被配置为消费来自通道的规格化事件数据、使用查询来处理该规格化事件数据以选择显著事件,并将所选择的显著事件转发(或复制)到输出通道。

(4)一个或多个bean被配置为监听输出通道,并通过将新事件插入到输出通道中而被触发。在一些实施例中,这个用户代码是普通的老式Java对象(plain-old-Java-object,POJO)。用户应用可以利用外部服务(诸如JMS、Web服务和文件编写器)的集合将生成的事件转发到外部事件汇点。

(5)事件bean可以被注册,以监听输出通道,并且通过将新事件插入到输出通道中而被触发。在一些实施例中,这个用户代码可以使用Oracle CEP事件bean API,使得bean可以由Oracle CEP管理。

在一个实施例中,事件适配器向输入通道提供事件数据。输入通道连接到与一个或多个CQL查询相关联的CQL处理器,该一个或多个CQL查询对由输入通道提供的事件进行操作。CQL处理器连接到向其写入查询结果的输出通道。

在一些实施例中,可以为事件处理应用提供汇编文件(assembly file),该汇编文件描述事件处理应用的各个组件、组件如何连接在一起以及由应用处理的事件类型。可以提供分开的文件来指定用于选择事件的连续查询或业务逻辑。

应当认识到的是,图2中绘出的系统200可以具有除了图2中绘出的组件之外的其它组件。另外,图2中所示的实施例仅仅是可以结合本公开的实施例的系统的一个示例。在一些其它实施例中,系统200可以具有比图2中所示的更多或更少的组件、可以组合两个或更多个组件、或者可以具有不同的组件配置或布置。系统200可以具有各种类型,包括个人计算机、便携式设备(例如,移动电话或设备)、工作站、网络计算机、大型机、信息亭、服务器或任何其它数据处理系统。在一些其它实施例中,系统200可以被配置为分布式系统,其中系统200的一个或多个组件跨云中的一个或多个网络分布。

图2中绘出的组件中的一个或多个组件可以在软件、硬件或其组合中实现。在一些实施例中,软件可以被存储在存储器(例如,非暂态计算机可读介质)中、存储器设备上或某种其它物理存储器中,并且可以由一个或多个处理单元(例如,一个或多个处理器、一个或多个处理器核心、一个或多个GPU等等)执行。

上面描述了用于实现连续和排定的(scheduled)查询的混合执行的说明性方法和系统。这些系统和方法中的一些或全部可以但不需要至少部分地由诸如上文至少在图1-图2中所示的架构和过程之类的架构和过程实现。

图3-图5分别是根据本公开的实施例的用于保证多阶段处理的事件次序的方法300、400和500的流程图。图3-图5中绘出的方法300、400和500的实现或处理可以由软件(例如,指令或代码模块)在由逻辑机器(诸如计算机系统或信息处理设备)的中央处理单元(CPU或处理器)执行时被执行、由电子设备或专用集成电路的硬件组件执行或者通过软件和硬件元件的组合执行。这里和下文描述的过程中的任何过程的每个步骤根据期望可以按任何次序执行、可以被省略(或以其它方式跳过)、可以被其它步骤替代和/或可以重复地或递归地执行。

图3中绘出的方法300可以开始于302,在302处可以至少部分地基于至少直到定时器到期为止发生的预热时段来确定(或识别)事件流的第一事件。在一些示例中,在304处,可以用第一事件的时间戳来初始化事件计数器。在306处,可以处理事件流的附加事件。附加事件可能在定时器到期之前已经被分批。在一些示例中,在308处,可以识别被过滤的事件。被过滤的事件可能已经被上游阶段滤除。在310处,跳过节拍可以针对被过滤的事件被生成和/或插入到流中。在312处,可以接收事件流的后续事件。在一些情况下,在314处,可以识别无序事件。在一些示例中,方法300可以在316处通过依次处理后续事件和/或保证后续事件将按次序被处理而结束。这可以与每个传入的事件是实际事件还是跳过节拍无关地完成。换句话说,即使接收到跳过节拍,每个事件也将被依次处理。在一些示例中,跳过节拍不是实际事件,因为它不包括事件数据(例如,它是使CEP引擎能够继续处理流而不必等待被过滤的事件的伪事件)。

图4是根据本公开的实施例的、用于保证多阶段处理的事件次序的方法400的流程图。图4中绘出的方法400可以在402处开始,其中定时器可以被起动。在一些示例中,在404处,可以接收流的事件,直到定时器到期为止。在406处,可以按时间次序对传入的事件进行重新排序(或排序)(例如,如果它们是无序的,那么将它们按顺序排列)。在408处,方法400的预热时段可以结束,其中第一事件至少部分地基于该事件具有最高(最老、最新、最近)的时间戳而被识别为第一事件。

图5是根据本公开的实施例的、用于保证多阶段处理的事件次序的方法500的流程图。图5中绘出的方法500可以在502处开始,其中事件被接收,并且确定接收到什么类型的事件以及事件的时间戳。在一些示例中,在502处,如果具有高于下一个预期时间戳的时间戳的跳过节拍或实际事件到达,那么将该事件添加到缓冲区并起动定时器。定时器可以具有预先配置的到期间隔。在504处,接收更多的实际事件或跳过节拍。如果它们具有比下一个预期的时间戳高的时间戳,那么它们也被添加到缓冲区并且定时器继续运行。在506处,当具有与下一个预期时间戳相同的时间戳的实际事件或跳过节拍到达时,定时器可以被关闭,并且可以对缓冲区中的事件进行重新排序和/或处理。要注意的是,跳过节拍将在适当的时候继续被传播。在508处,当具有低于下一个预期时间戳的时间戳的实际事件或跳过节拍到达时,该事件可以作为带外(out-of-band)而被丢弃。在一些示例中,方法500可以在510处通过在定时器到期时对缓冲的事件进行重新排序和/或处理而结束。方法500还可以在这个时间期间按照期望继续传播跳过节拍。

图6绘出了用于实现实施例之一的分布式系统600的简化图。在所示的实施例中,分布式系统600包括一个或多个客户端计算设备602、604、606和608,该一个或多个客户端计算设备602、604、606和608被配置为通过一个或多个网络610执行和操作客户端应用,诸如web浏览器、专有客户端(例如Oracle Forms)等。服务器612可以经由网络610与远程客户端计算设备602、604、606和608可通信地耦合。

在各种实施例中,服务器612可以适于运行由系统的组件中的一个或多个组件提供的一个或多个服务或软件应用。服务或软件应用可以包括非虚拟环境和虚拟环境。虚拟环境可以包括用于虚拟事件、贸易展览、模拟器、教室、购物交易和企业的虚拟环境,无论虚拟环境是二维或三维(3D)表示、基于页面的逻辑环境还是其它。在一些实施例中,这些服务可以作为基于web的服务或云服务或者在软件即服务(SaaS)模型下被提供给客户端计算设备602、604、606和/或608的用户。操作客户端计算设备602、604、606和/或608的用户又可以利用一个或多个客户端应用与服务器612交互,以利用由这些组件提供的服务。

在该图所绘出的配置中,系统600的软件组件618、620和622被示为在服务器612上实现。在其它实施例中,系统600的组件中的一个或多个组件和/或由这些组件提供的服务还可以由客户端计算设备602、604、606和/或608中的一个或多个来实现。操作客户端计算设备的用户然后可以利用一个或多个客户端应用来使用由这些组件提供的服务。这些组件可以用硬件、固件、软件或其组合来实现。应当理解,可以不同于分布式系统600的各种不同的系统配置是可能的。因此,在该图中示出的实施例是用于实现实施例系统的分布式系统的一个示例,并且不是旨在进行限制。

客户端计算设备602、604、606和/或608可以是运行诸如Microsoft Windows之类的软件和/或诸如iOS、Windows Phone、Android、BlackBerry 8、Palm OS等之类的各种移动操作系统并且启用互联网、电子邮件、短消息服务(SMS)、或其它通信协议的便携式手持设备(例如,蜂窝电话、计算平板电脑、个人数字助理(PDA))或可穿戴设备(例如,Google 头戴式显示器)。客户端计算设备可以是通用个人计算机,作为示例包括运行各种版本的Microsoft Apple 和/或Linux操作系统的个人计算机和/或笔记本计算机。客户端计算设备可以是运行包括但不限于各种GNU/Linux操作系统(诸如像Google Chrome OS)的各种商用或类UNIX操作系统中的任何操作系统的工作站计算机。可替代地或附加地,客户端计算设备602、604、606和608可以是能够通过(一个或多个)网络610通信的任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有姿势输入设备的Microsoft Xbox游戏控制台)和/或个人消息传送设备。

虽然示例性分布式系统600被示为具有四个客户端计算设备,但是任何数量的客户端计算设备都可以被支持。诸如具有传感器的设备等之类的其它设备可以与服务器612交互。

在分布式系统600中的(一个或多个)网络610可以是对本领域技术人员而言熟悉的、可以支持利用包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络体系结构)、IPX(互联网分组交换)、AppleTalk等各种商用协议中的任何商用协议的数据通信的任何类型的网络。仅仅作为示例,(一个或多个)网络610可以是局域网(LAN),诸如基于以太网、令牌环等的局域网。(一个或多个)网络610可以是广域网和互联网。它可以包括虚拟网络,虚拟网络包括但不限于虚拟专用网(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外网络、无线网络(例如,在电气和电子协会(IEEE)802.11协议套件中的任何协议、和/或任何其它无线协议下操作的网络);和/或这些网络和/或其它网络的任何组合。

服务器612可以包括一个或多个通用计算机、专用服务器计算机(作为示例,包括PC(个人计算机)服务器、服务器、中型服务器、大型计算机、机架式服务器等)、服务器场、服务器集群或者任何其它适当的布置和/或组合。服务器612可以包括运行虚拟操作系统的一个或多个虚拟机或者涉及虚拟化的其它计算架构。一个或多个灵活的逻辑存储设备池可以被虚拟化,以维护用于服务器的虚拟存储设备。虚拟网络可以由服务器612使用软件定义网络来控制。在各种实施例中,服务器612可以适于运行上述公开内容中描述的一个或多个服务或软件应用。例如,服务器612可以对应于用于执行上文描述的根据本公开内容的实施例的处理的服务器。

服务器612可以运行操作系统,该操作系统包括上文讨论的操作系统中的任何操作系统、以及任何商用的服务器操作系统。服务器612还可以运行各种附加的服务器应用和/或中间层应用中的任何服务器应用和/或中间层应用,这些附加的服务器应用和/或中间层应用包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于来自Oracle、Microsoft、Sybase、IBM(国际商业机器公司)等的商用数据库服务器。

在一些实施方式中,服务器612可以包括分析和整合从客户端计算设备602、604、606和608的用户接收到的数据馈送和/或事件更新的一个或多个应用。作为示例,数据馈送和/或事件更新可以包括但不限于馈送、更新或者从一个或多个第三方信息源和连续数据流接收到的实时更新,一个或多个第三方信息源和连续数据流可以包括与传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和业务管理应用)、点击流分析工具、汽车交通监视等相关的实时事件。服务器612还可以包括经由客户端计算设备602、604、606和608中的一个或多个显示设备显示数据馈送和/或实时事件的一个或多个应用。

分布式系统600还可以包括一个或多个数据库614和616。数据库614和616可以驻留在各种位置中。作为示例,数据库614和616中的一个或多个可以驻留在服务器612本地(和/或驻留在服务器612中)的非暂态存储介质上。可替代地,数据库614和616可以远离服务器612,并且经由基于网络的或专用的连接与服务器612通信。在一组实施例中,数据库614和616可以驻留在存储区域网络(SAN)中。类似地,用于执行属于服务器612的功能的任何必要的文件可以根据需要存储在服务器612本地上和/或远程地存储。在一组实施例中,数据库614和616可以包括适于响应于SQL格式的命令来存储、更新和检索数据的关系数据库,诸如由Oracle提供的数据库。

图7是根据本公开的实施例的系统环境700的一个或多个组件的简化框图,通过该系统环境700,由实施例系统的一个或多个组件提供的服务可以作为云服务被提供。在所示的实施例中,系统环境700包括可由用户使用以与提供云服务的云基础设施系统702交互的一个或多个客户端计算设备704、706和708。客户端计算设备可以被配置为操作诸如web浏览器、专有客户端应用(例如,Oracle Forms)或一些其它应用之类的客户端应用,该客户端应用可以被客户端计算设备的用户用来与云基础设施系统702交互,以使用由云基础设施系统702提供的服务。

应当认识到的是,在该图中绘出的云基础设施系统702可以具有除了所绘出的组件之外的其它组件。此外,在该图中示出的实施例只是可以结合本公开的实施例的云基础设施系统的一个示例。在一些其它实施例中,云基础设施系统702可以具有比在该图中示出的组件更多或更少的组件、可以组合两个或更多个组件、或者可以具有不同的组件配置或布置。

客户端计算设备704、706和708可以是与上文针对602、604、606和608描述的设备类似的设备。

虽然示例性系统环境700被示为具有三个客户端计算设备,但是任何数量的客户端计算设备都可以被支持。诸如具有传感器的设备等之类的其它设备可以与云基础设施系统702交互。

(一个或多个)网络710可以促进客户端704、706和708与云基础设施系统702之间的通信和数据交换。每个网络可以是对本领域技术人员而言熟悉的、可以支持利用各种商用协议中的任何商用协议的数据通信的任何类型的网络,包括上文针对(一个或多个)网络610描述的网络。

云基础设施系统702可以包括一个或多个计算机和/或服务器,该一个或多个计算机和/或服务器可以包括上文针对服务器612描述的服务器。

在某些实施例中,由云基础设施系统提供的服务可以包括云基础设施系统的用户按需可用的许多服务,诸如在线数据存储和备份解决方案、基于Web的电子邮件服务、托管的办公套件和文档协作服务、数据库处理、受管理的技术支持服务等。由云基础设施系统提供的服务可以动态地缩放,以满足其用户的需求。由云基础设施系统提供的服务的具体实例在本文中被称为“服务实例”。一般而言,来自云服务提供商的系统的、经由诸如互联网之类的通信网络对用户可用的任何服务被称为“云服务”。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自己的本地服务器和系统不同。例如,云服务提供商的系统可以托管应用,并且用户可以经由诸如互联网之类的通信网络按需订购和使用应用。

在一些示例中,在计算机网络云基础设施中的服务可以包括对由云供应商提供给用户的存储装置、托管的数据库、托管的web服务器、软件应用或其它服务的受保护的计算机网络访问、或者如以其它方式在本领域中已知的服务。例如,服务可以包括通过互联网对云上远程存储装置的受密码保护的访问。作为另一个示例,服务可以包括用于由联网的开发人员私人使用的基于web服务的托管的关系数据库和脚本语言中间件引擎。作为另一个示例,服务可以包括对在云供应商的网站上托管的电子邮件软件应用的访问。

在某些实施例中,云基础设施系统702可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用并且安全的方式交付给客户的一套应用、中间件和数据库服务提供物。这种云基础设施系统的示例是由本受让人提供的Oracle公共云。

“大数据”可以由基础设施系统在许多层面和不同规模上进行托管和/或操纵。极大数据集可以由分析师和研究人员存储和操纵,以可视化大量数据、检测趋势和/或以其它方式与数据交互。并行链接的数十、数百或数千个处理器可以作用于这样的数据,以便呈现它或模拟对于数据或数据表示的内容的外力。这些数据集可以涉及结构化数据(诸如在数据库中或以其它方式根据结构化模型组织的数据),和/或非结构化数据(例如,电子邮件、图像、数据blob(二进制大对象)、网页、复杂事件处理)。通过利用实施例相对快速地将更多(或更少)的计算资源集中在目标上的能力,云基础设施系统可以更好地可用于基于来自企业、政府机关、研究组织、私人个体、志同道合的个人或组织的团体或其它实体的需求而对大型数据集执行任务。

在各种实施例中,云基础设施系统702可以适于自动供应、管理和跟踪客户对由云基础设施系统702提供的服务的订阅。云基础设施系统702可以经由不同的部署模型来提供云服务。例如,服务可以在公共云模型下提供,在该公共云模型中云基础设施系统702由销售云服务的组织拥有(例如,被Oracle拥有)并且服务对一般公众或不同行业的企业可用。作为另一个示例,服务可以在私有云模型下提供,在该私有云模型中云基础设施系统702仅为单个组织运营并且可以为该组织内的一个或多个实体提供服务。云服务还可以在社区云模型下提供,在该社区云模型中云基础设施系统702和由云基础设施系统702提供的服务由相关社区中的若干个组织共享。云服务还可以在混合云模型下提供,混合云模型是两种或更多种不同模型的组合。

在一些实施例中,由云基础设施系统702提供的服务可以包括在软件即服务(SaaS)类别、平台即服务(PaaS)类别、基础设施即服务(IaaS)类别、或包括混合服务的其它服务类别下提供的一个或多个服务。客户经由订阅订单可以订购由云基础设施系统702提供的一个或多个服务。云基础设施系统702然后执行处理,以提供客户的订阅订单中的服务。

在一些实施例中,由云基础设施系统702提供的服务可以包括但不限于应用服务、平台服务和基础设施服务。在一些示例中,应用服务可以由云基础设施系统经由SaaS平台提供。SaaS平台可以被配置为提供落入SaaS类别下的云服务。例如,SaaS平台可以提供在集成的开发和部署平台上构建和交付按需应用套件的能力。SaaS平台可以管理和控制用于提供SaaS服务的底层软件和基础设施。通过利用由SaaS平台提供的服务,客户可以利用在云基础设施系统上执行的应用。客户可以获取应用服务,而无需客户购买单独的许可和支持。可以提供各种不同的SaaS服务。示例包括但不限于为大型组织提供用于销售业绩管理、企业集成和业务灵活性的解决方案的服务。

在一些实施例中,平台服务可以由云基础设施系统经由PaaS平台提供。PaaS平台可以被配置为提供落入PaaS类别下的云服务。平台服务的示例可以包括但不限于使组织(诸如Oracle)能够在共享的公共架构上整合现有应用,以及利用由平台提供的共享服务构建新应用的能力的服务。PaaS平台可以管理和控制用于提供PaaS服务的底层软件和基础设施。客户可以获得由云基础设施系统提供的PaaS服务,而无需客户购买单独的许可和支持。平台服务的示例包括但不限于Oracle Java云服务(Oracle Java Cloud Service,JCS)、Oracle数据库云服务(Oracle Database Cloud Service,DBCS)以及其它服务。

通过利用由PaaS平台提供的服务,客户可以采用由云基础设施系统支持的编程语言和工具,并且还可以控制所部署的服务。在一些实施例中,由云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,Oracle Fusion Middleware服务)和Java云服务。在一个实施例中,数据库云服务可以支持共享服务部署模型,共享服务部署模型使得组织能够汇集数据库资源并且以数据库云的形式向客户提供数据库即服务。在云基础设施系统中,中间件云服务可以为客户提供开发和部署各种业务应用的平台,以及Java云服务可以为客户提供部署Java应用的平台。

云基础设施系统中的IaaS平台可以提供各种不同的基础设施服务。基础设施服务促进对底层计算资源(诸如存储装置、网络和其它基本计算资源)的管理和控制,以便客户利用由SaaS平台和PaaS平台提供的服务。

在某些实施例中,云基础设施系统702还可以包括用于提供用来向云基础设施系统的客户提供各种服务的资源的基础设施资源730。在一个实施例中,基础设施资源730可以包括用于执行由PaaS平台和SaaS平台提供的服务的硬件(诸如服务器、存储装置和联网资源)的预先集成和优化的组合。

在一些实施例中,云基础设施系统702中的资源可以由多个用户共享并且按需动态地重新分配。此外,资源可以分配给在不同时区中的用户。例如,云基础设施系统730可以使第一时区内的第一用户集合能够利用云基础设施系统的资源达指定的小时数,然后使得能够将相同资源重新分配给位于不同时区中的另一用户集合,从而最大化资源的利用率。

在某些实施例中,可以提供由云基础设施系统702的不同组件或模块以及由云基础设施系统702提供的服务共享的多个内部共享服务732。这些内部共享服务可以包括但不限于安全性和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、用于启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。

在某些实施例中,云基础设施系统702可以提供对云基础设施系统中的云服务(例如,SaaS、PaaS和IaaS服务)的综合管理。在一个实施例中,云管理功能可以包括用于供应、管理和跟踪由云基础设施系统702接收到的客户的订阅的能力等。

在一个实施例中,如在该图中所绘出的,云管理功能可以由诸如订单管理模块720、订单编排模块722、订单供应模块724、订单管理和监视模块726以及身份管理模块728之类的一个或多个模块提供。这些模块可以包括一个或多个计算机和/或服务器或者利用一个或多个计算机和/或服务器来提供,该一个或多个计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置和/或组合。

在示例性操作734中,使用客户端设备(诸如客户端设备704、706或708)的客户可以通过请求由云基础设施系统702提供的一个或多个服务并且对由云基础设施系统702提供的一个或多个服务的订阅下订单来与云基础设施系统702交互。在某些实施例中,客户可以访问云用户界面(UI)、云UI 712、云UI 714和/或云UI 716并经由这些UI下订阅订单。响应于客户下订单而由云基础设施系统702接收到的订单信息可以包括识别客户和客户打算订阅的由云基础设施系统702提供的一个或多个服务的信息。

在客户下订单之后,订单信息经由云UI 712、714和/或716被接收。

在操作736,订单被存储在订单数据库718中。订单数据库718可以是由云基础设施系统702操作并且结合其它系统元素操作的若干数据库之一。

在操作738,订单信息被转发到订单管理模块720。在一些情况下,订单管理模块720可以被配置为执行与订单相关的计费和记帐功能,诸如验证订单,并且在通过验证时,预订订单。

在操作740,关于订单的信息被传送到订单编排模块722。订单编排模块722可以利用订单信息来为客户下的订单编排服务和资源的供应。在一些情况下,订单编排模块722可以编排资源的供应,以利用订单供应模块724的服务支持订阅的服务。

在某些实施例中,订单编排模块722使得能够管理与每个订单关联的业务流程,并且应用业务逻辑来确定订单是否应当继续供应。在操作742,当接收到对新订阅的订单时,订单编排模块722向订单供应模块724发送分配资源和配置履行订阅订单所需的那些资源的请求。订单供应模块724使得能够为由客户订购的服务分配资源。订单供应模块724在由云基础设施系统702提供的云服务和用来供应用于提供所请求的服务的资源的物理实现层之间提供抽象层。订单编排模块722可以因此与实现细节隔离,这些实现细节诸如服务和资源是实际上被实时供应还是预先被供应并且仅在请求时才进行分配/指派。

在操作744,一旦供应了服务和资源,就可以通过云基础设施系统702的订单供应模块724向客户端设备704、706和/或708上的客户发送所提供的服务的通知。

在操作746,可以由订单管理和监视模块726来管理和跟踪客户的订阅订单。在一些情况下,订单管理和监视模块726可以被配置为收集订阅订单中的服务的使用统计数据,诸如所使用的存储量、所传送的数据量、用户的数量、以及系统运行时间和系统停机时间的量。

在某些实施例中,云基础设施系统700可以包括身份管理模块728。身份管理模块728可以被配置为提供身份服务,诸如云基础设施系统700中的访问管理和授权服务。在一些实施例中,身份管理模块728可以控制关于希望利用由云基础设施系统702提供的服务的客户的信息。这种信息可以包括认证这种客户的身份的信息和描述这些客户被授权相对于各种系统资源(例如,文件、目录、应用、通信端口、存储器段等)执行哪些动作的信息。身份管理模块728还可以包括对关于每个客户的描述性信息和关于如何和由谁来访问和修改描述性信息的管理。

图8示出了其中可以实现本公开的各种实施例的示例性计算机系统800。系统800可以用来实现上述计算机系统中的任何计算机系统。如图所示,计算机系统800包括经由总线子系统802与多个外围子系统通信的处理单元804。这些外围子系统可以包括处理加速单元806、I/O子系统808、存储子系统818和通信子系统824。存储子系统818包括有形的计算机可读存储介质822和系统存储器810。

总线子系统802提供了用于让计算机系统800的各种组件和子系统按意图彼此通信的机制。虽然总线子系统802被示意性地示为单条总线,但是总线子系统的可替代实施例可以利用多条总线。总线子系统802可以是利用各种总线架构中的任何总线架构的若干类型的总线结构中的任何总线结构,包括存储器总线或存储器控制器、外围总线、以及局部总线。例如,这些架构可以包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线,其中PCI总线可以实现为按IEEE P1386.1标准制造的夹层(Mezzanine)总线。

可以实现为一个或多个集成电路(例如,常规的微处理器或微控制器)的处理单元804控制计算机系统800的操作。一个或多个处理器可以被包括在处理单元804中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元804可以被实现为一个或多个独立的处理单元832和/或834,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元804还可以实现为通过将两个双核处理器集成到单个芯片中而形成的四核处理单元。

在各种实施例中,处理单元804可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定时间,要执行的程序代码中的一些或全部可以驻留在(一个或多个)处理器804中和/或存储子系统818中。通过适当的编程,(一个或多个)处理器804可以提供上文描述的各种功能。计算机系统800可以附加地包括处理加速单元806,处理加速单元806可以包括数字信号处理器(DSP)、专用处理器等。

I/O子系统808可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球之类的指示设备、结合到显示器中的触摸板或触摸屏、滚轮、点拨轮、拨盘、按钮、开关、小键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括例如运动感测和/或姿势识别设备,诸如使得用户能够利用姿势和口头命令通过自然用户接口控制诸如Microsoft 360游戏控制器之类的输入设备并与该输入设备交互的Microsoft 运动传感器。用户接口输入设备还可以包括眼睛姿势识别设备,诸如检测来自用户的眼睛活动(例如,当拍摄图片和/或进行菜单选择时的“眨眼”)并将眼睛姿势变换为到输入设备(例如,Google)中的输入的Google 眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,导航器)交互的语音识别感测设备。

用户接口输入设备还可以包括但不限于三维(3D)鼠标、操纵杆或指示杆、游戏板和绘图平板、以及音频/视觉设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3D扫描仪、3D打印机、激光测距仪、以及眼睛注视跟踪设备。此外,用户接口输入设备可以包括例如医疗成像输入设备,诸如计算机断层扫描设备、磁共振成像设备、正电子发射断层扫描设备、医疗超声设备。用户接口输入设备还可以包括例如音频输入设备,诸如MIDI键盘、数字乐器等。

用户接口输出设备可以包括显示子系统、指示器灯或诸如音频输出设备之类的非视觉显示器等。显示子系统可以是阴极射线管(CRT)、诸如利用液晶显示器(LCD)或等离子显示器的平板设备之类的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用旨在包括用于从计算机系统800向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备和调制解调器。

计算机系统800可以包括存储子系统818,存储子系统818包括被示为当前位于系统存储器810内的软件元素。系统存储器810可以存储在处理单元804上可加载并且可执行的程序指令,以及在这些程序执行期间生成的数据。

依赖于计算机系统800的配置和类型,系统存储器810可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含处理单元804立即可访问和/或当前正在由处理单元804操作和执行的数据和/或程序模块。在一些实施方式中,系统存储器810可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实施方式中,包含有助于诸如在启动期间在计算机系统800内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以存储在ROM中。作为示例而不是限制,系统存储器810还示出了可以包括客户端应用、Web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序812、程序数据814以及操作系统816。作为示例,操作系统816可以包括各种版本的MicrosoftApple 和/或Linux操作系统、各种商用或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google OS等)和/或诸如iOS、 Phone、 OS、8OS和 OS操作系统之类的移动操作系统。

存储子系统818还可以提供用于存储提供一些实施例的功能的基本编程和数据构造的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以存储在存储子系统818中。这些软件模块或指令可以被处理单元804执行。存储子系统818还可以提供用于存储根据本公开被使用的数据的储存库。

存储子系统818还可以包括计算机可读存储介质读取器820,计算机可读存储介质读取器820可以进一步连接到计算机可读存储介质822。与系统存储器810一起并且可选地与系统存储器810组合,计算机可读存储介质822可以全面地表示用于临时和/或较持久地包含、存储、传送和检索计算机可读信息的远程存储设备、本地存储设备、固定存储设备和/或可移动存储设备加上存储介质。

包含代码或代码的部分的计算机可读存储介质822还可以包括本领域已知或使用的任何适当的介质,这些介质包括存储介质和通信介质,诸如但不限于以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。这可以包括有形的非暂态的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备、或其它有形的计算机可读介质。当被指定时,这还可以包括非有形的暂态计算机可读介质,诸如数据信号、数据传输,或者可以用来传送期望的信息并且可以由计算机系统800访问的任何其它介质。

作为示例,计算机可读存储介质822可以包括从不可移动的非易失性磁介质读取或对不可移动的非易失性磁介质写入的硬盘驱动器、从可移动的非易失性磁盘读取或对可移动的非易失性磁盘写入的磁盘驱动器、以及从可移动的非易失性光盘(诸如CD ROM、DVD和盘或其它光学介质)读取或对可移动的非易失性光盘写入的光盘驱动器。计算机可读存储介质822可以包括但不限于驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带等。计算机可读存储介质822还可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM、基于DRAM的SSD、磁阻RAM(MRAM)SSD)、以及使用基于DRAM的SSD和基于闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统800提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。

通信子系统824提供到其它计算机系统和网络的接口。通信子系统824充当用于从其它系统接收数据和从计算机系统800向其它系统传送数据的接口。例如,通信子系统824可以使计算机系统800能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统824可以包括用于(例如,利用蜂窝电话技术、诸如3G、4G或EDGE(用于全球演变的增强数据速率)之类的先进数据网络技术、Wi-Fi(IEEE 602.11系列标准)、或其它移动通信技术、或其任何组合)访问无线语音和/或数据网络的射频(RF)收发器组件、全球定位系统(GPS)接收器组件和/或其它组件。在一些实施例中,作为无线接口的附加或替代,通信子系统824可以提供有线网络连接(例如,以太网)。

在一些实施例中,通信子系统824还可以代表可以使用计算机系统800的一个或多个用户接收以结构化和/或非结构化的数据馈送826、事件流828、事件更新830等形式的输入通信。

作为示例,通信子系统824可以被配置为实时地从社交媒体网络和/或其它通信服务的用户接收数据馈送826,诸如馈送、更新、诸如丰富站点摘要(RSS)馈送之类的web馈送和/或来自一个或多个第三方信息源的实时更新。

此外,通信子系统824还可以被配置为接收以连续数据流的形式的、没有明确结束的本质上可以是连续的或无界的数据,其中连续数据流可以包括实时事件的事件流828和/或事件更新830。生成连续数据的应用的示例可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如网络监视和业务管理应用)、点击流分析工具、汽车交通监视等。

通信子系统824还可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送826、事件流828、事件更新830等,其中该一个或多个数据库可以与耦合到计算机系统800的一个或多个流传输数据源计算机通信。

计算机系统800可以是各种类型中的一种,这些类型包括手持便携式设备(例如,蜂窝电话、计算平板电脑、PDA)、可穿戴设备(例如,Google 头戴式显示器)、PC、工作站、大型机、信息亭、服务器机架或任何其它数据处理系统。

由于计算机和网络不断变化的本质,在该图中绘出的计算机系统800的描述旨在仅仅作为具体示例。具有比该图中所绘出的系统更多或更少的组件的许多其它配置是可能的。例如,定制的硬件还可以被使用和/或特定的元素可以用硬件、固件、软件(包括小程序(applet))或其组合来实现。另外,可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文所提供的公开内容和教导,本领域普通技术人员将理解实现各种实施例的其它方式和/或方法。

在前述说明书中,参考其具体实施例描述了本公开的各方面,但是本领域技术人员将认识到,本公开不限于此。上述公开的各种特征和方面可以单独或联合使用。各种修改、变更、替代构造和等价物也被涵盖在本公开的范围内。修改包括所公开的特征的任何相关组合。另外,在不背离说明书的更宽泛的精神和范围的情况下,可以在超出本文所描述的环境和应用的任何数量的环境和应用中使用实施例。因而,说明书和附图应当被认为是说明性的而不是限制性的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1