动态碎片分配调整的制作方法

文档序号:11160877阅读:285来源:国知局
动态碎片分配调整的制造方法与工艺

大规模数据处理可以包括并行处理,其通常涉及同时在大数据集的每个元素上执行一些操作。数据集可以分裂成较小的集合,称作“碎片”,并且由单独的处理和/或设备并行处理。



技术实现要素:

本公开涉及在并行处理操作期间动态调整碎片分配。

一般来说,在本说明书中描述的主题的一个革新方面能够在方法中实施,方法包括下面的动作:确定输入数据集的批量数据处理作业的目标完成时间,批量数据处理作业由多个任务执行,多个任务的每个处理不同的输入碎片,不同的输入碎片包括输入数据集的不同部分;从多个任务中,识别具有大于批量数据处理作业的目标完成时间的估计的完成时间的第一任务,估计的完成时间代表第一任务将完成处理由第一任务处理的第一输入碎片处的输入数据集的该部分的估计时间;以及将第一输入碎片分裂成第一分裂输入碎片和不同于第一分裂输入碎片的第二分裂输入碎片,第一分裂输入碎片包括第一输入碎片的第一部分,并且第二分裂输入碎片包括不同于第一部分的第一输入碎片的第二部分。

该方面的其他实施例包括相应的系统、装置以及编码在计算机存储设备上、被配置为执行方法的动作的计算机程序。

能够实现在该说明书中描述的主题的特定实施例以实现下面的优点的一个或多个。通过在处理作业期间动态地适配碎片分配,可以更好地优化碎片分配,因为关于每个特定碎片的更多信息可用,诸如它的大小、复杂度、平均处理速率或者其他信息。以这种方式适配碎片分配也允许分配响应观察到的条件而改变,诸如任务(例如,计算资源)处理碎片比预期更慢或者另外的处理资源正在变得可用。

在该说明书中描述的主题的一个或多个实施例的细节在下面的附随附图和描述中陈述。主题的其他特征、方面和优点将从描述、附图和权利要求书中变得明白。

附图说明

图1是在并行处理操作期间动态调整碎片分配能够发生的环境的框图。

图2A-2B是在碎片分裂之前和之后的系统配置的框图。

图3是在并行处理操作期间动态调整碎片分配的示例处理的顺序图。

图4是在并行处理操作期间动态调整碎片分配的示例处理的流程图。

图5是示例计算设备的框图。

在各种附图中相同的附图标记和名称指示相同的元素。

具体实施方式

大规模并行数据处理应用必须分发大的输入数据集用于由任务池(例如,计算资源)进行处理。这可以通过将输入数据集划分成较小的集合或者“碎片”,并且将碎片指派给可用的任务来执行。在涉及异质性输入数据集、任务执行环境、网络条件或者其他变化因素的情况下,可能难以均匀地划分输入数据集,使得每个任务在相似量的时间内处理它的被指派的碎片。大相径庭的碎片处理时间可以导致比其他碎片花费更长时间进行处理的“落后者”碎片。如果特定作业在完成之前需要所有碎片被处理,那么落后者碎片可以主导该特定作业的总体运行时间。而且,如果任务的计算结果没有提交到诸如远程磁盘这样的永久存储器,那么落后者碎片可能是成问题的。因为前述异质性,输入数据集的特定区段可能处理起来非常慢或者可能包含比预期的更多的记录。如果处理该碎片的任务在输出持久化之前失败,那么所有的进展可能丢失。如果系统等待直到在提交工作之前处理整个碎片,那么大量的工作可能需要重做。大的碎片大小可以加剧这种问题。

小的碎片大小也引入问题,诸如与指派和管理更大量的碎片有关的另外的开销,以及当处理时任务需要寻找到每个碎片的开始而不是顺序地读取较大的碎片。

因此,本公开描述在并行处理操作期间动态调整碎片分配的技术。一个示例包括未认领碎片的中央储存库、任务池和监管器。最初,监管器将输入数据集分割成足够的碎片使得每个任务忙碌。然后每个任务监控它自己的进展同时处理它的碎片。基于每个任务观察到的内容,它发布关于它将什么时候完成它的碎片的处理的估计。监管器观察这些估计。如果不存在剩余的未认领的碎片并且至少一个任务不忙碌,那么并行处理操作已经进入“尾声”状态。在一些情况下,当这发生时,假定完美的碎片切分/负载均衡,监管器基于来自任务的发布的估计来估计作业什么时候应当结束。该估计对应于每个任务同时结束,并且可以是每个任务的估计的剩余时间的平均,将空闲任务的剩余时间计为零。监管器将关于操作什么时候应当完成的该估计(“截止时间”或者“目标完成时间”)发布给任务。在一些情况下,监管器可以(而不是当操作进入尾声状态时或者除了当操作进入尾声状态时之外还)遍及执行而提供周期性的估计。

当接收到目标完成时间时,每个任务估计在目标完成时间之前能够处理它的碎片的多少。如果任务能够在目标完成时间之前完成处理,那么它继续照常处理。如果不能,那么任务估计在目标完成时间之前它能够处理碎片的多少。例如,任务可以假定它的平均处理速率将保持恒定。基于该估计,任务将它的碎片分裂成前缀和后缀。前缀包含在目标完成日期之前任务期望完成的碎片的部分。后缀包含任务不期望完成的部分。任务将后缀返回给监管器。空闲任务然后从返回的后缀中认领碎片进行处理。注意,操作能够在执行期间进入和退出该“尾声”状态多次,并且发布估计的完成时间以及任务分裂的循环能够在执行期间发生多次。

另一个示例方法包括确定由多个任务执行的输入数据集的批量数据处理作业的目标完成时间。多个任务的每个处理代表输入数据集的不同部分的输入碎片。从多个任务中,处理第一输入碎片的第一任务被识别具有比批量数据处理作业的目标完成时间大的估计完成时间。作为响应,第一输入碎片被分裂成多个不同的输入碎片,每个包括第一输入碎片的一部分。然后可以将不同的输入碎片指派给不同的任务来完成。

这些特征和另外的特征将在下面更详细地描述。

图1是在并行处理操作期间动态调整碎片分配能够发生的环境100的框图。如所示,环境100包括并行处理操作101,并行处理操作101包括处理多个碎片104a-n的多个任务102a-n。并行处理操作101由监管器108监管。在操作中,输入数据集110分裂成碎片104a-n以便由任务102a-n处理。任务102a-n处理碎片104a-n以产生输出数据集112。

环境100包括并行处理操作101。在一些实现方式中,并行处理操作101可以是任何类型的分布式处理应用,诸如,例如,映射规约、管线、分布式查询或者另一种类型的应用。并行处理操作101可以被配置为跨越通过经由网络通信而连接的一个或多个服务器而执行。在一些情况下,除了被描绘为将输入数据集110分裂成碎片104a-n用于由任务102a-n处理的那些之外,并行处理操作101还可以包括另外的组件。在一些情况下,监管器108可以执行该操作。任务102a-n也可以执行分裂操作。

并行处理操作101包括任务102a-n。在操作中,任务102a-n处理相关联的碎片104a-n。在一些情况下,任务102a-n可以每个在各个碎片104a-n上执行相同的处理操作。任务102a-n可以是在一个或多个服务器上执行的软件处理。在一些情况下,任务102a线程可以包括不同类型的组件,诸如,例如,映射器、规约器(reducer)、置乱器(shuffler)、组合器、管线对象或者其他类型的组件。

监管器108通过与任务102a-n通信来监管并行处理操作101。在一些实现方式中,监管器108是在服务器或者服务器的集合上执行的软件处理或者软件处理的集合。监管器108可以经由网络(未示出)与任务102a-n通信。通信可以包括状态信息从任务102a-n到监管器108的交换。通信也可以包括来自监管器108、关于并行处理操作101的统计的指示,诸如目标完成时间(下面讨论)。在一些情况下,监管器108可以控制任务102a-n的操作,诸如,例如,暂停任务102a-n、继续进行任务102a-n、将碎片指派给任务102a-n、分裂任务102a-n或者其他操作。

如所示,并行处理操作101处理输入数据集110。输入数据集110可以包括结构化或者非结构化数据(诸如,例如,键值对、文件、数据库行、数据库列或者其他类型的数据)的任何组合。类似地,由并行处理操作101产生的输出数据集112可以包括结构化或者非结构化数据(诸如,例如,键值对、文件、数据库行、数据库列或者其他类型的数据)的任何组合。在一些情况下,包括在输出数据集112中的数据的类型可以与包括在输入数据集110中的数据的类型相同。输出数据集112也可以是与输入数据集110不同的类型。在一些实现方式中,诸如,例如,对于执行关于输入数据集110中的每个记录的操作(例如,数据库更新)的操作,并行处理操作101可以不产生输出数据集。

图2A-B是在碎片分裂之前(200)和之后(210)的系统配置的框图。如图2A中所示,监管器202与一个或多个任务204a-c通信。任务204a-c处理一个或多个碎片206a-c。在208,任务204a-c将它们各自的估计完成时间通信至监管器202。例如,任务204a将估计完成时间4分钟通信至监管器202。任务204b将估计完成时间3分钟通信至监管器202。任务204c将估计完成时间13分钟通信至监管器202。如所示,任务212在配置200中是空闲的(亦即,没有处理碎片)。因为存在空闲任务(212)并且没有碎片还要被分派,所以图2A中所示的作业处于尾声状态。

作为接收来自任务204a-c的估计完成时间的响应,在209,监管器202确定与任务204a-c相关联的并行处理操作的目标完成时间。在该情况下,监管器202确定目标完成时间是5分钟。监管器202可以通过将每个任务204a-c以及空闲任务212的估计完成时间取平均来确定目标完成时间,空闲任务212可以看作具有完成时间0。在一些情况下,监管器202可以基于关于包括任务204a-c和212的并行处理操作而指定的目标完成时间,诸如由并行处理操作的管理员指定的截止时间,来确定目标完成时间。在一些实现方式中,目标完成时间代表假定任务204a-c同时完成,并行处理操作的预期完成时间。目标完成时间也可以代表任务240a-c和212的报告的完成时间的加权平均。目标完成时间也可以由监管器202根据其他过程或算法确定。

在一些情况下,208和209处任务204a-c和212以及监管器202之间的通信经由网络(未示出)发生。通信可以根据一个或多个联网协议执行,诸如,例如,超文本传输协议(HTTP)、简单网络管理协议(SNMP)、远程过程调用(RPC)或者其他协议。

图2B示出碎片206c分裂之后的系统配置210。在操作中,任务204c可以接收来自监管器202的目标完成时间。任务204c可以比较目标完成时间5分钟和它的估计完成时间13分钟,并且确定在目标完成时间之前它将不会结束处理碎片206c。作为响应,任务204c可以将碎片206c分裂成分裂碎片214a-b,每个包含碎片206c的一部分。任务204c可以继续处理分裂碎片214a。分裂碎片214b可以由(先前空闲的)任务212处理。在一些情况下,分裂碎片214b可以由任务204c发送给监管器202。监管器202然后可以将碎片214b指派给任务212。监管器202也可以将分裂碎片214b放置到诸如任务212这样的空闲任务可以领取分裂碎片214b进行处理的位置。在一些情况下,该碎片分裂可以由监管器202,诸如通过发送给任务204c的消息而发起。虽然图2B示出碎片206c分裂成两个新的碎片,但是在一些情况下,碎片206c可以分裂成多于两个碎片。

图3是在并行处理操作期间动态调整碎片分配的示例处理300的顺序图。图3提供关于图2A-B中示出的操作的更多细节。在305,任务204a将它的估计完成时间(4分钟)发送给监管器202。在310,任务204b将它的估计完成时间(3分钟)发送给监管器202。在315,任务204c将它的估计完成时间(13分钟)发送给监管器202。在一些情况下,该通信可以如关于图2A-B描述的而发生。在320,监管器202基于来自任务204a-c的估计完成时间确定目标完成时间。再次,可以如关于图2A-B描述的,计算目标完成时间。在325-335,监管器202将目标完成时间(5分钟)发送给任务204a-c。该通信可以如关于图2A-B描述的而发生。

在340,任务204c确定它的估计完成时间(13分钟)大于它从监管器202接收的目标完成时间(5分钟)。作为响应,任务204c分裂它的相关联的碎片206c(345)。在350,任务204c将分裂碎片214b发送给监管器202。在355,任务204c继续处理分裂碎片214a。在360,监管器202将碎片214b指派给任务212。

图4是在并行处理操作期间动态调整碎片分配的示例处理400的流程图。在405,确定输入数据集的批量数据处理作业的目标完成时间。批量数据处理作业可以由多个任务执行,每个任务处理包括输入数据集的不同部分的输入碎片。

在410,从多个任务中识别具有大于批量处理作业的目标完成时间的估计完成时间的第一任务。在一些情况下,目标完成时间是由批量数据处理作业的管理员指定用于结束批量数据处理作业的截止时间。第一任务的估计完成时间代表第一任务将完成处理由第一任务处理的第一输入碎片处的输入数据集的该部分的估计时间。在一些情况下,多个任务的每个包括估计完成时间,估计完成时间代表任务将完成处理它的输入碎片的估计时间,并且目标完成时间是批量数据处理作业的多个任务的估计完成时间的平均。在一些情况下,可以考虑与批量数据处理作业相关联的空闲任务,诸如,例如,通过将估计完成时间零指派到那些任务来确定估计完成时间。可以至少部分地基于下面来确定多个任务的每个的估计完成时间,即对于多个任务的每个、剩余将要处理的输入碎片的一部分的大小,对于已经关于多个任务的每个而处理的输入碎片的一部分、与多个任务的每个相关联的处理速率,或者对于关于多个任务的每个在时间窗口内处理的输入碎片的一部分、与多个任务的每个相关联的近期处理速率,或者其他信息。

在415,第一输入碎片分裂成第一分裂输入碎片以及第二、不同的分裂输入碎片。分裂输入碎片的每个包括第一输入碎片的不同部分。在一些情况下,指派第一分裂输入碎片由第二任务处理,并且指派第二分裂输入碎片由不同于第二任务的第三任务处理。在一些实现方式中,第二任务是第一任务,并且第三任务是与批量数据处理作业相关联的空闲任务。

在一些情况下,识别第一任务以及分裂第一输入碎片由第一任务自身执行。在这种情况下,第一任务可以从与批量数据处理作业相关联的监管器处理接收目标完成时间,并且将它与它的估计完成时间相比较以确定在目标完成时间之前它将不会完成。第一任务可以将在目标完成时间之前第一任务将不能处理的第一输入碎片的一部分的指示发送给监管器处理,并且作为响应,监管器处理可以将第一输入碎片的该部分指派给空闲任务进行处理。识别第一任务并且分裂第一输入碎片也可以由监管器处理执行。

在一些情况下,方法400包括识别批量数据处理作业已经进入尾声状态,在尾声状态中,与输入数据集相关联的所有未完成的碎片都正在由任务处理并且存在可用来处理碎片的空闲任务。在这种情况下,可以在识别批量数据处理作业已经进入尾声状态之后执行识别第一任务和分裂第一输入碎片。

图5是可以作为客户端或者作为服务器或者多个服务器,用来实现在本文献中描述的系统和方法的计算设备500、550的框图。计算设备500旨在代表各种形式的数字计算机,诸如笔记本电脑、台式机、工作站、个人数字助理、服务器、刀片服务器、大型机或者其他适当的计算机。计算设备550旨在代表各种形式的移动设备,诸如个人数字助理、蜂窝式电话、智能电话以及其他类似的计算设备。另外,计算设备500或者550能够包括通用串行总线(USB)闪存驱动器。USB闪存驱动器可以存储操作系统和其他应用。USB闪存驱动器能够包括输入/输出组件,诸如无线收发器或者可以插入另一个计算设备的USB端口中的USB连接器。这里示出的组件、它们的连接和关系以及它们的功能意在仅是示例性的,并且不意在限制在本文献中描述和/或要求保护的本发明的实现方式。

计算设备500包括处理器502、存储器504、存储设备506、连接到存储器504和高速扩展端口510的高速接口508以及连接到低速总线514和存储设备506的低速接口512。组件502、504、506、508、510和512的每个使用各种总线互连,并且可以安装在常见的主板上或者在适当的情况下以其他方式安装。处理器502能够处理在计算设备500内执行的指令,包括存储在存储器504中或者存储设备506上、在诸如耦合到高速接口508的显示器516这样的外部输入/输出设备上显示用于GUI的图形信息的指令。在其他实现方式中,在适当的情况下,可以连同多个存储器以及多种类型的存储器使用多个处理器和/或多个总线。而且,可以连接多个计算设备500,每个设备提供必要操作的部分(例如,作为服务器库、一组刀片服务器或者多处理器系统)。

存储器504存储计算设备500内的信息。在一种实现方式中,存储器504是一个或多个易失性存储单元。在另一种实现方式中,存储器504是一个或多个非易失性存储单元。存储器504也可以是诸如磁盘或者光盘这样的另一种形式的计算机可读介质。

存储设备506能够为计算设备500提供海量存储。在一种实现方式中,存储设备506可以是或者包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或者磁带设备、闪存或者其他类似的固态存储设备、或者设备阵列,包括在存储区域网或者其他配置中的设备。计算机程序产品能够在信息载体中有形地实施。计算机程序产品也可以包含当执行时,执行诸如上面描述的那些的一个或多个方法的指令。信息载体是计算机或者机器可读介质,诸如存储器504、存储设备506或者处理器502上的存储器。

高速接口508为计算设备500管理带宽密集型操作,而低速接口512管理较低带宽密集型操作。这种功能分配仅是示例性的。在一种实现方式中,高速接口508耦合到存储器504、显示器516(例如,通过图形处理器或者加速器),以及耦合到可以接受各种扩展卡(未示出)的高速扩展端口510。在该实现方式中,低速接口512耦合到存储设备506和低速扩展端口514。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口可以耦合到一个或多个输入/输出设备,诸如键盘、指点设备、扫描仪,或者例如通过网络适配器耦合到诸如交换机或路由器这样的联网设备。

计算设备500可以以许多不同的形式实现,如在图中所示。例如,它可以作为标准服务器520实现,或者在一组这种服务器中实现多次。它也可以作为机架服务器系统524的部分而实现。另外,它可以在诸如笔记本电脑522这样的个人计算机中实现。作为替换,来自计算设备500的组件可以与诸如设备550这样的移动设备(未示出)中的其他组件组合。这种设备的每个可以包含计算设备500、550的一个或多个,并且整个系统可以由彼此通信的多个计算设备500、550构成。

除了别的组件之外,计算设备550包括处理器552、存储器564、诸如显示器554这样的输入/输出设备、通信接口566以及收发器568。设备550也可以提供有诸如微型硬盘这样的存储设备或者其他设备来提供另外的存储。组件550、552、564、554、566和568的每个使用各种总线互连,并且组件的几个可以安装在常见的主板上或者在适当的情况下以其他方式安装。

处理器552能够执行计算设备550内的指令,包括存储在存储器564中的指令。处理器可以作为包括单独的以及多个模拟和数字处理器的芯片的芯片集实现。另外,处理器可以使用许多体系结构的任何来实现。例如,处理器552可以是CISC(复杂指令集计算机)处理器、RISC(精简指令集计算机)处理器、或者MISC(最小指令集计算机)处理器。处理器可以提供例如设备550的其他组件的协同,诸如用户接口的控制、由设备550运行的应用以及设备550的无线通信。

处理器552可以通过控制接口558以及耦合到显示器554的显示接口556与用户通信。显示器554可以是,例如,TFT(薄膜晶体管液晶显示器)显示器或者OLED(有机发光二极管)显示器或者其他适当的显示技术。显示接口556可以包括用于驱动显示器554将图形和其他信息展示给用户的适当的电路系统。控制接口558可以接收来自用户的命令并且转换它们用于提交给处理器552。另外,可以提供外部接口562与处理器552通信,以便使得设备550能够与其他设备进行附近区域通信。在一些实现方式中,外部接口562可以提供例如有线通信,或者在其他实现方式中,提供无线通信,并且也可以使用多个接口。

存储器564存储计算设备550内的信息。存储器564能够作为一个或多个计算机可读介质、一个或多个易失性存储单元或者一个或多个非易失性存储单元的一个或多个实现。也可以提供扩展存储器574并且扩展存储器574通过扩展接口572连接到设备550,扩展接口572可以包括例如SIMM(单列直插存储模块)卡接口。这种扩展存储器574可以为设备550提供额外的存储空间,或者也可以为设备550存储应用或者其他信息。具体地,扩展存储器574可以包括执行或者补充上面描述的处理的指令,并且也可以包括安全信息。因此,例如,扩展存储器574可以提供作为设备550的安全模块,并且可以使用允许设备550的安全使用的指令进行编程。另外,安全应用可以经由SIMM卡,连同另外的信息一起提供,诸如以不可非法入侵的方式将识别信息放置在SIMM卡上。

如下面所讨论的,存储器564可以包括,例如,闪存和/或NVRAM存储器。在一种实现方式中,计算机程序产品在信息载体中有形地实施。计算机程序产品包含当执行时,执行诸如上面描述的那些的一个或多个方法的指令。信息载体是可以例如经由收发器568或者外部接口562接收的计算机或者机器可读介质,诸如存储器564、扩展存储器574或者处理器552上的存储器。

设备550可以通过通信接口566无线地通信,在必要的情况下,通信接口566可以包括数字信号处理电路系统。通信接口566可以提供各种模式或者协议下的通信,其中诸如GSM语音呼叫、SMS、EMS或者MMS消息传递、CDMA、TDMA、PDC、WCDMA、CDMA2000或者GPRS。这种通信可以例如通过射频收发器568而发生。另外,近程通信可以诸如使用蓝牙、WiFi或者其他这种收发器(未示出)而发生。另外,GPS(全球定位系统)接收器模块570可以提供另外的导航以及位置相关的无线数据给设备550,这可以在适当的情况下由在设备550上运行的应用使用。

设备550也可以使用音频编码解码器560可听地通信,音频编码解码器560可以接收来自用户的口头信息并且将它转换成可使用的数字信息。音频编码解码器560可以诸如通过例如在设备550的手持机中的扬声器,类似地为用户生成可听的声音。这种声音可以包括来自语音电话呼叫的声音,可以包括记录的声音(例如,语音消息、音乐文件等)并且也可以包括由在设备550上操作的应用生成的声音。

计算设备550可以以许多不同的形式实现,如图中所示。例如,它可以作为蜂窝式电话580实现。它也可以作为智能电话582、个人数字助理或者其他类似的移动设备的部分而实现。

在各种实现方式中,如果先前的操作未成功(例如,如果没有执行确定),那么不执行“响应”另一个操作或者“作为”另一个操作的“结果”(例如,确定或者识别)而执行的操作。“自动”执行的操作是没有用户干预(例如,干预的用户输入)而执行的操作。本文献中使用有条件的语言描述的特征可以描述可选的实现方式。在一些示例中,从第一设备“传输”到第二设备包括第一设备将数据放置到网络中由第二设备接收,但是可以不包括第二设备接收数据。相反地,从第一设备“接收”可以包括从网络接收数据,但是可以不包括第一设备传输数据。

由计算系统“确定”能够包括计算系统请求另一个设备执行确定并且将结果提供给计算系统。而且,由计算系统“显示”或者“展示”能够包括计算系统发送数据用于使得另一个设备显示或者展示所引用的信息。

在该说明书中描述的主题和操作的实施例能够在数字电子电路系统,或者在计算机软件、固件或者硬件中,包括在本说明书中公开的结构以及它们的结构等同物,或者它们的一个或多个的组合中实现。在本说明书中描述的主题的实施例能够作为一个或多个计算机程序,亦即,计算机程序指令的一个或多个模块实现,它们编码在计算机存储介质上用于由数据处理装置执行或者控制数据处理装置的操作。作为替代或者另外地,程序指令能够编码在人工生成的传播信号上,例如,机器生成的电气、光学或者电磁信号,生成该信号以编码信息用于传输到适当的接收器设备,用于由数据处理装置执行。计算机存储介质能够是计算机可读存储设备、计算器可读存储基板、随机或者串行存取存储阵列或者设备,或者它们的一个或多个的组合,或者包括在其中。而且,当计算机存储介质不是传播信号时,计算机存储介质能够是编码在人工生成的传播信号中的计算机程序指令的来源或目的地。计算机存储介质也能够是一个或多个单独的物理组件或介质(例如,多个CD、磁盘或者其他存储设备),或者包括在其中。

在本说明书中描述的操作能够作为由数据处理装置在存储在一个或多个计算机可读存储设备上或者从其他来源接收的数据上执行的操作来实现。

术语“数据处理装置”包括用于处理数据的所有种类的装置、设备和机器,作为示例包括可编程处理器、计算机、片上系统、或者前述的多个或者组合。装置能够包括专用逻辑电路系统,例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。除了硬件之外,装置也能够包括为讨论中的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行环境、虚拟机或者它们的一个或多个的组合的代码。装置和执行环境能够实现各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。

计算机程序(也称作程序、软件、软件应用、脚本或者代码)能够以任何形式的编程语言编写,包括编译或者解释语言、声明式或者过程式语言,并且它能够以任何形式部署,包括作为独立程序或者作为模块、组件、子例程、对象或者适合于在计算环境中使用的其他单元。计算机程序可以,但是不需要,对应于文件系统中的文件。程序能够存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,在讨论中的程序专用的单个文件中,或者在多个协同的文件中(例如,存储一个或多个模块、子程序或者代码的部分的文件)。能够部署计算机程序在一个计算机上或者在位于一个场所或者跨越多个场所而分布并且由通信网络互连的多个计算机上执行。

在本说明书中描述的处理和逻辑流程能够由一个或多个可编程处理器执行,一个或多个可编程处理器执行一个或多个计算机程序以通过在输入数据上操作并且生成输出来执行动作。处理和逻辑流程也能够由专用逻辑电路系统执行,并且装置也能够作为专用逻辑电路系统而实现,例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。

作为示例,适合于计算机程序的执行的处理器包括通用和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将接收来自只读存储器或者随机存取存储器或者二者的指令和数据。计算机的必需元件是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储设备。通常,计算机也将包括,或者操作地耦合以接收来自用于存储数据的一个或多个海量存储设备的数据或者传送数据到该一个或多个海量存储设备,或者二者,海量存储设备例如磁性、磁光盘或者光盘。然而,计算机不需要具有这种设备。而且,计算机能够在另一个设备中实施,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或者便携式存储设备(例如,通用串行总线(USB)闪存驱动器),仅举几个例子。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储设备,作为示例,包括半导体存储设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或者可移除磁盘;磁光盘;以及CDROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路系统补充,或者合并在专用逻辑电路系统中。

为了提供与用户的交互,在本说明书中描述的主题的实施例能够在计算机上实现,计算机具有显示设备,例如,CRT(阴极射线管)或者LCD(液晶显示)监控器,用于显示信息给用户,以及键盘和指点设备,例如,鼠标或轨迹球,由此用户能够提供输入到计算机。其他种类的设备同样能够用来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的传感反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且来自用户的输入能够以任何形式接收,包括声学、语音或者触觉输入。另外,计算机能够通过发送文档到由用户使用的设备并且接收来自由用户使用的设备的文档与用户交互;例如,通过响应从网络浏览器接收的请求,发送网页到用户的用户设备上的网络浏览器。

在本说明书中描述的主题的实施例能够在包括后端组件的计算系统中,例如,作为数据服务器,或者在包括中间件组件的计算系统中,例如,作为应用服务器,或者在包括前端组件的计算系统中,例如,作为具有图形用户界面或者网络浏览器的用户计算机,通过图形用户界面或者网络浏览器,用户能够与在本说明书中描述的主题的实现方式交互,或者一个或多个这种后端、中间件或者前端组件的任何组合而实现。系统的组件能够通过任何形式或介质的数字数据通信,例如通信网络互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网络(例如,因特网)以及对等网络(例如,自组织对等网络)。

计算系统能够包括用户和服务器。用户和服务器通常远离彼此并且典型地通过通信网络交互。用户和服务器的关系借助于在各自的计算机上运行并且具有到彼此的用户-服务器关系的计算机程序而出现。在一些实施例中,服务器将数据(例如,HTML页面)传输到用户设备(例如,为了显示数据给与用户设备交互的用户以及接收来自该用户的用户输入)。在用户设备处生成的数据(例如,用户交互的结果)能够从服务器处的用户设备接收。

虽然本说明书包含许多具体的实现细节,但是这些不应当解释为对于任何发明的范围或者可以要求保护的内容的限制,而是解释为针对特定发明的特定实施例的特征的描述。在单独的实施例的上下文中在本说明书中描述的某些特征也能够在单个实施例中组合实现。相反地,在单个实施例的上下文中描述的各种特征也能够单独地或者以任何适当的子组合在多个实施例中实现。而且,虽然特征可以在上面描述为在某些组合中起作用,并且甚至最初如此要求,但是来自所要求保护的组合的一个或多个特征在某些情况下能够从组合中去除,并且所要求保护的组合可以指向子组合或者子组合的变型。

类似地,虽然操作在附图中以特定的次序描绘,但是这不应当理解为需要这种操作以所示的特定次序或者以顺序的次序执行,或者需要执行所有例示的操作,以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。而且,在上面描述的实施例中各种系统组件的分离不应当理解为在所有实施例中需要这种分离,并且应当理解,所描述的程序组件和系统能够通常在单个软件产品中集成在一起或者封装到多个软件产品中。

因此,已经描述了主题的特定实施例。其他实施例在下面的权利要求的范围内。在一些情况下,在权利要求书中叙述的动作能够以不同的次序执行并且仍然实现期望的结果。另外,在附图中描绘的处理不一定需要所示的特定次序,或者顺序的次序,以实现期望的结果。在某些实现方式中,多任务和并行处理可以是有利的。

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