实时事务一致的变更通知的制作方法

文档序号:30622519发布日期:2022-07-02 04:11阅读:82来源:国知局
实时事务一致的变更通知的制作方法
实时事务一致的变更通知
1.分案说明
2.本技术属于申请日为2017年4月27日的中国发明专利申请201780011478.6的分案申请。
技术领域
3.本公开涉及在分布式系统内向一个或多个监视器提供针对监视器订阅的数据的一致变更通知。


背景技术:

4.分布式存储系统覆盖一个或多个存储器位置地将数据存储在存储器硬件上的数据存储内。监视器可以发出常备查询以订阅存储在分布式系统上的各条特定数据并且在订阅数据经历突变时的任何时候接收变更通知。例如,写入器可以执行写入事务以修改/突变存储在分布式系统上的各条特定数据并且在数据被修改时订阅数据的监视器得到通知。然而,当同时地发生多个变更/写入时,对分布式系统的需求增加,导致分布式系统过度运行而无法实时地流式传输变更通知。已知在高需求的时段期间完全放弃订阅以减轻分布式系统上的负载。由于这个原因,一些系统被设计得不保证按顺序递送并且通常排序被留给客户端。然而,这导致订阅监视器接收到分布式数据的不一致快照。此外,已知使用变更日志来将每个事务记录到存储在分布式系统上的数据。这些变更日志记录对数据存储做出的每一变更,并且当在数据存储上发生读取事务时,变更日志充当用于给定快照的所有数据的开/关检查点。


技术实现要素:

5.在分布式系统上采用持久变更日志一般地要求每隔一段时间将变更日志截断到单个机器上,从而在事务等待执行时导致瓶颈效应。因此,持久变更日志由于其在对分布式系统的高需求的时段期间的固有可扩展性限制而否定由分布式系统提供的分布式功能性。本公开的一个方面提供用于创建事务一致的变更通知的方法。所述方法包括:由数据处理硬件执行用于分布式系统的变更日志进程的初始实例;在数据处理硬件处接收用于在分布式系统上执行对应事务的事务请求;以及由数据处理硬件基于所接收到的事务请求确定变更日志负载。变更日志进程的每个实例被配置成在与数据处理硬件通信的存储器硬件上存储在分布式系统上执行的事务的事务历史。当变更日志负载满足阈值负载时,所述方法包括由数据处理硬件执行变更日志进程的至少一个后续实例。所述方法还包括由数据处理硬件确定变更日志进程的多个实例是否正在执行。当变更日志进程的多个实例正在执行时,所述方法包括由数据处理硬件停止变更日志进程的至少一个后续实例的执行并且由数据处理硬件合并变更日志进程的初始实例的事务历史和变更日志进程的至少一个后续实例的事务历史。
6.本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,
所述方法包括将每个事务历史存储在存储器硬件的变更日志缓存中。存储每个事务历史可以包括:由数据处理硬件将事务历史切分成数据条带;复制每个数据条带;将数据条带和已复制的数据条带存储在存储器硬件的多个存储位置处。当在执行变更日志进程的至少一个后续实例之后变更日志负载不满足阈值负载时,所述方法可以包括由数据处理硬件停止变更日志进程的至少一个后续实例的执行,以及由数据处理硬件合并变更日志进程的初始实例的事务历史和变更日志进程的至少一个后续实例的事务历史。
7.响应于接收到每个事务请求,所述方法可以包括:由数据处理硬件获得真实时间;由数据处理硬件基于真实时间确定最大提交时间;以及将最大提交时间从数据处理硬件传递到存储器硬件的至少一个变更日志缓存。最大提交时间可以指定用于完成对应事务在分布式系统上的执行的最大时间。
8.在一些示例中,至少一个变更日志缓存设置从真实时间起直到最大提交时间为止的通知锁。通知锁可以防止所对应的变更日志缓存为具有早于最大提交时间的对应提交时间的完成的事务而通知一个或多个订阅监视器。至少一个变更日志缓存可以在最大提交时间结束时移除通知锁。所移除的通知锁可以允许所对应的日志缓存为具有早于最大提交时间的对应提交时间的每个完成的事务而通知一个或多个订阅监视器。在传递最大提交时间之后,所述方法可以包括由数据处理硬件提交对应事务在分布式系统上的执行。这里,事务包括最大提交时间。此后,所述方法也可以包括:由数据处理硬件获得指示当对应事务包括在最大提交时间或之前的相应的提交时间时对应事务在分布式系统上的执行被接受的事务结果;以及将事务结果从数据处理硬件传递到至少一个变更日志缓存。
9.在一些示例中,所接收到的事务结果使至少一个变更日志缓存记录与对应事务相关联的至少一个突变。至少一个变更日志缓存可以将所记录的突变传递到在数据处理硬件上执行的一个或多个监视器代理。每个监视器代理可以被配置成向对应事务的相应的订阅监视器提供通知。通知可以包括所记录的突变并且可选地包括事务历史的一致快照。这里,通知中的一致快照包括对应事务以及具有早于对应事务的提交时间的对应提交时间的任何完成的事务。
10.在一些实施方式中,在传递最大提交时间之后,所述方法包括由数据处理硬件提交对应事务在分布式系统上的执行。这里,事务包括最大提交时间。此后,所述方法可以包括:由数据处理硬件获得指示当对应事务未能在最大提交时间或之前提交时对应事务在分布式系统上的执行被拒绝的事务结果;以及将事务结果从数据处理硬件传递到至少一个变更日志缓存。在一些示例中,所接收到的事务结果使至少一个变更日志缓存在当事务进程将最大提交时间传递到至少一个变更日志缓存时的真实时间与最大提交时间之间在事务历史中创建间隙。
11.在一些示例中,至少一个变更日志缓存将事务历史中的间隙传递到在数据处理硬件上执行的一个或多个监视器代理。每个监视器代理可以被配置成在最大提交时间结束时向对应事务的相应的订阅监视器提供通知,通知包括在事务历史中的间隙期间的缓存未命中(miss)。
12.所述方法也可以包括由数据处理硬件确定在离线事件之后重新启动变更日志进程,以及于在数据处理硬件上执行的变更日志进程处获得真实时间。所述方法也可以包括:由数据处理硬件在变更日志进程重新启动时基于真实时间确定当前序号;以及由数据处理
硬件在更新在分布式系统上执行的任何事务的事务历史之前从当前序号起等待全局最大提交时间延迟。在变更日志进程的重新启动之前在分布式系统上执行的事务可以在全局最大提交时间延迟内完成。所述方法也可以包括将经合并的事务历史发送到一个或多个订阅监视器。每个订阅监视器可以针对存储在存储器硬件上的数据的变更具有常备查询。
13.本公开的另一方面提供用于创建事务一致的变更通知的系统。所述系统包括分布式系统的数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储指令,所述指令当在数据处理硬件上执行时使数据处理硬件执行操作。操作包括:执行用于分布式系统的变更日志进程的初始实例;接收用于在分布式系统上执行对应事务的事务请求;以及基于所接收到的事务请求确定变更日志负载。变更日志进程的每个实例被配置成在存储器硬件上存储在分布式系统上执行的事务的事务历史。当变更日志负载满足阈值负载时,系统包括执行变更日志进程的至少一个后续实例并且确定变更日志进程的多个实例是否正在执行。当变更日志进程的多个实例正在执行时,系统包括停止变更日志进程的至少一个后续实例的执行并且合并变更日志进程的初始实例的事务历史和变更日志进程的至少一个后续实例的事务历史。
14.这个方面可以包括以下可选特征中的一个或多个。在一些实施方式中,操作还包括将每个事务历史存储在存储器硬件的变更日志缓存中。存储每个事务历史可以包括:将事务历史切分成数据条带;复制每个数据条带;以及将数据条带和已复制的数据条带存储在存储器硬件的多个存储位置处。操作还可以包括:当在执行变更日志进程的至少一个后续实例之后变更日志负载不满足阈值负载时,停止变更日志进程的至少一个后续实例的执行;以及合并变更日志进程的初始实例的事务历史和变更日志进程的至少一个后续实例的事务历史。响应于接收到每个事务请求,操作可以包括:获得真实时间;基于真实时间确定最大提交时间;以及将最大提交时间传递到存储器硬件的至少一个变更日志缓存。最大提交时间可以指定用于完成对应事务在分布式系统上的执行的最大时间。
15.至少一个变更日志缓存可以设置从真实时间起直到最大提交时间为止的通知锁。通知锁可以防止所对应的变更日志缓存为具有早于最大提交时间的对应提交时间的完成的事务而通知一个或多个订阅监视器。至少一个变更日志缓存可以在最大提交时间结束时移除通知锁。所移除的通知锁可以允许所对应的变更日志缓存为具有早于最大提交时间的对应提交时间的每个完成的事务而通知一个或多个订阅监视器。
16.在一些示例中,操作包括在传递最大提交时间之后,提交对应事务在分布式系统上的执行。事务包括对应提交时间。此后,操作包括:获得指示当对应事务包括在最大提交时间或之前的相应的提交时间时对应事务在分布式系统上的执行被接受的事务结果;以及将事务结果传递到至少一个变更日志缓存。所接收到的事务结果可以使至少一个变更日志缓存记录与对应事务相关联的至少一个突变。至少一个变更日志缓存可以将所记录的突变传递到在数据处理硬件上执行的一个或多个监视器代理。每个监视器代理可以被配置成向对应事务的相应的订阅监视器提供通知,通知包括所记录的突变。通知还可以包括事务历史的一致快照。一致快照可以包括对应事务以及具有早于对应事务的提交时间的对应提交时间的任何完成的事务。
17.在一些实施方式中,操作包括在传递最大提交时间之后,提交对应事务在分布式系统上的执行。这里,事务包括最大提交时间。此后,操作也可以包括:获得指示当对应事务
未能在最大提交时间或之前提交时对应事务在分布式系统上的执行被拒绝的事务结果;以及将事务结果传递到至少一个变更日志缓存。所接收到的事务结果可以使至少一个变更日志缓存在当事务进程将最大提交时间传递到至少一个变更日志缓存时的真实时间与最大提交时间之间在事务历史中创建间隙。至少一个变更日志缓存可以将事务历史中的间隙传递到在数据处理硬件上执行的一个或多个监视器代理。每个监视器代理可以被配置成在最大提交时间结束时向对应事务的相应的订阅监视器提供通知,通知包括在事务历史中的间隙期间的缓存未命中。
18.在一些示例中,操作还包括:确定在离线事件之后重新启动变更日志进程;获得真实时间;在变更日志进程重新启动时基于真实时间确定当前序号;以及在更新在分布式系统上执行的任何事务的事务历史记录之前从当前序号起等待全局最大提交时间延迟。在变更日志进程的重新启动之前在分布式系统上执行的事务可以在全局最大提交时间延迟内完成。操作还可以包括将经合并的事务历史发送到一个或多个订阅监视器,每个订阅监视器针对存储在存储器硬件上的数据的变更具有常备查询。
19.在下面的附图和描述中阐述了本公开的一个或多个实施方式的细节。其它方面、特征和优点根据说明书和附图并且根据权利要求书将是显而易见的。
附图说明
20.图1是用于向用户装置提供对分布式系统的非暂时性数据储存器的访问的示例系统的示意图。
21.图2是用于向一个或多个用户装置提供对分布式存储系统的非暂时性数据存储的访问的示例系统的示意图。
22.图3是用于为常备查询提供近实时通知的通知系统的示例组件的示意图。
23.图4a和图4b示出通过图3的通知系统的后端和至少一个变更日志缓存执行的示例操作的示意图。
24.图5是示例变更日志进程的示意图。
25.图6示出通过在分布式系统上执行的变更日志进程设置的提交时间窗口的线图。
26.图7是与存储器硬件通信的示例计算装置的示意图。
27.在各个附图中相似的附图标记指示相似的元件。
具体实施方式
28.具有存储器中变更日志或变更日志缓存的分布式系统存储在该分布式系统上执行的事务的事务历史以更快地处置监视订阅,并且从而在事务执行时提供近“实时”更新。因此,由于单个变更日志缓存存储跨越分布式系统的许多(例如,一千个)机器上执行的事务的事务历史,存储器上的缓存提供增加的可扩展性。一般地,分布式系统上的给定数据存储能够每秒处理比变更日志缓存每秒可以执行的任务的数目更多数目的事务即。为了减轻变更日志缓存在扇入点处处理向数据存储发出的所有事务请求的吞吐量的减少,实施方式包括当需求高时将变更日志缓存动态地分割成在不同的计算资源上执行的多个变更日志缓存(例如,变更日志进程的多个实例)。此后,可以将多个变更日志缓存及其关联的事务历史机会性地合并在一起以在扇出点处针对一个或多个订阅监视器维持事务历史的保证或
一致性。
29.参考图1和图2,在一些实施方式中,系统100包括与用户102相关联的一个或多个用户装置120a-n。用户装置120经由网络132与具有可扩展的/弹性的非暂时性数据存储150的分布式存储系统200通信。在一些实施方式中,分布式存储系统200执行管理对数据存储150的访问的计算装置112。用户装置120在计算装置112执行写入事务204时将数据202写入到数据存储150中,而在计算装置112执行读取事务214时监视或者读取来自数据存储150的数据202。在一些示例中,当计算装置112经由网络132从用户装置120接收到写入访问请求128时,计算装置112执行写入事务204。同样地,当计算装置112经由网络132从用户装置120接收到读取访问请求130时,计算装置112执行读取事务214。在一些示例中,读取访问请求130对应于通过分布式系统200曾经发出的常备查询,其允许用户装置120一致地监视或者读取来自数据存储150的数据202,而不必重复地发出新的读取访问请求130。
30.在一些实施方式中,分布式存储系统200执行变更日志进程500以用于将在分布式系统200上执行的事务204的事务历史312(图3)存储在非持久变更日志缓存(clc)310中。在一些场景中,分布式存储系统200在高需求的时段期间(诸如在当分布式系统200接收的写入访问请求128的数目增加时的时段期间)执行变更日志进程500的多个实例,从而使分布式系统200上的变更日志负载也增加。在一些实施方式中,在分布式系统200上执行的后端304可以在非持久状态下在多个非持久clc 310之中从对应事务204扇入或者分发突变数据202的多个分片,然后在分布式系统200上执行的分片管理器318可以扇出或者合并来自多个clc 310的突变数据202的分片以向对这些对应事务感兴趣的一个或多个用户装置120提供数据存储150的一致快照。
31.用户装置120可以是能够通过网络132与计算装置112进行通信的任何计算装置。用户装置120包括但不限于台式计算装置和移动计算装置,诸如膝上型电脑、平板、智能电话和可穿戴计算装置(例如,头戴式耳机和/或手表)。用户装置120还可以在显示器122上执行图形用户界面(gui)222以将数据202写入到数据存储150并且/或者从分布式存储系统200的数据存储150读取数据202。用户装置120可以既包括发送写入访问请求128以更新/变更/突变存储在数据存储150中的数据202的写入器320(图3),并且也包括发送读取访问请求130(例如,常备查询)以在发生数据202的变更或突变的任何时候得到数据202的读取器322(图3)。
32.网络132可以包括各种类型的网络,诸如局域网(lan)、广域网(wan)和/或因特网。尽管网络132可以表示长距离网络(例如,因特网或wan),然而在一些实施方式中,网络132包括较短距离网络,诸如局域网(lan)。在一些实施方式中,网络132使用标准通信技术和/或协议。因此,网络132可包括使用诸如以太网、无线保真(wifi)(例如,802.11)、全球微波接入互操作性(wimax)、3g、长期演进(lte)、数字订户线路(dsl)、异步传送模式(atm)、infiniband、pci express高级交换、蓝牙、低功耗蓝牙(ble)等的技术的链路。类似地,在网络132上使用的联网协议可包括多协议标签交换(mpls)、传输控制协议/网际协议(tcp/ip)、用户数据报协议(udp)、超文本传输协议(http)、简单邮件传送协议(smtp)、文件传送协议(ftp)等。通过网络交换的数据132可使用包括超文本标记语言(html)、可扩展标记语言(xml)等的技术和/或格式来表示。此外,可使用常规加密技术来对这些链路中的全部或一些进行加密,所述常规加密技术诸如安全套接字层(ssl)、传输层安全(tls)、虚拟专用网
(vpn)、网际协议安全(ipsec)等。在其它示例中,代替或者除了上述的数据通信技术之外,网络132还使用定制和/或专用数据通信技术。
33.参考图2,在一些实施方式中,分布式存储系统200包括松散耦合的存储器主机110、110a-n(例如,计算机或服务器),每个存储器主机具有与可以被用于缓存数据的存储资源114(例如,内存硬件、存储器硬件、闪速存储器、动态随机存取存储器(dram)、相变存储器(pcm)和/或磁盘)通信的计算资源112(例如,一个或多个处理器或中央处理单元(cpu))。重叠在存储资源114上的数据存储150(例如,存储抽象)允许由一个或多个用户装置120、120a-n对存储资源114的可扩展使用。用户装置120可以通过网络132(例如,经由远程过程调用(rpc))与存储器主机110进行通信。
34.在一些实施方式中,分布式存储系统200是“单侧的”,从而消除对用于在其对应存储器主机110上对来自用户装置120的在执行写入事务204时写入数据202或者在执行读取事务214时读取数据202的rpc做出响应的任何服务器作业的需要,并且替代地,可以依靠专用硬件来分别地处理远程写入访问请求128和读取访问请求130。“单侧的”指代可以用来在硬件中而不是通过在存储器主机110的cpu 112上执行的软件来完成存储器主机110上的大多数请求处理的方法。不是使存储器主机110(例如,服务器)的处理器112执行将对对应存储资源114(例如,非暂时性存储器)的访问导出到在用户装置120上执行的用户进程126的服务器进程118,而是用户装置120可以通过存储器主机110的网络接口控制器(nic)116直接地访问存储资源114。可在美国专利9,164,702中找到与单侧分布式缓存系统有关的附加构思和特征,该专利特此通过引用整体地并入。
35.分布式存储系统200可以将数据202放置在远程存储器主机110(例如,数据存储150)的存储器硬件114中并且经由rpc或者经由支持远程直接存储器存取(rdma)的网络接口控制器116从远程存储器主机110得到数据202。网络接口控制器116(也被称为网络接口卡、网络适配器或lan适配器)可以是将计算装置/资源112连接到网络132的计算机硬件组件。存储器主机110a-n和用户装置120可以各自具有用于网络通信的网络接口控制器116。在存储器主机110的计算处理器112上执行的主机进程118可以在执行写入事务204以写入更新的数据202时分配存储器位置250a-n。
36.在一些实施方式中,一个或多个用户装置120(例如,监视器322)通过分布式系统200发出与常备查询相关联的读取访问请求130一次以订阅一条特定数据202。常备查询(例如,读取访问请求130)允许对应用户装置120(例如,订阅监视器322)一致地监视或者读取来自数据存储150的数据202,而不必重复地发出新的读取访问请求130。因此,在分布式系统200接收到在分布式系统200上执行写入事务204以便修改数据存储150中的数据202的写入访问请求138的任何时候,分布式系统200将修改/突变数据202流式传输到订阅数据202的一个或多个监视器322。
37.在一些实施方式中,分布式系统200实时地将更新的数据202流式传输到一个或多个订阅监视器322并且可基于分布式系统200当前正在给定时间点接收的许多事务请求138和140扩展。例如,分布式系统200可以提供在当分布式系统200在高负载下(即,分布式系统200正在接收大量写入请求138)时使对数据存储150中的数据202的多个突变崩溃的给定时刻的一致快照(例如,事务历史312)。这种可扩展性允许分布式系统200尽可能接近实时地将更新的数据202流式传输到订阅监视器322,而不必由于分布式系统200的过载而放弃将
数据202流式传输到监视器322。因此,当写入事务204的执行成功地完成时,通过监视器322的读取事务214反映数据存储150的当前一致状态,使得监视器322接收到通过写入事务204修改的数据202的最近副本。监视器322接收可能无法反映自最后快照以来发生的每一变更的数据在给定时刻的单个一致快照。
38.图3是用于向订阅存储在数据存储150中的数据202的一个或多个监视器322发送通知350的通知系统300的组件的示例实施方式的框图。如本文中所使用的,监视器322可以通过发出常备查询(例如,读取访问请求130)来订阅指定数据202,使得对数据存储150中的指定数据202的变更作为通知350近实时地流式传输到监视器322。通知系统300包括经由网络132与关联于一个或多个远程写入器320、320a-n和一个或多个远程监视器322、322a-n的远程用户装置120通信的分布式系统200。分布式系统200包括在计算装置112上执行的数据存储后端304和分片管理器318以及存储器硬件114的数据存储150。
39.在一些实施方式中,计算装置112执行用于变更日志进程500的指令,所述变更日志进程500提供在存储器114内用于在非持久状态下存储在分布式系统200上执行的事务204的事务历史312的部分的非持久变更日志缓存(clc)310。通过与使用记录对数据存储150内的数据202进行的每一变更的持久变更日志对比,clc 310可在存储器114内切分以允许计算装置112通过执行变更日志进程的附加实例来按比例增加或减少clc 310以提供两个或更多个clc 310a-n。以这种方式,变更日志进程500也可以根据在给定时间在分布式系统200上的当前负载来停止一个或多个实例的执行。在没有由非持久clc 310提供的可扩展性的情况下,更高数目的写入请求128将导致瓶颈效应,同时每个写入事务204等待在数据存储150内的对应位置处执行。一般地,单个数据存储150被指派了用于记录对该数据存储150的变更的相应的clc 310。然而,可以将多个数据存储150指派给同一clc 310。例如,通知系统300能包括一百万个数据存储150和一百个clc 310,使得每个clc 310将记录一千个数据存储150的变更。在一些示例中,当添加附加数据存储150以处置分布式系统200上的负载增加时有必要按比例增加更多的clc 310。
40.在一些示例中,计算装置112(例如,数据处理硬件)执行一个或多个监视器代理314、314a-n,每个代理包括用于监视监视器322的单独订阅的有状态机器。例如,每个监视器322具有与相应的监视器代理314的一对一连接。因此,每个监视器代理314在相应的监视器322与一个或多个clc 310之间多路传输,这向对应监视器代理314提供突变或缓存未命中。在当发生缓存未命中时的场景中,监视器代理314可以查询352后端700以从数据存储202中检索/得到数据202。
41.在一些实施方式中,每当新的写入事务204提交以更新数据存储150内的数据202时,后端304执行用于更新存储在clc 310中的事务历史312的事务处理。事务进程可以在扇入阶段301期间采用clc 310来维护有序变更日志(例如,事务历史312)的缓存。在一些示例中,事务进程将由clc 310维护的有序变更日志的缓存切分成成数据202的条带,复制数据202的每个条带,并且将数据条带和已复制的数据条带存储在存储器硬件114上的多个存储位置250处。当后端310从远程写入器320接收到写入访问请求128时,后端304可以从真实时间时钟316获得真实时间(tt)并且基于该tt确定最大提交时间td
max
。td
max
指定用于提交对应写入事务204在分布式系统200上的执行的最大时间。例如,td
max
强制分布式系统200提交对应事务204的上限时限,由此如果分布式系统200到td
max
时不能提交事务204则分布式系
统200中止对应事务204。
42.在一些示例中,在扇入阶段301期间,后端304在执行写入事务204(例如,提交写入)以修改/突变/变更数据存储150内的数据202之前向clc 310发送准备锁消息330。准备锁消息330包括用于对应未决事务204的td
max
并且使clc 310在提交时间窗口610(图6)期间设置通知锁。这里,提交时间窗口610对应于从当clc 310接收到准备锁消息330时的tt起到td
max
的时间的窗口。通知锁防止clc 310在提交时间窗口610期间为具有早于td
max
且晚于未决事务的开始的对应提交时间的任何完成的事务204而通知一个或多个监视器322。如本文中所使用的,术语“提交时间”指代当对应写入事务204的执行完成时的时间。在将准备锁消息330发送到clc 310之后,后端304提交写入事务204的执行以更新数据存储150内的数据202。
43.在一些实施方式中,后端304在对应事务204提交之后获得事务结果332并且将该事务结果332提供给clc 310。在一些示例中,事务结果332指示当对应事务204包括在td
max
或之前的提交时间时对应事务204的执行被接受。在这些示例中,事务结果332也可以包括由对应事务204产生的数据202的至少一个突变。在其它示例中,事务结果332指示当对应事务204失败或者数据存储150否则到td
max
时不能完成/提交对应事务时对应事务204的执行被拒绝。因此,如本文中所使用的,指示事务204被“拒绝”的事务结果332可以指代在td
max
之前已正式地中止并且因此结果已知的事务204,或者可以指代因为事务204到td
max
时确实未提交所以事务204是否完成的结果未知的事务204。
44.后端304可以在提交写入事务204之后向clc 310提供释放锁消息334。释放锁消息334包括对应事务204的事务结果332并且使clc 310释放/移除通知锁。例如,clc 310可以在接收到释放锁消息334时立即移除通知锁。在当事务结果332指示对应事务被接受时的实施方式中,释放锁消息334使clc 310记录与对应事务204相关联的数据202的至少一个突变。相反地,释放锁消息334使clc 310在对应事务204的提交时间窗口610期间在事务历史312中创建间隙。由clc 310创建的间隙指示事务204在该间隙期间未决但是事务204是否完全提交的结果未知。
45.在一些实施方式中,一个或多个监视器代理314在事务进程的扇出阶段302期间执行以从clc 310接收事务历史312。事务历史312包括在分布式系统200上执行的具有早于用于对应事务204的最旧准备锁消息的对应提交时间的任何事务204。在一些示例中,当对应事务204通过将数据202的突变记录在事务历史312中并且将事务历史312提供给监视器代理314而被接受时,clc 310传递数据202的至少一个突变。在这些示例中,每个监视器代理314将数据202的突变包括在通知350中并且将通知350提供给相应的订阅监视器322。在其它示例中,当对应事务204被拒绝时,clc 310向监视器代理314提供具有间隙的事务历史312,从而使每个监视器代理314在通知350中推送缓存未命中并且将通知350提供给相应的订阅监视器322。这里,缓存未命中反映在事务历史312中的间隙期间未决的事务204的未知结果。在一些示例中,监视器代理314查询352后端304以在事务历史312中的间隙期间获得数据存储150的快照以确定未决事务204的结果并且将该结果提供给相应的订阅监视器322。相反地,当对应事务204由于在td
max
之前正式地中止而被拒绝时,则从事务历史312中简单地省略对应事务204。此外,当新的监视器322连接到分布式系统200时,对应监视器代理314可以整合数据存储150中影响与监视器322相关联的常备查询130的所有变更,使得监
视器322接收数据存储150的一致快照。
46.在当单个clc 310在提交给数据存储150的事务204的数目增加时没有足够的吞吐量来记录所有突变的情形下,可以将数据204的突变在多个clc 310之中分割成分片。在一些实施方式中,分片管理器318合并来自多个clc 310的事务历史312,所述多个clc 310各自包括突变数据204的一个或多个相应的分片以满足来自一个或多个监视器322的给定常备查询(例如,读取访问请求130)。
47.图4a和图4b提供图示通过分布式系统200的后端304和至少一个变更日志缓存310执行的示例操作的图400a、400b。可以参考图3的通知系统300来描述图400a、400b。垂直y轴指示自顶向下增加的时间。在时间1处,后端304从远程写入器320接收事务请求(例如,写入访问请求128)。远程写入器320可以发送用于执行写入事务204以使存储在存储器硬件114上的数据存储150中的数据202突变的事务请求138。在时间2处,后端304将对应事务204指派为未决。这里,后端304从真实时间时钟316获得tt并且确定用于对应事务204的td
max
。后端304可以创建包括td
max
的准备锁消息330。
48.在时间3处,后端304将准备锁消息330发送到clc 310,并且在时间4处,clc 310响应于接收到准备锁消息330而从真实时间时钟316中检索tt。在时间5处,clc 310在准备锁消息330被调用时(例如,在时间3处)的tt与用于对应事务204的td
max
之间的提交时间窗口610期间设置通知锁。通知锁防止clc 310为具有落入提交时间窗口610内的对应时间的任何完成的事务204而通知一个或多个监视器322。随后,在时间6处,后端304提交对应事务204的执行以变更(例如,突变)数据存储150内的数据202。
49.在时间7处,数据存储150向后端304返回提交时间并且后端304基于所返回的提交时间获得事务结果332。图4a示出在td
max
或之前发生的时间7处返回的提交时间以提供指示对应事务204被接受的事务结果332。在此场景中,在时间8处,后端304通知写入器320事务204被接受,并且在时间9处,将由对应事务204产生的数据202的至少一个突变提供给clc 310。在时间10处,clc释放/移除通知锁并且记录数据202的至少一个突变。通过在时间8处通知写入器320事务204被接受,在写入器320能将事务204的结果视为订阅监视器322之前就通知写入器320成功的写入事务204。然而,在其它场景中,当clc在时间10处记录数据202的至少一个突变时,后端304可以在时间10处通知写入器320事务被接受。在这些场景中,保证数据202的至少一个突变在写入器320的调用被返回之前被记录。
50.另一方面,图4b示出对应事务204由于对应事务204到td
max
时未能完成/提交或者事务204在td
max
之前正式地中止而被拒绝的场景。例如,在时间7处,数据存储150可以向后端304返回指示事务204由于到td
max
时未能提交而被拒绝或者指示事务204由于在td
max
之前正式地中止而被拒绝的事务结果332。在时间8处,后端304通知远程写入器320事务204被拒绝,并且在时间9处,后端304向clc 314发送释放锁消息334。这里,释放锁消息334包括指示对应事务204已被拒绝的事务结果332并且通知clc 310释放通知锁。在时间10处,clc 310释放在提交时间窗口610期间先前设置的通知锁并且创建与被拒绝的对应事务204相关联的间隙。更具体地,clc 310可以在提交时间窗口610期间(即,在当准备锁消息330被调用时(例如,在时间3处)的tt与用于对应事务204的td
max
之间)在事务历史312中创建间隙。因此,由clc 310创建的间隙指示事务204在该间隙期间未决但是事务204是否完成的结果未知。
51.图5提供在分布式系统200上执行以基于分布式系统200上的当前变更日志负载
(例如,需求)提供可扩展性的示例变更日志进程500。可参考图3的通知系统300来描述变更日志进程500。数据处理硬件(例如,计算装置112)执行变更日志进程500的初始实例以提供被配置成在与数据处理硬件通信的存储器硬件114上存储在分布式系统200上执行的事务(例如,写入事务204)的事务历史312的初始非持久clc 310a。因此,每个clc 310(例如,变更日志进程500的每个实例)负责维护有序变更日志的缓存。
52.在扇入阶段301期间,后端304响应于从远程写入器320接收到用于执行对应事务204的事务请求128(例如,写入访问请求)而向clc 310a发送准备锁消息330。这里,clc 310a通过记录被保证到td
max
时提交的但尚未在事务历史312中提交的对应事务204的条目(例如,变更日志)来处理每个准备锁消息330。当后端304接收到多个事务请求128时,clc 310a上的变更日志负载由于clc 310a必须处理多个准备锁消息330而增加。在一些示例中,数据存储150能够每秒处理比每个clc 310能够在经历吞吐量损失之前并发地处理的准备锁消息330的数目更多的提交。例如,clc 310a可以能够在缓存性能降级之前每秒处理10,000个传入准备锁消息330,同时数据存储150能够每秒处理300,000个提交。因此,当变更日志负载满足(例如,超过)阈值负载时,clc 310a可能缺乏处置传入准备日志消息330的处理的吞吐量。结果,进入准备锁消息330可能在等待相应的clc 310处的处理时发生瓶颈。这里,阈值负载对应于clc 310a能够在未经历缓存性能降级的情况下处理的每秒准备锁消息330的最大数目。数据处理硬件可以基于在给定时间接收到的事务请求(例如,写入访问请求128)的数目确定变更日志负载。
53.在操作502处,当对应事务204成功地执行时后端304从包括突变数据202的数据存储150获得事务结果332。如上面所阐述的,当变更日志负载满足阈值负载时clc 310a可能无法记录在数据存储150处发生的所有变更。为了在变更日志负载满足阈值负载时为存储器硬件114中的事务历史312的缓存提供可扩展性,数据处理硬件在操作504处将来自事务结果332的突变数据202分割成多个分片202a-d并且执行变更日志进程500的至少一个后续实例,其提供至少一个后续非持久clc 310b-d以用于存储突变数据202的分片202a-d。与初始clc 310a一样,每个后续clc 310a-d被配置成存储在分布式系统200上执行的事务的对应事务历史312。例如,图5示出在操作504处执行变更日志进程500的三个后续实例以提供多个clc 310a、310b、310c、310d的数据处理硬件。该数据处理硬件可以实现“分片器”组件以监视变更日志负载并且由于过载而决定将突变数据202分割成多个分片202a-d。
54.在扇出阶段302期间,每个clc 310a-d(例如,在分布式系统200上执行的变更日志进程500的每个实例)可以向在分布式系统200上执行的分片管理器318提供对应事务历史312a、312b、312c、312d。这里,每个事务历史312a-d指示被接受的对应事务204的突变数据202的一个或多个分片202a-d。
55.在操作506处,当变更日志进程的多个实例(例如,多个clc 310a-d)正在执行时,分片管理器318停止变更日志进程500的至少一个后续实例的执行并且合并包括在变更日志进程500的初始实例(例如,clc 310a)的事务历史312和变更日志进程500的至少一个后续实例(例如,clc 310b-d)的事务历史312中的突变数据202的分片202a-d。如上面所阐述的,数据处理硬件可以实现“分片器”组件以由于变更日志负载的欠载而决定合并突变数据202的分片202a-d。例如,图5示出来自多个clc 310a-d的扇出到分片管理器318中的事务历史312a-d,所述分片管理器318合并来自多个clc 310a-d的事务历史312的数据分片202a-d
以给订阅监视器322提供在给定时刻的事务历史312的一致快照。这里,事务历史312的一致快照可以提供被接受的对应事务204的一批或多批突变数据202和/或被拒绝的对应事务204的事务历史312中的一批或多批间隙。在操作508处,一个或多个监视器代理314向每个订阅监视器322发送包括在给定时刻的事务历史312的一致快照的通知350。在事务历史中的间隙的情况下,监视器代理314向对应远程监视器322提供缓存未命中。监视器代理314可以确定在扇出阶段302期间变更日志进程500的多个实例是否正在执行。
56.在一些实施方式中,一个或多个监视器代理314与包括在给定时刻的事务历史312的一致快照中的每一批突变数据202一起向监视器322提供恢复令牌。恢复令牌在所有任务之中是全局有效的并且长期存活,使得将来可以使用恢复令牌。恢复令牌可以包含表示发送到客户端的变更的当前状态的范围和相关时间戳。因此,恢复令牌的使用可以提供用于监视器322暂时地从分布式系统断开,并且在重新连接时,即使分布式系统200已丢失暂时地断开的监视器322的所有状态也高效地从监视器代理314接收通知350的能力。
57.图6示出由分布式系统200上的数据处理硬件(例如,计算装置112)执行以用于每当新的写入事务204提交以更新数据存储150内的数据202时更新存储在至少一个clc 310中的事务历史312的变更日志进程500的线图600。水平x轴示出分布式系统200的真实时间,其中真实时间的全局序号从左向右增加。虚垂直线601-607指示真实时间期间的相应的全局序号。
58.第一提交时间窗口610a由对应clc 310设置在虚垂直线601和603之间以用于在分布式系统200上执行对应第一事务204a。这里,第一提交时间窗口610a与第一最大提交时间tc
max_1
相关联,所述tc
max_1
保证第一事务204a将不在tc
max_1
之后提交。图6示出当真实时间等于虚垂直线603处的13时tc
max_1
界定第一提交窗口610a并且当真实时间等于虚垂直线601处的4时数据处理硬件提交第一事务204a。
59.类似地,第二提交时间窗口610b由对应clc 310设置在虚垂直线602和604之间以用于在分布式系统200上执行对应第二事务204b。这里,第二提交时间窗口610b与第二最大提交时间tc
max_2
相关联,所述tc
max_2
保证第二事务204b将不在tc
max_2
之后提交。图6示出当真实时间等于虚垂直线604处的21时tc
max_2
界定第二提交时间窗口610b并且当真实时间等于虚垂直线602处的12时数据处理硬件提交第二事务204b。与第一提交时间窗口610a和第二提交时间窗口610b相关联的clc 310可以是相同的或不同的。
60.第一事务204a的执行按早于第一tc
max_1
的提交时间完成。例如,图6示出用于第一事务204a的提交时间等于9同时第一tc
max_1
等于13。因为第一事务204a未被具有较早准备锁时间的另一未决事务204锁定,所以数据处理硬件可以在接收到当真实时间等于9时的提交时间时立即取得事务历史312的第一一致快照。当第二事务204b在事务历史312的第一一致快照之前提交在虚垂直线602处执行时,第二事务204b直到在第一一致快照之后才完全完成。例如,第二事务204b包括等于18的提交时间。因此,第一一致快照包括与第一事务204a而不是第二事务204b相关联的任何突变。
61.当图6也示出包括早于第二tc
max_2
的对应提交时间的第二事务204b时,数据处理硬件在等于18的对应提交时间处取得事务历史312的第二一致快照,因为第二事务204b未被具有较早准备锁时间的另一未决事务204锁定。这里,第二一致快照合并与两个提交时间窗口610a、610b相关联的事务历史以包括与第一事务204a和第二事务204b相关联的突变。数
据处理硬件可以执行至少一个监视器代理314以提供第二一致快照内的事务历史的合并。
62.在一些实施方式中,数据处理硬件确定在离线事件650之后重新启动变更日志进程500。例如,图6示出在虚垂直线605处发生离线事件650直到变更日志进程500随后当真实时间等于30时在虚垂直线606处重新启动为止。因为变更日志缓存不具有持久状态,所以在离线事件650之前由变更日志缓存先前保持的任何状态到变更日志进程500重新启动时消失。在一些示例中,数据处理硬件依靠全局最大提交时间延迟tcd
max
来确保在分布式系统200上执行的所有事务204完成,使得在变更日志进程500的重新启动之后的事务历史312的所有后续快照是是一致的。换句话说,tcd
max
是保证在变更日志进程500的重新启动之前提交的任何事务204将到tcd
max
结束时完成的时间段。数据处理硬件基于当变更日志处理重新启动时的真实时间来确定当前序号。例如,当变更日志进程500重新启动时当前序号等于虚垂直线606处的30。此后,数据处理硬件在更新在分布式系统上执行的事务204的事务历史312之前从当前序号(例如,虚垂直线606)起等待tcd
max
。如本文中所使用的,真实时间(tt)有效地使时间离散化,使得给定系统上的真实时间的测量对应于实际时间。因此,tt定义指示当前时间概率上在tt的下限(ttnow_lowerbound)与tt的上限(ttnow_upperbound)之间的间隔内的间隔。结果,不能直接地准备tt的值,并且在第一真实时间(tt1)之后已经发生第二真实时间(tt2)的事件的条件是tt2_lowerbound大于tt1_upperbound。图6示出tcd
max
等于20并且发生在虚垂直线606和607之间。因此,当tcd
max
等于20时,数据处理硬件不更新事务历史312直到当真实时间等于50时的虚垂直线607为止。
63.在一些示例中,当真实时间等于25并且在第三提交时间窗口610c期间发生离线事件650时,由对应clc 310设置第三提交时间窗口610c。当第三提交时间窗口610c在离线事件650的发生之前已知的第三tc
max_3
处期满时,作为虚垂直线605和606之间的离线事件650的结果,对应clc 310丢失与第三提交时间窗口610c相关联的对应事务204的状态。因此,在变更日志进程500期间,监视器代理314等待tcd
max
以提供包括与第三提交时间窗口610c相关联的对应事务204的事务历史312的一致快照。在事务历史312中的间隙的情况下,监视器代理314在该间隙的时间范围期间从数据存储中检索一致状态。
64.在一些实施方式中,第四提交时间窗口610d由对应clc 310在重启事件之后设置并且包括在tcd
max
结束之前发生的第四tc
max_4
。假定与第四提交时间窗口610d相关联的对应事务到第四tc
max_4
时成功地提交,则在tcd
max
结束时的事务历史312的一致快照合并与两个提交时间窗口610c、610d相关联的事务历史以包括与其对应事务204相关联的突变。相比之下,与在tcd
max
期间开始但是在tcd
max
之后期满的第五提交时间窗口610e相关联的对应事务204将未被包括在tcd
max
结束时的一致快照中,因为与第五提交时间窗口610d相关联的第五tc
max_5
发生在tcd
max
之后。
65.图7是可以用于实现本文档中描述的系统和方法(诸如计算资源112和数据存储150)的示例计算装置700的示意图。计算装置700旨在表示各种形式的数字计算机,诸如膝上型电脑、台式机、工作站、个人数字助理、服务器、刀片服务器、大型机和其它适当的计算机。这里示出的组件、它们的连接和关系及其功能仅意在为示例性的,而不意在限制本文档中描述和/或要求保护的发明的实施方式。
66.计算装置700包括处理器710(即,数据处理硬件)、存储器720、存储装置730、连接到存储器720和高速扩展端口750的高速接口/控制器740以及连接到低速总线770和存储装
置730的低速接口/控制器660。组件710、720、730、740、750和760中的每一个使用各种总线来互连,并且可以酌情被安装在公共母板上或者以其它方式安装。处理器710可处理在计算装置700内执行的指令,包括存储在存储器720中或在存储装置730上以在外部输入/输出装置(诸如耦合到高速接口740的显示器780)上显示用于gui的图形信息的指令。在其它实施方式中,可以酌情使用多个处理器和/或多个总线以及多个存储器和多个类型的存储器。另外,可以连接多个计算装置700,其中每个装置提供必要操作的部分(例如,作为服务器组、一组刀片服务器或多处理器系统)。
67.存储器720非暂时地存储计算装置700内的信息。存储器720可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时性存储器720可以是用于在暂时或永久基础上存储程序(例如,指令的序列)或数据(例如,程序状态信息)以供由计算装置700使用的物理装置。非易失性存储器的示例包括但不限于闪速存储器和只读存储器(rom)/可编程只读存储器(prom)/可擦除可编程只读存储器(eprom)/电子可擦除可编程只读存储器(eeprom)(例如,通常用于固件,诸如引导程序)以及磁盘或磁带。易失性存储器的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)。
68.存储装置730能够为计算装置700提供大容量存储。在一些实施方式中,存储装置730是计算机可读介质。在各种不同的实施方式中,存储装置630可以是软盘装置、硬盘装置、光盘装置或磁带装置、闪速存储器或其它类似的固态存储器装置或这些装置的阵列,包括存储区域网络或其它配置中的装置。在附加实施方式中,计算机程序产品被有形地具体实现在信息载体中。计算机程序产品包含指令,所述指令当被执行时,执行一个或多个方法,诸如上述的那些方法。信息载体是计算机或机器可读介质,诸如存储器720、存储装置730或处理器710上的存储器。
69.高速控制器740管理计算装置700的带宽密集操作,然而低速控制器760管理较低带宽密集操作。职责的这种分配仅是示例性的。在一些实施方式中,高速控制器740耦合到存储器720、显示器780(例如,通过图形处理器或加速器),并且耦合到高速扩展端口750,所述高速扩展端口750可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器760耦合到存储装置730和低速扩展端口670。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口770可以例如通过网络适配器耦合到一个或多个输入/输出装置,诸如键盘、指点装置、扫描仪或联网装置,诸如交换机或路由器。
70.如图中所示,可以以许多不同的形式实现计算装置700。例如,它可以作为标准服务器700a或者多次在一组此类服务器700a中、作为膝上型计算机700b或者作为机架服务器系统700c的一部分被实现。
71.在一些实施方式中,实现计算资源112的计算装置700与数据存储150(例如,在存储器720中)通信。计算资源112(在数据处理硬件710上执行)执行用于分布式系统200的变更日志进程500的初始实例310,变更日志进程500的每个实例310被配置为在与计算资源112通信的存储器硬件720上存储在分布式系统200上执行的事务204(例如,写入事务)的事务历史312。计算资源112可以接收事务请求138并且基于所接收到的事务请求138确定变更日志负载。在一些示例中,计算资源112在变更日志负载满足阈值负载时执行变更日志进程500的至少一个后续实例310并且确定变更日志进程500的多个实例是否正在执行。当变更
日志进程500的多个实例正在执行时,计算资源112可以停止变更日志进程500的至少一个后续实例的执行并且合并变更日志进程500的初始实例310的事务历史和变更日志进程500的至少一个后续实例310的事务历史。在一些示例中,计算资源112向突变数据的所有订阅监视器322提供反映经合并的事务历史的一致快照。
72.软件应用(即,软件资源110s)可以指代使计算装置执行任务的计算机软件。在一些示例中,软件应用可以被称为“应用”、“app”或“程序”。示例应用包括但不限于系统诊断应用、系统管理应用、系统维护应用、文字处理应用、电子表格应用、消息传递应用、媒体流应用、社交网络应用和游戏应用。
73.非暂时性存储器110hm可以是用于在暂时或永久基础上存储程序(例如,指令的序列)或数据(例如,程序状态信息)以供由计算装置110hc使用的物理装置。非暂时性存储器110hm可以是易失性和/或非易失性可寻址半导体存储器。非易失性存储器的示例包括但不限于闪速存储器和只读存储器(rom)/可编程只读存储器(prom)/可擦除可编程只读存储器(eprom)/电子可擦除可编程只读存储器存储器(eeprom)(例如,通常用于固件,诸如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)以及磁盘或磁带。
74.这里描述的系统和技术的各种实施方式可用数字电子和/或光学电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合加以实现。这些各种实施方式可包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,所述可编程系统包括至少一个可编程处理器,其可以是专用的或通用的,耦合以从存储系统、至少一个输入装置和至少一个输出装置接收数据和指令,并且向存储系统、至少一个输入装置和至少一个输出装置发送数据和指令。
75.这些计算机程序(也被称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可用高级过程和/或面向对象编程语言和/或用汇编/机器语言来实现。如本文中所使用的,术语“机器可读介质”和“计算机可读介质”指代用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、非暂时性计算机可读介质、设备和/或装置(例如,磁盘、光盘、存储器、可编程逻辑器件(pld),包括将机器指令作为机器可读信号来接收的机器可读介质。术语“机器可读信号”指代用于向可编程处理器提供机器指令和/或数据的任何信号。
76.本说明书中描述的主题和功能操作的实施方式可用数字电子电路或者用计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)或者用它们中的一个或多个的组合加以实现。此外,本说明书中描述的主题可作为一个或多个计算机程序产品(即,在计算机可读介质上编码以供由数据处理设备执行或者控制数据处理设备的操作的计算机程序指令的一个或多个模块)被实现。计算机可读介质可以是机器可读存储装置、机器可读存储基底、存储器装置、影响机器可读传播信号的物质的合成物,或它们中的一个或多个的组合。术语“数据处理设备”、“计算装置”和“计算处理器”包含用于处理数据的所有设备、装置和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。设备除了包括硬件之外还可包括为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电、光或电磁信号,该信号被生成来对信息进行编码以便传输到适
合的接收器设备。
77.计算机程序(也被称为应用、程序、软件、软件应用、脚本或代码)可用任何形式的编程语言(包括编译或解释语言)编写,并且它可被以任何形式部署,包括作为独立程序或者作为模块、组件、子例行程序或适合于在计算环境中使用的其它单元。计算机程序不一定对应于文件系统中的文件。可在保持其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专用于所述程序的单个文件中或者在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中存储程序。可将计算机程序部署成在一个计算机上或者在位于一个站点处或分布在多个站点上并且通过通信网络互连的多个计算机上执行。
78.本说明书中描述的过程和逻辑流程可通过一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能而被执行。过程和逻辑流程也可由专用逻辑电路执行,并且设备也可以作为专用逻辑电路被实现,所述专用逻辑电路例如为fpga(现场可编程门阵列)或asic(专用集成电路)。
79.作为示例,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。一般地,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器装置。一般地,计算机也将包括或者在操作上耦合以从用于存储数据的一个或多个大容量存储装置(例如,磁盘、磁光盘或光盘)接收数据,或者向所述大容量存储装置传送数据,或者兼而有之。然而,计算机未必具有此类装置。此外,计算机可被嵌入另一装置中,所述另一装置例如移动电话、个人数字助理(pda)、移动音频播放器、全球定位系统(gps)接收器等等。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,作为示例包括半导体存储器装置,例如eprom、eeprom和闪速存储器装置;磁盘,例如内部硬盘或可移动盘;磁光盘;以及cd rom和dvd-rom盘。处理器和存储器可由专用逻辑电路来补充,或者并入专用逻辑电路。
80.为了提供与用户的交互,可将计算机上实现本公开的一个或多个方面,所述计算机具有用于向用户显示信息的显示装置(例如,crt(阴极射线管)、lcd(液晶显示器)监视器或触摸屏)以及可选地用户可用来向该计算机提供输入的键盘和指点装置,例如鼠标或轨迹球。其它种类的装置也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声、语音或触觉输入。此外,计算机可通过向由用户使用的装置发送文档并且从由用户使用的装置接收文档来与用户交互;例如,通过响应于从web浏览器接收到的请求而向用户的客户端装置上的web浏览器发送web页面。
81.可以在计算系统中实现本公开的一个或多个方面,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可以用来与本说明书中描述的主题的实施方式交互的图形用户界面或web浏览器的客户端计算机),或者包括一个或多个此类后端、中间件或前端组件的任何组合。系统的组件可通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互联网络(例如,因特网)和对等网络(例如,自组
织对等网络)。
82.计算系统可包括客户端和服务器。客户端和服务器一般地彼此远离并且通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施方式中,服务器向客户端装置发送数据(例如,html页面)(例如,为了向与客户端装置交互的用户显示数据并且从与客户端装置交互的用户接收用户输入的目的)。可在服务器处从客户端装置接收在客户端装置处生成的数据(例如,用户交互的结果)。
83.虽然本说明书包含许多详情,但是这些不应该被解释为对本公开的或可能要求保护的范围构成限制,而是相反被解释为特定于本公开的特定实施方式的特征的描述。也可在单个实施方式中相结合地实现在本说明书中在单独的实施方式的上下文中描述的某些特征。相反地,也可在多个实施方式中单独地或者按照任何适合的子组合实现在单个实施方式的上下文中描述的各种特征。此外,尽管特征可以已经在上面被描述为按照某些组合起作用并且甚至最初如此要求保护,然而来自所要求保护的组合的一个或多个特征可在一些情况下被从该组合中除去,并且所要求保护的组合可以针对子组合或子组合的变化。
84.类似地,虽然在附图中按照特定次序描绘操作,但是这不应该被理解为要求按照所示特定次序或按照顺序次序执行此类操作,或者要求所有图示的操作被执行以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述实施例中的各种系统组件的分离不应该被理解为在所有实施例中要求这种分离,并且应该理解的是,所描述的程序组件和系统一般地可被一起集成在单个软件产品中或者包装到多个软件产品中。
85.已经描述了许多实现方式。然而,应理解的是,可在不脱离本公开的精神和范围的情况下做出各种修改。因此,其它实施方式在以下权利要求的范围内。例如,权利要求中记载的动作可被以不同的次序执行并仍然实现所希望的结果。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1