用于分布式计算系统的备份和还原架构的制作方法

文档序号:19816576发布日期:2020-01-31 19:21阅读:357来源:国知局
用于分布式计算系统的备份和还原架构的制作方法

本说明书通常涉及云计算技术。



背景技术:

在云计算中,通常以虚拟机的形式向用户提供一组共享的计算资源、存储资源和网络资源。多个物理计算设备,例如服务器场中的计算机,可以提供用于供应这些资源的服务平台。服务平台有时被称为基础设施即服务(iaas)。部署系统可以使用iaas资源自动化并简化将应用的源代码或二进制代码表示形式转换成该应用的服务实例的过程。然后,最终用户可以在云计算平台上访问该服务实例。云计算平台的一个示例是部署在一组云设备上的pivotalcloud软件产品。一个示例性部署系统是系统,所述系统在云计算平台上部署和管理服务实例。



技术实现要素:

本说明书描述了用于备份和还原云计算平台上的部署的方法、系统和计算机可读介质。云计算平台上的部署是一组虚拟机和相应的非暂时性存储设备(例如磁盘)。部署可以包括被称为部署作业的多个子单元。相应的作业规范文件指定由每个部署作业使用的相应资源。所述资源包括各种脚本,所述脚本指定要在备份或还原操作之前、期间和之后实行的动作。备份编排器(orchestrator)在接收到对部署的备份或还原请求后,将按脚本类型要求的预指定顺序为部署作业执行脚本。当执行特定类型的脚本时,将执行对应于该类型的每个部署作业的相应脚本。当特定类型的所有脚本完成执行时,将执行具有下一种类型的脚本。因此,多个部署作业的备份和还原过程被同步化且被编排。

可以实现本说明书中描述的主题的特定实施例以实现以下优点中的一个或多个。所公开的技术可以提供用于备份和还原大型分布式计算系统上的大型部署的简单命令行接口。在并行运行多个作业的大型系统上的备份和还原过程本质上很复杂。所公开的技术提供了一种架构,所述架构通过将备份和还原的动作委派给每个部署作业来简化复杂的过程。与用于备份和还原部署的常见技术相比,本说明书中描述的技术提供了更灵活的备份和还原。所公开的技术编排了多个作业的备份和还原操作,从而防止了由不同作业在不同时间锁定而致使的冲突,并且确保在进行备份之前系统的子部件以一致状态被暂停。因此,与传统的备份系统相比,所公开的技术更适合于具有多个子部件的大型部署。

本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,本主题的其它特征、方面和优点将变得显而易见。

附图说明

图1是示出了实现备份和还原架构的示例性系统的架构的框图。

图2是示出了备份和还原脚本的示例性预定义顺序的框图。

图3是示出了用于多个作业的备份和还原脚本的示例性编排的图解。

图4是示出了备份过程中脚本执行的示例性过程的流程图。

图5是示出了备份或还原部署的示例性过程的流程图。

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

具体实施方式

图1是示出了实现备份和还原架构的示例性系统的架构的框图。备份编排器102从客户端设备106接收对部署110进行备份的备份请求104。备份编排器102包括执行一个或多个程序的一个或多个计算机,所述一个或多个程序实行备份或还原。备份请求104可以包括调用一个或多个程序的命令行输入。备份请求104可以显式地或隐式地识别部署110。例如,备份请求104可以指定一个或多个参数,例如部署的名称、部署的网络路径或二者。客户端设备106可以包括被配置成接收命令行输入的命令行接口(cli)。备份操作包括将可以用于重新创建部署110的数据转储到非暂时性存储设备。还原操作包括根据先前转储的数据重新创建部署110。

部署110包括虚拟机(vm)和永久存储设备(例如,磁盘)的集合。vm由“stemcell”构建而成,其包括包装在iaas特定程序包中的操作系统映像,所述程序包包括一个或多个实用程序和配置文件。部署的vm基于部署清单112而填充有软件的特定发行版,并且由部署主管(例如,boshdirector)进行管理。每个发行版都包括配置属性、配置模板、脚本、源代码和二进制工件(artifact)的版本化的集合。部署清单112是指定stemcell的版本、发行版以及每个发行版要使用的资源的文件。

部署110包括多个部署作业,部署作业在逻辑上被分组成实例组,例如实例组116和118。实例组116和118中的每一个可以包括跨越多个可用性区域的一个或多个实例,例如vm。实例组(例如,实例组116)中的每一个可以包括一个或多个部署作业,例如部署作业120和122。每个部署作业是表示长期运行的服务或短期运行的任务的部署的逻辑单元,也被称为差事(errand)。部署作业120和122中的每一个都在部署清单112中定义。部署作业120和122中的每一个可以包括元数据、一个或多个配置文件以及一个或多个脚本。作业规范文件(例如,bosh规范文件)可以定义元数据,包括例如作业名称、作业描述、模板以及与所述作业相关联的脚本的位置。部署清单112可以为部署作业120和122中的每一个指定各自的作业名称、一个或多个各自的作业模板、各自的资源库、一个或多个各自的网络以及一个或多个备份或还原脚本。备份或还原脚本实行用于备份和还原操作的准备和清理动作。

例如,部署清单112指定第一部署作业120与第一备份前脚本、第一备份脚本和第一备份后脚本相关联。部署清单112指定第二部署作业122与第二备份前脚本、第二备份脚本和第二备份后脚本相关联。每个脚本都可以由发行版作者创建。每个脚本可以是常规的壳脚本(shellscript)。在每个脚本中可以使用erb(嵌入式ruby)标签进行模板化。

每个脚本定义在备份或还原的每个特定阶段实行的相应操作。备份可以包括在多个阶段实行的多个任务。任务和相应的阶段可以包括:例如,备份前检查,用于确定特定的部署作业是否可备份,例如是否适合备份;备份前锁定,所述备份前锁定阻止部署作业被修改和失去同步;备份,所述备份转储(例如写入)部署作业的数据;备份后解锁,所述备份后解锁允许修改部署作业;以及备份后清理,所述备份后清理保存工件。还原的阶段可以包括:例如,还原前检查、还原锁定、还原、还原解锁、还原验证和还原清理。这些任务仅作为示例提供。每个阶段的任务都可以是用户可配置的,以实行发行版作者期望的任何动作。

对于第一部署作业120和第二部署作业122中的每一个,每个阶段可以对应于各自的脚本。每个部署作业不一定具有所有阶段的脚本。可以将对应于特定阶段的所有作业的脚本一起存储在目录(例如,/var/vcap/jobs/[jobname]/bin/backupor/var/vcap/jobs/[jobname]/bin/restore)中。发行版中用于部署作业的一个或多个规范文件可以为各阶段指定各自的目录。

在接收到备份请求104时,备份编排器102定位与部署作业120和122相关联的脚本并执行所述脚本。备份编排器102被配置成逐步执行脚本。例如,备份编排器102可以在执行备份前锁定脚本之前为所有部署作业执行备份前检查阶段的脚本。在每个阶段内,备份编排器102可能会或可能不会以特定顺序执行所有部署作业的脚本。脚本可以生成一个或多个工件124。每个工件124可以包括关于备份的信息,例如备份的版本。备份编排器102可以收集和存储工件,或者将工件提供给客户端设备106。备份编排器102可以生成对客户端设备106的响应以报告备份状态。

通常而言,备份编排器102提供用于指定和调用备份操作以及用于配置公共备份目的地的公共用户接口。为了方便起见,以上在备份方面总体上描述了备份编排器102的操作。还原过程与此类似。

图2是示出了备份和还原脚本的示例性预定义顺序的框图。备份编排器(例如,图1的备份编排器102)提供生命周期挂钩(lifecyclehook)供发行版作者使用。生命周期挂钩定义了用于备份和还原的脚本执行的各种阶段。所述阶段在部署作业之间同步化。发行版作者可以使用生命周期挂钩来协调多个部署作业的备份和还原操作。

对于备份脚本202,生命周期挂钩包括备份前检查204、备份前锁定206、备份208、备份后解锁210和备份后清理212的各阶段。对于还原脚本222,生命周期挂钩包括还原前检查224、还原前锁定226、还原228、还原后解锁230、还原验证232以及还原清理234的各阶段。备份编排器可以按照图2中指示的顺序线性地执行脚本。

在执行下一个阶段(例如,备份208)的脚本之前,备份编排器可以为所有作业顺次地执行某个阶段(例如,备份前锁定206)的所有脚本,以允许群集的部署中的一致性。例如,针对第一部署作业的备份前检查204将在针对第二部署作业的备份前检查204开始之前完成。备份编排器可以控制也可以不控制在部署作业之间调用特定阶段的各脚本的顺序。备份编排器确实控制不同阶段的脚本被调用的顺序。另外,在一些实施方式中,备份编排器可以实行部署间编排以维持跨部署的一致性。

部署作业可以具有实行备份前检查204的脚本,所述备份前检查204将检查部署作业是否可备份。该脚本允许部署作业检查是否可以起动备份操作。该脚本是可选的,并且如果不需要进行备份前检查,则不需要包括该脚本。例如,当备份mysql时,用于备份前检查204的脚本可以确定作业是否可以被锁定。

为了创建用于备份前检查204的脚本,发行版作者可以将shell脚本以任何名称存储在部署的模板目录中。在部署作业规范文件的模板部分中,发行版作者可以将脚本名称和bin/pre-backup-check目录添加为键值对。作业规范文件可以与发行版相关联。下面在清单1中示出了用于备份前检查204脚本的示例性条目。

名称:a_node

模板:

pre-backup-check.erb:bin/pre-backup-check

清单1

用于备份前检查204的脚本使用退出代码来指示结果。例如,退出代码0(零)可以指示成功;任何其它退出代码都可以指示失败。成功退出指示部署作业是可备份的。在部署的任何节点上调用用于备份前锁定206的任何脚本之前,调用用于备份前检查204的脚本。可以跨部署中的各个作业以任何顺序调用用于备份前检查204的脚本。

用于备份前检查204的脚本可以生成呈标准输出流和标准错误流(例如,stdout流和stderr流)形式的日志。这些流将被捕获并发送到调用备份的客户端设备。备份编排器还可以将日志存储在各种目录中。例如,stdout流可以被附加到/var/vcap/sys/log/<job-name>/pre-backup-check.stdout.log文件中;stderr数据流可以被附加到/var/vcap/sys/log/<job-name>/pre-backup-check.stderr.log文件中。

部署作业可以具有用于备份前锁定206的脚本,所述备份前锁定206将锁定被确定为可备份的部署作业。该脚本允许部署作业锁定,以使得整个群集上备份保持一致。例如,在备份mysql时,用于备份前锁定206的脚本可以锁定作业,以使得在备份期间不运行任何数据库迁移。

为了将备份锁定脚本添加到部署作业中,发行版作者可以在部署作业的模板目录中用任何名称创建脚本。部署作业规范文件的模板部分包括脚本名称和bin/backup-lock目录作为键值对。下面在清单2中示出了用于备份前锁定206的脚本的示例性条目。

名称:a_node

模板:

backup-lock.erb:bin/backup-lock

清单2

用于备份前锁定206的脚本使用退出代码来指示结果。例如,退出代码0(零)可以指示成功;任何其它退出代码都可以指示失败。成功退出指示部署作业被成功地锁定。在部署的任何节点上调用用于备份208的脚本中的任何一个之前,调用用于备份前锁定206的脚本。可以跨部署中的各个作业以任何顺序调用用于备份前锁定206的脚本。

用于备份前锁定206的脚本可以生成呈stdout流和stderr流形式的日志。这些流将被捕获并发送到调用备份的操作者。备份编排器还可以将日志存储在各种目录中。例如,stdout流可以被附加到/var/vcap/sys/log/<job-name>/pre-backup-lock.stdout.log文件中;stderr流可以被附加到/var/vcap/sys/log/<job-name>/pre-backup-lock.stderr.log文件中。

部署作业可以具有将部署作业的备份转储到指定目录(例如,由$backup_directory参数指定的目录)的备份208脚本。例如,在备份mysql时,备份208脚本将调用数据转储命令,例如mysqldump。部署中至少有一个备份208脚本,以使得部署是可备份的。

为了将备份脚本添加到部署作业中,发行版作者可以在部署作业的模板目录中用任何名称创建脚本。部署作业规范文件的模板部分包括脚本名称和bin/backup目录作为键值对。下面在清单3中示出了用于备份208脚本的示例性条目。

名称:a_node

模板:

backup.erb:bin/backup

清单3

备份208脚本使用退出代码来指示结果。例如,退出代码0(零)可以指示成功;任何其它退出代码都可以指示失败。成功退出指示部署作业被成功备份。在部署的所有节点上调用所有备份前锁定206之后,调用备份208脚本。在部署的任何节点上调用备份后解锁210脚本中的任何一个之前,调用备份208脚本。可以跨部署中的各个作业以任何顺序调用备份208脚本。

备份208脚本可以生成呈stdout流和stderr流形式的日志。这些流将被捕获并发送到调用备份的操作者。备份编排器还可以将日志存储在各种目录中。例如,stdout流可以被附加到/var/vcap/sys/log/<job-name>/backup.stdout.log文件中;stderr流可以被附加到/var/vcap/sys/log/<job-name>/backup.stderr.log文件中。

备份后解锁210和备份后清理212脚本可以具有如上所公开的类似结构。同样,还原脚本也可以具有类似的结构。

图3是示出用于多个作业的备份和还原脚本的示例性编排的图解。示例性部署(例如,图1的部署110)可以具有多个实例组,例如第一实例组116和第二实例组118。第一实例组116包括第一部署作业120和第二部署作业122。第二实例组118包括第三部署作业304。

第一部署作业120与第一备份前检查脚本306、第一备份前锁定脚本308、第一备份脚本310、第一备份后解锁脚本312和第一备份后清理脚本314相关联。第二部署作业122与第二备份前检查脚本316、第二备份前锁定脚本318、第二备份脚本320、第二备份后解锁脚本322和第二备份后清理脚本324相关联。第三部署作业304与第三备份前检查脚本326、第三备份脚本330和第三备份后清理脚本334相关联。

备份编排器(例如,图1的备份编排器102)协调这些脚本306到334的执行。备份编排器在各阶段中执行脚本。在第一阶段340中,备份编排器执行第一备份前检查脚本306、第二备份前检查脚本316和第三备份前检查脚本326,不一定按该顺序执行。在执行了这些脚本之后,备份编排器移至第二阶段342。在第二阶段342中,备份编排器执行第一备份前锁定脚本308和第二备份前锁定脚本318。在示出的示例中,第三部署作业304不具有备份前锁定脚本。在执行这些脚本之后,备份编排器移至第三阶段344以执行备份脚本310、320和330。在执行备份脚本310、320和330之后,备份编排器移至第四阶段346以执行备份后解锁脚本312和322。最后,备份编排器移动到第五阶段348以执行备份后清理脚本414、324和334。每个移动都发生在前一阶段中的所有脚本完成执行之后。

为了方便起见,在图3中仅示出与对部署进行备份有关的脚本。与还原部署有关的脚本的执行可以被类似地分组和分阶段。

图4是示出备份中脚本执行的示例性过程400的流程图。过程400可以由包括一个或多个处理器(例如,图1的备份编排器102)的系统来实行。

系统接收(402)备份或还原部署的请求。所述请求可以通过提供部署的位置或名称来指定部署。系统确定(404)是否存在指定的部署。响应于确定部署不存在,系统退出(406)备份。响应于确定部署确实存在,系统例如通过执行mkdir命令来创建(408)用于存储备份工件的本地目录。

系统确定(410)本地目录是否被成功创建。响应于确定创建本地目录不成功,系统退出(406)备份。响应于确定创建本地目录成功,系统执行(412)用于部署中的部署作业的备份前脚本。备份前脚本可以包括用于备份前检查和备份前锁定的脚本。系统可以以如参考图3所述的组和阶段执行备份前脚本。

系统确定(414)执行备份前脚本是否成功。响应于确定执行备份前脚本成功,系统执行(416)备份脚本以转储部署作业的数据。然后,系统执行(418)备份后脚本。如果系统确定执行备份前脚本不成功,则系统可以跳过备份脚本并执行备份后脚本。备份后脚本可以包括用于备份后解锁和备份后清理的脚本。系统可以以如参考图3所述的组和阶段执行备份后脚本。

系统确定(420)备份成功。响应于确定备份成功,系统排除(422)工件。将工件从已部署的实例中排除,以使得复制备份所花费的时间不包括在锁定作业的时间中。然后,系统从实例中移除(424)备份。移除备份包括将备份的副本从部署的实例中删除,因为备份已被复制到操作者vm。响应于确定备份不成功,系统跳过排除工件。系统从实例中移除(424)备份。然后系统退出(406)备份。

过程400是备份部署的过程。还原部署的过程可以包括类似的操作。

图5是示出备份或还原部署的示例性过程500的流程图。过程500可以由包括一个或多个处理器(例如,图1的备份编排器102)的系统实行。

系统从客户端设备接收(502)备份或还原部署的请求。部署包括一个或多个部署作业。在虚拟机的集合和一个或多个非暂时性存储设备(例如,永久性磁盘)的集合上实现所述部署。每个部署作业在各自的虚拟机中执行。每个部署作业都在部署清单中定义。所述请求可以是启动备份编排器程序的命令行输入。所述请求与识别所述部署的部署标识符相关联。部署标识符可以指定部署的名称或位置。部署标识符可以是请求的参数,或者与发出请求的客户端设备隐式地相关联。

系统基于部署标识符来确定(504)存储作业特定的脚本的脚本位置。确定脚本位置包括识别如作业规范文件中指定的(例如,如上面的清单1到3中示出的条目)脚本位置。每个作业特定的脚本根据部署清单和一个或多个作业规范文件与各自的部署作业相关联。部署清单和一个或多个作业规范文件可以指定部署的配置参数。

对于每个作业,部署清单和一个或多个作业规范文件可以指定各自的备份前脚本(例如,备份前检查脚本和备份前锁定脚本);各自的备份脚本;一个或多个各自的备份后脚本,例如备份后解锁脚本和备份后清理脚本;一个或多个各自的还原前脚本,例如还原前检查脚本和还原前锁定脚本;各自的还原脚本;或一个或多个各自的还原后脚本,例如还原后解锁脚本、还原后验证脚本和还原后清理脚本中的一个或多个。脚本的内容以及由脚本实行的动作是用户可定义的,并且可以由发行版作者进行编辑。因此,系统提供了灵活且可适应不同部署的不同需求的架构。部署清单和一个或多个作业规范文件可以通过指定各自的脚本的各自的位置(例如,目录或其它形式的访问路径)来指定各自的脚本。

系统以预定的顺序执行(506)存储在脚本位置处的作业特定的脚本。在执行期间,系统会为每个部署作业执行备份前脚本或还原前脚本。然后,系统为每个部署作业执行备份脚本或还原脚本。然后,系统为每个部署作业执行备份后脚本或还原后脚本。以预定的顺序执行存储在脚本位置处的作业特定的脚本包括:按脚本类型顺次地执行作业特定的脚本,每个脚本类型对应于一个阶段。在执行期间,第二类型的脚本在第一类型的脚本对于所有部署作业完成之后执行。对于每个脚本类型,具有该脚本类型的作业特定的脚本针对每个部署作业顺次地执行。特别地,例如,上面参考图3描述了执行顺序。作业特定的脚本备份一个或多个部署作业或还原一个或多个部署作业。

系统向客户端设备提供(508)状态报告作为对请求的响应,所述状态报告指示备份或还原的状态。所述状态报告可以是标准的输入/输出和错误流,或者可以存储在指定的位置,并且在发生新的备份和还原时被附加。状态可以包括对于成功的代码或对于失败的错误代码。

可以在数字电子电路中,在有形地体现的计算机软件或固件中,在计算机硬件(包括在本说明书中公开的结构以及其结构等效形式)中或它们的一个或多个的组合中来实现本说明书中所描述的主题和功能操作的实施例。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即在有形的非暂时性程序载体上编码的计算机程序指令的一个或多个模块,以由数据处理装置执行,或控制数据处理装置的操作。替选地或另外,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,所述信号被生成以对信息进行编码从而传输到合适的接收器装置以由数据处理装置执行。所述计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或串行访问存储器设备或它们中的一个或多个的组合。

术语“数据处理装置”是指数据处理硬件,并且涵盖用于处理数据的所有类别的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。所述装置还可以是或进一步包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除硬件之外,所述装置可以可选地包括为计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。

也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码的计算机程序可以以任何形式的编程语言来编写,所述编程语言包括编译或解释性语言,或声明性或程序性语言;并且可以以任何形式进行部署,包括部署为独立程序或部署为适合在计算环境中使用的模块、部件、子例程或其它单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论程序的单个文件中,或存储在多个协调文件(例如,存储一个或多个模块、子程序或代码的各部分的文件)中。可以部署计算机程序以在位于一个站点上或分布在多个站点上并通过通信网络互连的一个计算机或多个计算机上执行。

本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机实行,以通过对输入数据进行操作并生成输出来实行各功能。过程和逻辑流程还可以由专用逻辑电路实行,并且装置也可以实现为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。

举例来说,适合于执行计算机程序的计算机包括,可以基于通用或专用微处理器或二者,或者包括任何其它类别的中央处理单元。通常而言,中央处理单元将从只读存储器或随机存取存储器或二者接收指令和数据。计算机的基本元件是用于实行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常而言,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或计算机还将被可操作地耦合以从所述一个或多个大容量存储设备接收数据,或将数据传递到所述一个或多个大容量存储设备,或二者。然而,计算机不必具有此类设备。此外,计算机可以被嵌入到另一个设备中,所述另一设备例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪存盘)等。

适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备(例如eprom、eeprom)和闪速存储设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cd-rom和dvd-rom磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于将信息显示给用户的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)以及键盘和指向设备(例如,鼠标或轨迹球)的计算机上实现,用户可以通过所述键盘和轨迹球向计算机提供输入。其它类别的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档以及从所述设备接收文档来与用户进行交互;例如通过响应于从web浏览器收到的请求而将网页发送到用户的客户端设备上的web浏览器。

本说明书中描述的主题的实施例可以在计算系统中实现,所述计算系统包括后端部件(例如,如数据服务器)或包括中间件部件(例如,应用服务器)或包括前端部件(例如,客户端计算机,所述客户端计算机具有用户可以用来与本说明书中描述的主题的实施方式交互的图形用户接口或web浏览器)或者包括一个或多个这种后端部件、中间件部件或前端部件的任何组合。系统的部件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(lan)和广域网(wan),例如互联网。

所述计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是通过在各自的计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生的。

虽然本说明书包含许多特定的实施方式细节,但是这些细节不应被解释为对任何发明的范围或可以要求保护的范围的限制,而是对可能特定于特定发明的特定实施例的特征的描述。在单独的实施例的上下文中在本说明书中描述的某些特征也可以在单个实施例中以组合形式实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合来实现。此外,虽然上面可以将特征描述为以某些组合的形式起作用并且甚至最初是这样要求保护的,但是在某些情况下可以从组合中切离要求保护的组合的一个或多个特征,并且要求保护的组合可以涉及子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了各操作,但是这不应理解为要求以示出的特定顺序或以相继顺序执行这些操作,或者执行所有示出的操作以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和部件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序部件和系统通常可以一起集成在单个软件产品中或打包成多个软件产品。

因此,已经描述了主题的特定实施例。其它实施例也在以下权利要求的范围内。例如,在科学论文的上下文中描述所述主题。所述主题可以应用于将深度方面添加到搜索的其它索引工作。在一些情况下,可以以不同的顺序执行权利要求中阐述的动作,并且仍然实现期望的结果。另外,附图中描绘的过程不一定需要示出的特定顺序或相继顺序来实现期望的结果。在一些实施方式中,多任务和并行处理可能是有利的。

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