首页> 中国专利> 同步复制环境中的事务完成

同步复制环境中的事务完成

摘要

公开了用于在同步复制环境中完成事务的系统和方法。在一些实施例中,一种由计算机实现的方法可包括在数据库服务器中生成标识数据库事务的标识符。该方法还可包括将标识符发送到复制服务器;接收所述标识符被所述复制服务器确认的确认;将事务存储在数据库服务器中;以及在接收到来自复制服务器的确认之后并且在确定事务被存储在数据库服务器之后执行事务;其中将标识符发送到复制服务器与将事务存储在数据库服务器中并行发生。

著录项

  • 公开/公告号CN105320718A

    专利类型发明专利

  • 公开/公告日2016-02-10

    原文格式PDF

  • 申请/专利权人 赛贝斯股份有限公司;

    申请/专利号CN201410767499.9

  • 发明设计人 E.洛拉-加勒多;R.奎凯勒;C.兰克;

    申请日2014-12-12

  • 分类号G06F17/30(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人邵亚丽

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 14:21:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-04-10

    授权

    授权

  • 2017-04-12

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20141212

    实质审查的生效

  • 2016-02-10

    公开

    公开

说明书

本专利申请要求2014年6月26日递交的14290188.3号欧洲申请(EPO)的申请日的优先权益,这里通过引用并入该欧洲申请的全部内容。

技术领域

本文公开的主题一般涉及数据的处理。在一些示例实施例中,本公开涉及用于同步复制环境中的事务完成的系统和方法。

背景技术

高可用性灾难恢复(Highavailabilitydisasterrecovery,HADR)是对于部分和完全站点故障都提供高可用性解决方案的数据复制功能。HADR通过将数据变化从源数据库——有时称为主数据库或者简称为数据库服务器——复制到目标数据库——有时称为备用、复制(数据库)或者复制服务器——来针对数据丢失进行保护。

部分站点故障可由硬件、网络或者软件故障引起。通常,没有HADR,数据库管理系统(databasemanagementsystem,DBMS)服务器或者数据库所在的机器必须被重新启动。重启数据库及其所在的机器所花的时间长度一般是不可预测的。通常,在使数据库返回到一致状态并且可用之前可能要花若干分钟。有了HADR,备用数据库通常可在几秒钟内接管。

完全站点故障可发生在诸如火灾之类的灾难导致整个站点被毁坏时。数据库可位于不同位置。如果灾难在主站点发生,则通过让远程备用数据库接管作为具有全部功能的主数据库,可以维持数据可用性。在接管操作发生之后,可以使原始主数据库恢复工作并且返回到其作为主数据库的地位。

同步复制是通常用于在部分或完全站点故障的情况下恢复数据的一类数据复制技术。同步复制可涉及至少两个数据库和文件系统,并且可实现数据的迅速恢复,而没有任何重大的数据丢失,同时提供了针对与数据库完整性有关的问题的保护。这确保了高效地在系统之间复制数据,没有任何丢失。

同步复制在主拷贝被更新时创建数据的远程拷贝,其是主拷贝的精确镜像。具有主拷贝的系统在等待数据记录在复本系统上完成之后继续进行下去。

一般地,在同步复制中,只有在输入/输出操作的完成在主站点和镜像站点处都得到确认之后,才认为更新操作完成。当发生不完整操作时,回滚(rollback)可在两个位置都发生,这确保了远程拷贝是主拷贝的精确拷贝。

然而,可以改进用于同步复制的技术以提高速度和可靠性。

发明内容

根据本公开的一方面,提供了一种由计算机实现的方法,包括:在数据库服务器中生成标识数据库事务的标识符;将所述标识符发送到复制服务器;

接收所述标识符被所述复制服务器确认的确认;将所述事务存储在所述数据库服务器中;以及在接收到来自所述复制服务器的确认之后并且在确定所述事务被存储在所述数据库服务器中之后执行所述事务;其中,将所述标识符发送到所述复制服务器与将所述事务存储在所述数据库服务器中并行发生。

根据本公开的另一方面,提供了一种系统,包括:第一存储器,其耦合到被配置为执行数据库服务器的第一处理器;以及第二存储器,其耦合到被配置为执行复制服务器的第二处理器;其中,所述数据库服务器被配置为:生成标识数据库事务的标识符;将所述标识符发送到所述复制服务器;接收所述标识符被所述复制服务器确认的确认;将所述事务存储在所述数据库服务器中;其中,将所述标识符发送到所述复制服务器与将所述事务存储在所述数据库服务器中并行发生。

根据本公开的另一方面,提供了一种包含指令的计算机可读介质,所述指令当被处理器执行时执行操作,所述操作包括:在数据库服务器中生成标识数据库事务的标识符;将所述标识符发送到复制服务器;接收所述标识符被所述复制服务器确认的确认;将所述事务存储在所述数据库服务器中;以及在接收到来自所述复制服务器的确认之后并且在确定所述事务被存储在所述数据库服务器中之后执行所述事务。

附图说明

在附图中以示例而非限制方式图示了一些实施例。

图1是根据一些示例实施例的适合用于执行复制方法的复制服务器环境。

图2是根据一些示例实施例图示出用于执行同步复制的示例体系结构的图。

图3是根据一些示例实施例图示出并行执行的同步复制的各种过程的图。

图4-图6是根据一些示例实施例的示例时序图。

图7是根据一些示例实施例图示出用于在同步复制环境中进行事务的示例操作的流程图。

图8是图示出根据一些示例实施例能够从机器可读介质读取指令并且执行本文论述的方法中的任何一种或多种的机器的组件的框图。

具体实施方式

给出了用于在同步复制环境中完成事务的示例方法、装置和系统。

根据本公开的各方面,在同步复制环境中,可以代表客户端(用户任务)执行事务,并且事务可基于预配置的超时而休眠。当在本文中使用时,事务可以指在数据库管理系统内执行的工作单位。提交记录可用于生成标识符,该标识符被数据库服务器内的复制代理发送到复制服务器。直到此标识符被复制服务器确认并且事务被存储在盘上为止,执行事务的客户端将会休眠(等待)。复制代理发送标识符和在盘上存储事务可并行执行。当接收到标识符时,如果事务也被存储在盘上则客户端醒来并且客户端被允许继续。事务随后可执行任何提交后工作,随后可完成事务。这些描述和更多内容将联系接下来的附图来更详细论述。

参考图1,示例复制环境100根据一些示例实施例例示了用于完成事务的高级别体系结构。数据库服务器102可包括被配置为代表客户端执行事务的一个或多个数据库引擎104(例如,DB1)。各种数据库任务128可被客户端调用来执行各种指令,例如读取或写入数据库条目到盘。在一些示例实施例中,指令可被转发到私有日志缓存(privatelogcache,PLC)106,PLC106可包括保存以后将被冲刷(flush)到数据库日志的数据的存储器。PLC106可用于减少在写入到数据库日志的最末日志页面时的争用。指令也可被转发到系统日志108,系统日志108可包括表示数据库日志的一个或多个表格。

在一些示例实施例中,系统日志108中的信息可被扫描器110读取,扫描器110可被容纳在数据库引擎104的复制代理线程(replicationagentthread,RAT)模块112中。RAT112可以是负责将数据从数据库服务器102复制到复制服务器114的模块。在一些示例实施例中,扫描器110将事务信息传递到组件接口(componentinterface,CI)库(CI-lib)116。CI-lib116可以是可在需要时加载的外部库,并且可以执行各种数据库功能。此外,可以经由更新来重配置CI-lib116,而不需要重配置整个数据库。在一些示例实施例中,原生线程(nativethread)118经由有线或无线网络120调度将被记录在复制服务器114处的事务。原生线程118可以指由操作系统(operatingsystem,OS)调度而不是由数据库引擎104或者数据库服务器102调度的线程。原生线程118也可被配置为将起源队列标识符(originqueueidentifier,OQID)122传递到RAT112内的二次截断点管理器(secondarytruncationpointmanager,STPMGR)124。OQID122可在复制事务时用于复本和丢失检测,并且也可在恢复期间用于确定在何处重新开始应用事务。STPMGR124可以指负责更新数据库表格结构以便可以移动二次截断点的模块。此分析随后可用于利用新的二次截断点来更新数据库表格(DBTABLE)。在一些示例实施例中,将二次截断点存储在DBTABLE126中和等待来自复制服务器114的确认可并行发生,从而减少了进行任务的同步复制的时间。这些过程将在下文更详细描述。

参考图2,同步体系结构模型200例示了根据一些示例实施例进行事务的示例时序流。这里,多个任务(例如,任务A201、任务B203、任务C205)可被并行启动或者至少大致同时启动。可按某种优先级来处理任务201、203、205。一个单独的任务可将数据从数据库日志推送到CI-lib。任务可冲刷PLC206,同时将任务的数据存储在最末日志页面208上。当在本文中使用时,最末日志页面208可以指系统日志中的最末页面。在一些情况下,最末日志页面可以是表示也采取系统日志格式的被冲刷的(一个或多个)PLC的实际存储器。信号(semaphore)204可用于促进对最末日志页面的访问。当在本文中使用时,信号可以指用于在并行编程环境中控制对公用资源的访问的变量或抽象数据类型。

仍参考图2,在提交任务201、203或205后,任务201、203或205可进入休眠,意味着其将等待而不进行任何动作,直到被提示为止。任务201、203或205的数据可被从存储器中的系统日志读取并被这个单独的任务推送到CI-lib中。并行地,当CI-lib基于来自同步复制服务器(synchronousreplicationserver,SRS)的返回OQID而注意到因为数据已被安全存储所以可以唤醒任务时,CI-lib回调可唤醒任何DB任务的命令。

图2所示的体系结构可实现数个技术效果。例如,CI-lib交互可被从任务执行路径中去除,这可使得在DB系统中的非提交PLC冲刷上不引入开销,其中任务执行路径例如是被用户(例如,任务)执行来执行用于完成活动事务的工作的代码序列。另外,从系统日志读取数据意味着日志数据是按正确顺序的并且被正确地设定格式。利用如图所示的当前基础设施也可容易地生成OQID。在同步模式中也可自动支持涉及日志记录的任何未来变化。同步模式可以指如下操作模式:借由该操作模式,主数据库的事务不完成,直到其在复制站点上被应用为止。执行事务的用户将会等待,直到数据被复制并确认为止。

此外,使用单独的任务来访问系统日志可允许利用可用架构缓存(schemacaching)基础设施在任何时间在系统日志中来回读取。当在本文中使用时,架构缓存可以指数据库管理系统中的如下存储器内缓存:其保持了解在关联数据的复制中涉及的对象的情况。这意味着在一些情况下,可以实现与异步模式中相同的支持,而不必添加逻辑。这也暗示着,在此示例体系结构中,可以容易地实现从异步模式切换到同步模式并切换回来。图2所示的这个示例模型中的“同步”的意思是任务在提交时休眠。如果需要或者希望在半途切换到异步模式,那么是没有问题的,因为它只在提交时影响休眠。

其他非限制性技术效果也是明显的。例如,可支持在DB任务的情境之外写入到系统日志的日志记录。在此同步模式中,扫描器可使用CI“原始模式”(raw-mode),例如,数据如存储在数据库日志中那样被发送,不涉及额外的转化或转换,以将数据传送到复制服务器。这意味着,不是准备存储器中的数据,而是传递指引(reference),例如,去往所使用的硬件的存储器中的位置的地址。

在一些示例实施例中,单独的一组复制代理线程读取/处理日志记录并且向复制服务器发送数据。这与以下情况形成对照:让执行SQL的每个用户(例如,客户端)任务在代表应用处理SQL的同时执行同一任务。这可以是另一个优点,因为这个单独的一组线程可被视为某种程度的并行,这种并行是在用户任务执行SQL并且记录的数据并行地被复制代理发送时实现的。

作为另一示例优点,在一些示例实施例中,用户任务可以仅在执行提交时休眠。对于其他生成的数据,不受本公开的各方面的影响。在用户任务进入休眠之前,任务可被调度来存储到盘,同时并行地,提交被发送到复制服务器。在一些示例实施例中,在复制代理112内部,存在一个对返回的确认进行处理的原生线程。该确认可以唤醒在盘I/O上休眠的用户任务(假定盘I/O已完成)。同时,其他复制线程仍在发送数据。基于这个示例实现方式,可以使对执行SQL的用户任务的影响最小化,同时可以使从数据库服务器发送到复制服务器的数据量的吞吐量最大化。

此外,本文提出的示例体系结构可以使用日志作为复制的基础。这可具有若干个可能的结果。例如,如果复制代理模块因为任何合理的理由被停止,则在下次启动期间,模块可在异步模式中启动以确保系统日志中累积的数据将被传送到复制服务器。一旦复制代理模块到达日志的末尾,它就可切换到同步模式。另外,利用本文描述的体系结构,如果希望,则这个切换可以自动地执行。

由于同步模式示例实现方式具有与异步模式示例实现方式类似的体系结构,所以更容易切换模式,例如异步模式到同步模式,或者反过来。示例描述还有一个优点在于,实施例不需要被集成在任何用户任务中。这样,用于同步和异步的示例实现方式是类似的,这可使得在两种模式之间共享代码和功能更容易。可以想象,当同步模式示例实现方式被集成在用户任务情境中时,模式切换将会复杂得多。每个用户任务将需要释放资源并且停止在同步模式中复制。然后,复制代理将需要在用于异步模式的实现方式中进行辅助。另一方面,利用提出的描述,全部都在复制代理线程情境中处理了。因此切换模式是容易的,因为没有用户任务直接受到影响,并且复制已经开始并运行。

参考图3,功能流程图300根据一些示例实施例图示了在同步复制期间并行地进行多个过程的示例流程。这里描述的并行处理可帮助实现具有所陈述的在图2中描述的非限制性技术效果的示例体系结构。例如,这里,执行操作的用户任务302可等待该任务被写入到DB盘。当在本文中使用时,术语“用户任务”和DB任务302可被互换使用。并行地,提交305可被转发到复制服务器,例如复制服务器114。一旦两个操作(例如,盘I/O和来自复制服务器(replicationserver,RS)的确认)都被接收到,用户任务就可被唤醒。

因为在用户任务等待I/O完成的同时扫描器任务307将数据转发到RS,所以可实现并行性。当在本文中使用时,扫描器任务可以指从日志扫描数据的内部数据库管理任务。因为网络I/O一般来说在传统DB体系结构中通常更缓慢,所以更常见的情况是盘I/O在接收到来自RS的确认之前完成。

仍参考图3,对于根据图300的示例流程将描述如下。在操作302,DB任务提交事务并且执行预冲刷(pre-flush)。当在本文中使用时,预冲刷可以指把存储器中的日志数据的内容冲刷到盘存储器,这可在进行实际盘I/O本身之前发生。这可导致PLC被冲刷到存储器中的系统日志。DB任务将会把其自身插入在复制代理-CI同步唤醒队列303中。单元315可包含例如提交的时间戳和DB任务将会据其而休眠的事件。当在本文中使用时,单元(cell)可以指用于在两个不同软件组件——例如数据库管理系统和库——之间通信的存储器内结构。

在操作304,DB任务将存储器页面中的系统日志冲刷到盘并且根据队列中的唤醒单元中的事件而进入休眠。

与操作304并行地,复制代理-CI扫描器拾取来自系统日志的提交,将该提交变换成CI命令并且将该提交推送到CI-lib309中(参见操作306)。

然后,在操作308,提交被发送到复制服务器。

在操作310,最终,复制服务器返回OQID或者对于其已接收到提交任务的某个其他种类的确认。

与操作310并行地,可发生两种场景:盘I/O首先返回,即,将事务写入到盘(这是更可能发生的),或者OQID首先返回,这表示来自复制服务器的对提交的确认。这些动作可由操作312指示符来表示。

如果盘I/O首先返回,则关于该提交的单元状态被更新,以反映盘I/O已完成。当从复制服务器接收到确认时,CI回调功能基于接收到的OQID来选择单元。尝试唤醒DBMS任务的执行线程于是发现盘I/O完成了。因为盘I/O和确认都被接收到了,所以CI回调唤醒DB任务。

如果确认首先返回,则关于该提交的单元状态被更新,以反映确认已完成。当盘I/O完成时,检查关于该提交的单元。因为接收到确认,所以盘I/O的完成触发对DB任务的唤醒(DB任务根据该单元中的事件而休眠)。在任一情况下,在既接收到来自复制服务器的确认,又判定数据库服务器侧的盘I/O已完成之后,DB任务被指示醒来。

在步骤314,在DB任务被唤醒之后,可以执行任何提交后动作。

与其他传统的用于执行同步复制的模型相比,所提出的图3的体系结构可允许数个非限制性技术效果。例如,对于每个PLC冲刷(不是由提交引起的),数据不需要被推送到CI-lib。另外,可以避免对于在每一个任务的执行路径上有一个架构缓存查找的需要。此外,当在主数据库上进行架构改变时,可以避免在日志中来回扫描以对于每一个任务定位正确的架构。另外,本公开的各方面论述了用于进行可基于事务的同步复制的方法。所提出的方法因此可与任何下层硬件解除耦合,并且可基于在数据库服务器中接收到的提交记录。所提出的方法因此也可能够跨越更大的距离执行同步复制。

一般地,并行地在数据库服务器中将DB任务存储到盘并且等待复制服务器对任务的确认从时间的角度来看改善了性能。示例时序将在接下来的图中详细示出。

参考图4,示出了基于在图3中以及本公开各处描述的并行处理的示例时序图400。在此示例中,10毫秒(ms)用作盘I/O完成的示例时间量,并且15ms用作网络确认的示例时间量。这里,在此时序图的开头,函数调用指示DB任务休眠。在10ms之后,唤醒随之而来,因为盘I/O完成了。然而,任务不能继续,因为尚未接收到来自复制服务器的确认。任务将继续休眠,在此示例中花了4ms,并且当接收到确认时(在15ms),任务得到最终唤醒以继续。它再次花4ms来到达引擎的运行队列的前部。当到达运行队列的前部时,任务可继续执行提交后工作所必要的代码(即,最终完成实际事务)。从而,此示例中的总时间是15ms+4ms=19ms。

参考图5,示出了基于在图3中以及本公开各处描述的并行处理的另一示例时序图500。在此示例中,在接收到网络确认之前,盘I/O完成,但在首次唤醒之后要花更多的时间来到达运行队列的前部。在此情况下,不需要第二个调用来指示任务休眠,因为当盘I/O和网络确认都完成时,任务已经醒来。提交后工作对于此事务可照原样继续。在此情况下,完成盘I/O存储和接收来自复制服务器的确认这两者的总时间是16ms。

参考图6,示出了基于在图3中以及本公开各处描述的并行处理的另一示例时序图600。在此情况下,在存储任务之前并且在将任务发送到复制服务器之前,指示任务休眠一次。任务随后仅在两个事件都完成时接收单个唤醒调用。在此情况下,可以使得休眠、然后醒来、然后再次休眠、然后再次醒来等等的功能最小化,这可减小性能瓶颈。由于仍要花时间来到达可运行队列的前部,此情况下的总时间是19ms。

参考图7,流程图图示了用于在同步复制环境中完成事务的示例方法700。示例方法可与本文描述的方法一致,包括例如图1、图2、图3、图4、图5和图6中的描述。方法700可由处理逻辑来执行,处理逻辑可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等等)、软件(例如,在处理设备上运行的指令)或者其组合。在一种实现方式中,方法700由图1中的数据库服务器102执行,如下所述。

在方框710,数据库服务器或数据库服务器中的处理器生成标识数据库事务的标识符。如本文所述的标识符的示例可包括OQID,但是其他标识符对本领域技术人员而言是显而易见的。

在方框720,该标识符被发送到复制服务器。示例复制服务器可包括复制服务器114,但一般而言,复制服务器可以是被设计为复制由数据库服务器进行的事务的服务器。复制服务器可处理该标识符,并且确定事务要被执行而且应当被记录在复制服务器中。复制服务器随后可发送回指出其接收到了该标识符的确认。

在方框730,数据库服务器接收该标识符被复制服务器确认的确认。确认的示例可包括从复制服务器返回的OQID。

在方框740,与方框730中的动作并行发生地,数据库服务器存储该事务。在一些示例实施例中,在方框730和740中的动作期间,可以指示事务休眠,意思是指示事务等待,直到其被给予继续进行的授权为止。

在方框750,在接收到来自复制服务器的确认之后并且在确定事务被存储在数据库服务器中之后,事务被执行。在一些示例实施例中,这也可包括唤醒事务。

参考图8,该框图图示了根据一些示例实施例的能够从机器可读介质822(例如,非暂态机器可读介质,机器可读存储介质、计算机可读存储介质或者其任何适当组合)读取指令824并且全部或部分地执行本文论述的方法中的任何一种或多种的机器800的组件。具体而言,图8示出了采取计算机系统(例如,计算机)的示例形式的机器800,在该计算机系统内,可以完全或部分地执行用于使得机器800执行本文论述的方法之中的任何一种或多种的指令824(例如,软件、程序、应用(application)、小应用程序(applet)、app或者其他可执行代码)。

在替换实施例中,机器800可作为独立的设备来操作或者可连接(例如,联网)到其他机器。在联网部署中,机器800可在服务器-客户端网络环境中作为服务器机器或者客户端机器来操作,或者在分布式(例如,对等)网络环境中作为对等机器来操作。机器800可包括硬件、软件或者其组合,并且作为示例可以是服务器计算机、客户端计算机、个人计算机(personalcomputer,PC)、平板计算机、膝上型计算机、上网本、蜂窝电话、智能电话、机顶盒(set-topbox,STB)、个人数字助理(personaldigitalassistant,PDA)、web设备、网络路由器、网络交换机、网桥或者能够顺序地或以其他方式执行指定该机器要采取的动作的指令824的任何机器。另外,虽然只图示了单个机器,但术语“机器”也应当被理解为包括单独或联合执行指令824以执行本文论述的方法之中的任何一种或多种的全部或一部分的机器的任何集合。

机器800包括处理器802(例如,中央处理单元(centralprocessingunit,CPU)、图形处理单元(graphicsprocessingunit,GPU)、数字信号处理器(digitalsignalprocessor,DSP)、专用集成电路(applicationspecificintegratedcircuit,ASIC)、射频集成电路(radio-frequencyintegratedcircuit,RFIC)或者其任何适当组合)、主存储器804和静态存储器806,它们被配置为经由总线808与彼此通信。处理器802可包含微电路,这些微电路可由指令824中的一些或全部临时或永久地配置成使得处理器802可被配置为全部或部分地执行本文论述的方法之中的任何一种或多种。例如,处理器802的一个或多个微电路的集合可被配置为执行本文描述的一个或多个模块(例如,软件模块)。

机器800还可包括视频显示器810(例如,等离子显示面板(plasmadisplaypanel,PDP)、发光二极管(lightemittingdiode,LED)显示器、液晶显示器(liquidcrystaldisplay,LCD)、投影仪、阴极射线管(cathoderaytube,CRT)或者任何其他能够显示图形或视频的显示器)。机器800还可包括字母数字输入设备812(例如,键盘或小键盘)、光标控制设备814(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器、眼睛跟踪设备或者其他指向仪器)、存储单元816、信号生成设备818(例如,声卡、放大器、扬声器、耳机插孔或者其任何适当组合)以及网络接口设备820。

存储单元816包括机器可读介质822(例如,有形且非暂态的机器可读存储介质),其上存储着指令824,指令824实现本文描述的方法或功能之中的任何一种或多种,包括例如图1、图2、图3、图4、图5、图6和/或图7的任何描述。指令824在其被机器800执行之前或期间也可完全地或至少部分地驻留在主存储器804内、驻留在处理器802内(例如,在处理器的缓存存储器内)或者驻留在这两者内。指令也可驻留在静态存储器806中。

因此,主存储器804和处理器802可被认为是机器可读介质(例如,有形且非暂态的机器可读介质)。可经由网络接口设备820通过网络826来发送或接收指令824。例如,网络接口设备820可利用任何一种或多种传送协议(例如,超文本传送协议(hypertexttransferprotocol,HTTP))来传输指令824。机器800还可表示用于执行本文描述的任何功能的示例手段,包括图1、图2、图3、图4、图5、图6和/或图7中描述的过程。

在一些示例实施例中,机器800可以是便携式计算设备,例如智能电话或平板计算机,并且具有一个或多个额外的输入组件(例如,传感器或者计量器)(未示出)。这种输入组件的示例包括图像输入组件(例如,一个或多个相机)、音频输入组件(例如,麦克风)、方向输入组件(例如,罗盘)、位置输入组件(例如,全球定位系统(globalpositioningsystem,GPS)接收器)、取向组件(例如,陀螺仪)、运动检测组件(例如,一个或多个加速度计)、高度检测组件(例如,测高仪)以及气体检测组件(例如,气体传感器)。这些输入组件之中的任何一个或多个获得的输入可被本文描述的任何模块访问并可供其使用。

当在本文中使用时,术语“存储器”指的是能够临时或永久地存储数据的机器可读介质并且可被理解为包括——但不限于——随机访问存储器(random-accessmemory,RAM)、只读存储器(read-onlymemory,ROM)、缓冲存储器、闪存和缓存存储器。虽然机器可读介质822在示例实施例中被示为单个介质,但术语“机器可读介质”应当被理解为包括能够存储指令824的单个介质或多个介质(例如,集中式或分布式数据库,或者关联的缓存和服务器)。术语“机器可读介质”还应被理解为包括如下的任何介质或者多个介质的组合:其能够存储指令824来供机器800执行,使得指令824当被机器800的一个或多个处理器(例如,处理器802)执行时使得机器800全部或部分地执行本文描述的方法之中的任何一种或多种。因此,“机器可读介质”指的是单个存储装置或设备,以及包括多个存储装置或设备的基于云的存储系统或存储网络。术语“机器可读介质”因此应当被理解为包括——但不限于——采取固态存储器、光介质、磁介质或者其任何适当组合的形式的一个或多个有形(例如,非暂态)数据仓库。

在本说明书各处,多个实例可实现被描述为单个实例的组件、操作或结构。虽然一个或多个方法的个体操作被图示和描述为单独的操作,但这些个体操作之中的一个或多个可被并发地执行,并且不要求这些操作按图示的顺序来执行。在示例配置中作为分开的组件呈现的结构和功能可实现为组合的结构或组件。类似地,作为单个组件呈现的结构和功能可实现为分开的组件。这些和其他变化、修改、添加和改进落在本文的主题的范围内。

某些实施例在本文中被描述为包括逻辑或数个组件、模块或机构。模块可构成软件模块(例如,被存储或以其他方式实现在机器可读介质上或者传输介质中的代码)、硬件模块或者其任何适当组合。“硬件模块”是能够执行某些操作的有形(例如,非暂态)单元并且可按一定的物理方式来配置或布置。在各种示例实施例中,一个或多个计算机系统(例如,单机计算机系统、客户端计算机系统或者服务器计算机系统)或者计算机系统的一个或多个硬件模块(例如,处理器或者处理器群组)可被软件(例如,应用或应用部分)配置为进行操作来执行如本文所述的某些操作的硬件模块。

在一些实施例中,可以以机械方式、电子方式或者其任何适当组合的方式来实现硬件模块。例如,硬件模块可包括被永久地配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,例如现场可编程门阵列(fieldprogrammablegatearray,FPGA)或ASIC。硬件模块也可包括被软件临时配置为执行某些操作的可编程逻辑或电路。例如,硬件模块可包括包含在通用处理器或其他可编程处理器内的软件。将会明白,关于是以机械方式、还是用专用且永久配置的电路还是用临时配置的电路(例如,由软件配置)来实现硬件模块的决定可由成本和时间考虑来驱动。

因此,术语“硬件模块”应当被理解为涵盖有形实体,并且这种有形实体可被物理地构造、永久地配置(例如,硬连线)或者临时配置(例如,编程)来按某种方式操作或者执行本文描述的某些操作。当在本文中使用时,“由硬件实现的模块”指的是硬件模块。考虑硬件模块被临时配置(例如,编程)的示例,在任何一个时刻不需要配置或实例化每个模块。例如,在硬件模块包括通用处理器并且该通用处理器被软件配置来变成专用处理器的情况下,该通用处理器可以在不同时间分别被配置为不同的专用处理器(例如,包括不同的硬件模块)。软件(例如,软件模块)可相应地将一个或多个处理器配置为例如在一个时刻构成特定硬件模块并且在不同的时刻构成不同的硬件模块。

硬件模块可向其他硬件模块提供信息并且从其他硬件模块接收信息。因此,描述的硬件模块可被视为是通信耦合的。在多个硬件模块同时存在的情况下,可通过硬件模块之中的两个或更多个之间的信号传送(例如,经由适当的电路和总线)来实现通信。在在不同时间配置或实例化多个硬件模块的实施例中,这种硬件模块之间的通信可例如通过在这多个硬件模块能够访问的存储器结构中存储和取回信息来实现。例如,一个硬件模块可执行操作并且将该操作的输出存储在其通信耦合到的存储器设备中。另一硬件模块随后在以后某时可以访问该存储器设备以取回并处理存储的输出。硬件模块也可发起与输入或输出设备的通信,并且可对资源(例如,信息的集合)进行操作。

本文描述的示例方法的各种操作可至少部分地由被临时配置(例如,由软件)或永久配置来执行相关操作的一个或多个处理器执行。无论是临时还是永久地配置,这种处理器都可构成由处理器实现的模块,这些模块进行操作来执行本文描述的一个或多个操作或功能。当在本文中使用时,“由处理器实现的模块”指的是利用一个或多个处理器来实现的硬件模块。

类似地,本文描述的方法可至少部分由处理器实现,处理器是硬件的示例。例如,方法的操作之中的至少一些可由一个或多个处理器或者由处理器实现的模块来执行。当在本文中使用时,“由处理器实现的模块”指的是其中硬件包括一个或多个处理器的硬件模块。另外,一个或多个处理器也可进行操作来支持在“云计算”环境中或者作为“软件即服务”(softwareasaservice,SaaS)的相关操作的执行。例如,这些操作之中的至少一些可由一组计算机(作为包括处理器的机器的示例)来执行,其中可经由网络(例如,因特网)以及经由一个或多个适当的接口(例如,应用程序接口(applicationprograminterface,API))来访问这些操作。

某些操作的执行可分布在一个或多个处理器之间,不仅是驻留在单个机器内,而是部署在多个机器上。在一些示例实施例中,一个或多个处理器或由处理器实现的模块可位于单个地理位置中(例如,位于家庭环境、办公室环境或者服务器群内)。在其他示例实施例中,一个或多个处理器或由处理器实现的模块可分布在多个地理位置上。

本文论述的主题的一些部分可以按照对在机器存储器(例如,计算机存储器)内存储为比特或二元数字信号的数据的操作的算法或符号表示来给出。这种算法或符号表示是数据处理领域的普通技术人员用来将其工作的实质传达给该领域的其他技术人员的技术的示例。当在本文中使用时,“算法”是带来期望结果的操作或类似处理的自洽序列。在此上下文中,算法和操作涉及对物理量的物理操纵。通常,但并非一定,这种量可采取能够被存储、访问、传送、组合、比较或者被机器以其他方式操纵的电信号、磁信号或光信号的形式。有时,主要是出于习惯用法的原因,利用诸如“数据”、“内容”、“比特”、“值”、“元素”、“符号”、“字符”、“术语”、“数字”、“数值”等等之类的词语来称呼这种信号是方便的。然而,这些词语只是方便的标签,并且要与适当的物理量相关联。

除非另有具体声明,否则本文使用诸如“处理”、“计算”、“确定”、“呈现”、“显示”等等之类的词语的论述可以指操纵或变换数据的机器(例如,计算机)的动作或过程,所述数据在一个或多个存储器(例如,易失性存储器、非易失性存储器或者其任何适当组合)、寄存器或者接收、存储、发送或显示信息的其他机器组件内被表示为物理(例如,电、磁或光)量。另外,除非另有具体声明,否则“一”这个词在本文中就像专利文献中常见的那样用来包括一个或多于一个实例。最后,当在本文中使用时,连词“或”指的是非排他性的“或”,除非另有具体声明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号