托管存储锁定的制作方法

文档序号:6497092阅读:175来源:国知局
托管存储锁定的制作方法
【专利摘要】一种托管式存储系统从请求器接收对于访问托管的资源的请求。托管的资源包括二进制大型对象。托管式存储系统向耦合到托管式存储系统的多个客户端提供托管式存储。创建托管的资源的副本。向请求器提供包括托管的资源的副本的副本消息。在请求器修改托管的资源的副本之时在托管式存储系统中维护托管的资源。从请求器接收消息。消息包括托管的资源的修改的副本。确定自从托管的资源的副本被创建起托管的资源尚未被修改。用托管的资源的修改的副本替换托管的资源。
【专利说明】托管存储锁定
[0001]有关申请的交叉引用
[0002]本申请要求对通过引用将其公开内容结合于此、名称为HOSTED STORAGELOCKING、提交于2011年9月14日的第13/232,450号美国申请的优先权。
【技术领域】
[0003]本文涉及托管式存储装置。
【背景技术】
[0004]托管或者基于云的存储装置是指通常由第三方提供的站点外或者远程数据存储装置。第三方可以在数据中心中实施托管式存储装置,并且通过网络(比如因特网)提供对托管式存储装置的访问。

【发明内容】

[0005]在一个方面中,一种方法由一个或者多个处理器执行。该方法包括在托管式存储系统从请求器接收对于访问托管的资源的请求。托管的资源包括二进制大型对象。托管式存储系统向耦合到托管式存储系统的多个客户端提供托管式存储。该方法还包括创建托管的资源的副本。该方法还包括向请求器提供包括托管的资源的副本的副本消息。该方法还包括在请求器修改托管的资源的副本之时在托管式存储系统中维护托管的资源。该方法还包括从请求器接收消息。消息包括托管的资源的修改的副本。该方法还包括确定自从托管的资源的副本被创建起托管的资源尚未被修改。该方法还包括响应于该确定并且在托管式存储系统中用托管的资源的修改的副本替换托管的资源。来自请求器的请求、副本消息和来自请求器的消息是超文本传送协议消息。
[0006]实现方式可以包括以下特征中的任何特征、所有特征或者不包括以下特征中的任何特征。该方法还包括:提供包括向请求器提供托管的资源的版本指示符以用于修改。该方法还包括:接收托管的资源的修改的副本包括接收提供的版本指示符。该方法还包括:确定包括比较提供的版本指示符与托管的资源的当前版本指示符。该方法还包括:替换包括递增版本指示符。版本指示符包括多个值,每个值与托管的资源的版本或者关联于托管的资源的元数据值关联。比较提供的版本指示符与托管的资源的当前版本指示符包括比较提供的版本指示符的多个值的子集与当前版本指示符的多个值的子集。托管式存储系统包括:数据存储库,被配置用于存储托管的资源;元数据存储库,被配置用于存储与托管的资源有关的元数据,元数据包括访问控制列表;以及接口,被配置用于从请求器接收对于访问托管的资源的请求、向请求器提供副本消息并且从请求器接收包括托管的资源的修改的副本的消息。作为单个操作的部分执行确定和替换。该方法还包括在托管式存储系统并且在替换之前从第二请求器接收对于访问托管的资源的第二请求。该方法还包括创建托管的资源的第二副本。该方法还包括向第二请求器提供托管的资源的第二副本以用于修改。该方法还包括接收托管的资源的第二修改的副本,第二修改的副本由第二请求器创建。该方法还包括确定自从托管的资源的第二副本被创建起托管的资源已经被修改。该方法还包括向第二请求器提供修改拒绝消息。该方法还包括修改托管的资源的一部分;并且其中修改拒绝消息指示托管的资源的修改的一部分。
[0007]在一个方面中,一种方法由一个或者多个处理器执行。该方法包括在托管式存储系统从请求器接收对于访问托管的资源的请求,托管式存储系统向耦合到托管式存储系统的多个客户端提供托管式存储。该方法还包括创建托管的资源的副本。该方法还包括向请求器提供包括托管的资源的副本和托管的资源的版本指示符的副本消息,版本指示符包括多个值,每个值与托管的资源的版本或者关联于托管的资源的元数据值关联。该方法还包括在请求器修改托管的资源的副本之时在托管式存储系统中维护托管的资源。该方法还包括从请求器接收包括托管的资源的修改的副本和提供的版本指示符的消息。该方法还包括通过比较提供的版本指示符与托管的资源的当前版本指示符来确定自从托管的资源的副本被创建起托管的资源尚未被修改。该方法还包括响应于该确定并且在托管式存储系统中用托管的资源的修改的副本替换托管的资源。该方法还包括响应于确定并且在托管式存储系统中递增版本指示符。
[0008]在一个方面中,一种计算机系统包括:托管式存储系统,被配置用于向耦合到托管式存储系统的多个客户端提供托管式存储。托管式存储系统还被配置用于从请求器接收对于访问托管的资源的请求。托管的资源包括二进制大型对象。托管式存储系统还被配置用于创建托管的资源的副本。托管式存储系统还被配置用于向请求器提供包括托管的资源的副本的副本消息。托管式存储系统还被配置用于在请求器修改托管的资源的副本之时在托管式存储系统中维护托管的资源。托管式存储系统还被配置用于从请求器接收包括托管的资源的修改的副本的消息。托管式存储系统还被配置用于确定自从托管的资源的副本被创建起托管的资源尚未被修改。托管式存储系统还被配置用于响应于该确定并且在托管式存储系统中用托管的资源的修改的副本替换托管的资源。该系统还包括:请求器,被配置用于向托管式存储系统提供请求。该请求器还被配置用于从托管式存储系统接收副本消息。该请求器还被配置用于修改托管的资源的副本。该请求器还被配置用于向托管式存储系统提供消息。来自请求器的请求、副本消息和来自请求器的用于访问托管的资源的消息是超文本传送协议消息。
[0009]实现方式可以包括以下特征中的任何特征、所有特征或者不包括以下特征中的任何特征。提供副本消息包括向请求器提供托管的资源的版本指示符以用于修改。接收托管的资源的修改的副本包括接收提供的版本指示符;确定包括比较提供的版本指示符与托管的资源的当前版本指示符。替换包括递增版本指示符。版本指示符包括多个值,每个值与托管的资源的版本或者关联于托管的资源的元数据值关联。比较提供的版本指示符与托管的资源的当前版本指示符包括比较提供的版本指示符的多个值的子集与当前版本指示符的多个值的子集。托管式存储系统包括:数据存储库,被配置用于存储托管的资源;元数据存储库,被配置用于存储与托管的资源有关的元数据,元数据包括访问控制列表;以及接口,被配置用于从请求器接收对于访问托管的资源的请求、向请求器提供副本消息并且从请求器接收包括托管的资源的修改的副本的消息。作为单个操作的部分执行确定和替换。托管式存储系统还被配置用于:在托管式存储系统并且在替换之前从第二请求器接收对于访问托管的资源的第二请求;创建托管的资源的第二副本;向第二请求器提供托管的资源的副本以用于修改;接收托管的资源的第二修改的副本;确定自从托管的资源的第二副本被创建起托管的资源已经被修改;并且向第二请求器提供修改拒绝消息。该系统还包括:第二请求器,被配置用于向托管式存储系统提供第二请求;从托管式存储系统接收托管的资源的副本;修改托管的资源的副本;并且向托管式存储系统提供托管的资源的第二修改的副本;并且接收修改拒绝消息。托管式存储系统还被配置用于修改托管的资源的一部分;并且其中修改拒绝消息指示托管的资源的修改的一部分。
[0010]在附图和以下描述中阐述一个或者多个实现方式的细节。其它特征和优点将从描述和附图中以及从权利要求中变得清楚。
[0011]这里描述的主题内容的各种实现方式可以提供以下优点中的一个或者多个优点。例如,在存储数据之前检查版本指示符可以防止丢失对数据的改变。使用版本指示符的托管式存储系统可以在维护数据对象的状态之时向许多客户端提供数据对象的并发访问。跟踪多个版本值可以允许系统锁定数据对象的部分而保持数据对象的其它部分未锁定。
【专利附图】

【附图说明】
[0012]图1是示出用于向托管式存储装置提供版本锁定的系统的示例的示意图。
[0013]图2是示出用于提供托管式存储并且从客户端设备访问托管式存储装置的系统的示例的框图。
[0014]图3是示出用于版本锁定托管的数据对象的过程的示例的泳道图。
[0015]图4是示出用于在托管式存储服务中存储数据的过程的示例的流程图。
[0016]图5是示出用于在托管式存储服务中提供数据的过程的示例。
[0017]图6是示出访问控制列表的示例生命周期的流程图
[0018]图7示出了计算设备和移动计算设备的示例。
【具体实施方式】
[0019]托管式存储系统可以接收、存储和向客户端供应数据对象。在客户端请求数据对象时,与版本指示符一起返回对象。客户端可以修改对象并且与相同版本指示符一起向托管式存储系统发送回修改的对象。如果更新的数据对象的版本指示符与在托管式存储系统中存储的数据对象的版本指示符匹配,则托管式存储系统可以用上传(和修改)的数据对象替换存储的数据对象。如果版本指示符未匹配(例如,由于已经在中间时期修改了在托管式存储系统的对象),则托管式存储系统可以拒绝上传的数据对象并且向客户端报告拒绝。
[0020]图1是示出用于向托管式存储装置提供版本锁定的系统100的示例的示意图。系统100包括由网络108 (比如因特网)连接的一个或者多个请求器104、106和托管式存储系统102。请求器可以是例如由关于图7描述的计算设备700或者移动设备750实施的客户端设备。托管式存储系统102可以使用一个或者多个服务器系统和存储系统而被实施并且可以被实施于数据中心中。托管式存储系统102的实现方式的示例是图2中所示的托管式存储服务220。可以例如使用关于图7描述的计算设备700或者移动设备750来实施托管式存储系统102。
[0021]在系统100中,托管式存储系统102可以存储数据对象并且向应用提供对那些存储的对象的访问。应用可以在地理上相互分离的计算设备上运行。存储的数据对象可以与在改变存储的数据对象(和/或与对象关联的元数据)时递增或者以其它方式改变的版本指示符。
[0022]请求器104和106可以将托管式存储系统102用于数据对象存储。在一些实现方式中,请求器104和106可以具有用于读取和写入托管式存储系统中的相同数据对象的权限。例如,请求器104和106可以由用户使用,这些用户是相同用户组的部分。作为相同用户组的成员,可以授权两个用户访问托管式存储系统102中的共享的数据对象。请求器104和106可以通过网络108 (比如局域网、广域网或者因特网)与托管式存储系统102通信。
[0023]请求器104和106可以分别发送和接收消息105和107。消息105和107可以包括用于请求数据对象、接收数据对象的副本和上传数据对象的修改的副本的消息。消息105和107可以例如用来修改数据对象。在一些实现方式中,数据对象可以是托管式存储系统102中的不透明二进制大型对象(blob),并且对数据对象的编辑可以仅可能由请求器104和406进行。请求器104和106对数据对象的修改可以包括但不限于对数据对象的编辑、对对象的元数据的改变、对象的删除和用不同内容替换数据对象的内容。
[0024]托管式存储装置102可以维护用于托管式存储装置102中的每个数据对象的版本指示符。这一版本指示符可以例如包括在修改托管式存储装置102中的数据对象时递增的数值。托管式存储装置102可以在向请求器104和106发送数据对象时与数据对象一起包括版本指示符。这一版本指示符可以由托管式存储装置102跟踪和更新并且向请求数据对象的副本的任何客户端提供。由托管式存储装置102向任何客户端提供的数据对象的任何副本可以包括数据对象的当前版本指示符。在上传消息105和107中,更新的数据对象可以包括相同版本指示符。在这一示例中,版本指示符被示出为整数值(I),但是其它类型的版本指示符是可能的。
[0025]请求器104和106可以对来自托管式存储装置102的相同数据对象独立和异步地操作。这些操作与消息105和107—起不是瞬时的。这可以创建竞态条件,在该竞态条件中,例如请求器106在请求器104对数据对象的本地副本操作之时访问数据对象。在这一示例中,请求器104可以对请求器106无权访问的数据对象进行改变。
[0026]托管式存储系统102可以通过仅接收数据对象的上传来控制数据对象的状态,其中上传的数据对象版本信息与存储的数据对象版本指示符匹配。在这一示例中,可以接受来自请求器104的上传的数据对象,因为它包含与存储的数据对象版本指示符(I)相同的版本指示符(I)。为了接受对象,托管式存储系统102可以用上传的数据对象替换托管的数据对象。作为相同接受的一部分,可以递增数据对象版本指示符(至2)。随后,在托管式存储装置102从请求器106接收上传消息107时,托管式存储系统102可以拒绝上传的数据对象,因为上传的数据对象的版本指示符(I)不同于托管的数据对象的版本指示符(2)。作为拒绝来自请求器106的上传的数据对象的部分,托管式存储系统102可以向请求器106发送拒绝消息(未示出)、将上传的数据对象存储为不同对象、仅接收上传的数据对象的一部分(例如,仅元数据)和/或采取另一动作。
[0027]图2是示出用于提供托管式存储并且从客户端设备202访问托管式存储装置的系统200的示例的框图。在一些实现方式中,托管式存储服务220可以提供由在地理上相互分离的计算设备上运行的应用对存储的数据的访问、提供站点外数据备份和恢复功能、向具有有限存储能力的计算设备提供数据存储装置和/或提供未在计算设备上实施的存储功能。
[0028]系统200可以提供用于存储数据对象的可伸缩存储库。客户端设备202可以向托管式存储服务220上传数据对象并且控制对上传的数据对象的访问。访问控制可以包括从保持数据秘密地保密到发布它而无限制的安全级范围。可以保护在托管式存储服务220中存储的数据免于未授权访问。托管式存储服务220可以使用简单和一致应用编程接口或者API,该API可以允许任意数量的结构化或者无结构数据保持私密或者在个人、组织之间或者与全世界共享。客户端设备202可以在托管式存储服务220中存储数据以用于相互业务原因(例如,提交由托管式存储服务220的所有者订购的工作产品),或者用于在其它服务的数据处理中使用(例如,上传的图像用来自动和动态地创建相册网页)。
[0029]可以使用计算设备(比如关于图6描述的计算设备600或者移动设备650)来实施客户端设备202。客户端设备202可以经由网络204(比如因特网)与托管式存储服务220通信。客户端设备202可以使用通信协议(如比如传输控制协议/网际协议(TCP/IP)、超文本传送协议(HTTP)、超文本传送协议安全(HTTPS)、安全外壳远程协议(SSH)或者应用程序接口(API)中的一项或者多项跨越网络通信。尽管仅示出了单个客户端设备202,但是可以有跨越网络204与托管式存储服务220和/或其它服务和设备通信的多个客户端设备。
[0030]可以实施托管式存储服务220以使得客户端应用(比如客户端应用203)可以存储、取回或者以其它方式操纵托管式存储服务220中的数据对象。托管式存储服务220可以由一个或者多个服务器设备实施,该一个或者多个服务器设备可以使用计算设备(比如关于图6描述的计算设备600或者移动设备650)而被实施。例如,托管式存储服务220可以由在相同或者不同数据中心中操作的多个服务器设备实施。
[0031]托管式存储服务220 —般包括接口前端206、接口后端208、存储装置后端210、用于在存储装置后端210中存储的对象的元数据216和密钥存储库209。一般而言,接口前端206可以从客户端设备202接收请求并且向客户端设备202发送响应。例如,托管式存储服务220可以被实施为具有对应Web服务应用编程接口(API)集合的Web服务。Web服务API可以例如被实施为基于表示状态传送(REST)的HTTP接口或者基于简单对象访问协议(SOAP)的接口。
[0032]接口前端206可以从客户端202接收消息并且将请求解析成由托管式存储服务220可使用的格式,比如对接口后端208的远程过程调用(RPC)。接口前端206编写由托管式存储服务220生成的响应以用于向客户端202传输。在一些实现方式中,多个接口前端206被实施以例如支持多个访问协议。
[0033]接口前端206可以包括例如用于在用于数据访问的web浏览器上显示的图形前端。接口前端206可以包括用于支持大型文件的管理的上传和下载(例如,用于功能(比如暂停、继续和从超时恢复))的子系统。接口前端206可以监视负荷信息并且更新日志以例如跟踪和防范服务拒绝(DOS)攻击。
[0034]如以上描述的那样,Web服务API可以是基于REST的HTTP接口。在基于REST的接口中,数据对象被访问作为使用URI来唯一命名的资源,并且客户端应用203和服务220使用定义的操作集合来交换资源状态的表示。例如,请求的动作可以被表示为动词,比如由HTTP GET、PUT、POST、HEAD和DELETE动词表示。GET动词可以用来取回对象,而HEAD动词可以用来取回关于对象的信息而未取回对象本身。DELETE动词可以用来从托管式存储服务220删除对象。PUT和POST动词可以用来向服务220上传对象。PUT请求可以来自客户端202并且在头部(比如HTTP头部)中包含认证和授权证书和对象元数据。可以在客户端202想要从web浏览器表单上传时接收POST请求。用于托管式存储服务220的表单POST上传协议可以涉及到用于提供认证、授权和对象元数据的多个所需表单字段。更一般而言,API请求中的任何API请求可以例如在请求的头部中包括用于认证和授权的证书。例如,可以在REST请求中包括授权头部,该授权头部包括用于标识发送请求的实体的访问密钥。
[0035]备选地或者附加地,可以基于在向API请求追加的浏览器cookie中存储的证书认证用户。如果不存在有效cookie,则可以生成向认证前端的重定向,并且认证前端可以用来生成浏览器cookie。认证前端除了托管式存储服务220之外还可以由系统和服务使用(例如,如果操作托管式存储服务220的组织也操作其它web服务,比如电子邮件服务)。可以附加地或者备选地基于来自外部证书发放服务或者包括证书发放功能的外部服务的认证证书认证用户。可以根据外部服务的证书信息计算用户或者组标识符信息。可以翻译并且向外部服务转发由客户端202向接口前端206发送的请求以用于认证。
[0036]一般而言,在托管式存储服务220中存储的对象可以由对象标识符引用。托管式存储服务220可以定义有效对象标识符必须符合的名称空间。例如,名称空间可以要求对象标识符是Unicode字符序列,该序列的UTF-8编码至多为1024字节长度。作为另一示例,名称空间可以要求对象标识符是全局唯一标识符(⑶ID),这些⑶ID可以是128位整数。
[0037]可以在托管式存储服务220中在桶(bucket)中存储对象。在一些示例中,在托管式存储服务220中唯一地命名每个桶,在桶中唯一地命名每个对象,并且每个桶和对象组合是唯一的。对象可以由包括桶名称和对象名称并且标识托管式存储服务220的URI唯一地标识。例如,可以使用 URI 样式(比如,http://s.hostedstorage system, com/music/long/song, mp3 或者 http://music, s.hostedstorage system, com/long/song, mp3 来指定在被命名为“music”的桶中的被命名为“long/song, mp3”的对象。备选地,客户端202的用户可以创建被命名为WWW.music, org的桶、发布将这重定向到http://music.s.hostedstoragesystem.com的CNAME别名并且将对象寻址为http:// www.music, org/long/song.mp3。在一些示例中,桶未嵌套。
[0038]接口后端208可以处理请求认证和授权、可以管理数据和元数据并且可以跟踪活动以比如用于开账单。接口后端208可以提供用于独立前端/后端缩放以求在局部化繁重负荷之下资源利用和响应性的功能。可以在接口后端208中封装数据管理而可以在接口前端206中封装通信服务。接口后端208可以从面向客户端的接口前端206隔离安全机制。托管的资源的版本锁定可以由接口后端207实现。
[0039]接口后端208可以暴露可由接口前端206和其它系统二者使用的接口。在一些示例中,接口后端208的一些特征仅可由托管式存储服务220的所有者(内部用户)使用的接口前端(未示出)访问。这样的特征可以包括管理任务所需要的特征(例如,将对象引用分解成低级盘地址)。接口后端208可以处理请求认证(例如,保证用户的证书有效)和授权(例如,查证请求的操作是允许的)。接口后端也可以提供加密和解密服务以防止甚至内部用户对数据的未授权访问。
[0040]密钥存储库209可以存储用于数据对象的加密密钥,其中加密密钥本身已经由接口后端208加密。加密的密钥可以携带在密码上限于密钥本身的关联元数据并且这里被称为打包密钥。从接口后端208的观点来看,打包密钥可以是不透明对象。为了获得打包密钥的明文密钥以用于使用(例如用来加密或者解密数据对象),接口后端208可以向密钥库209提供打包密钥和客户端认证证书。密钥库209可以部分基于打包密钥的元数据查证提供的认证证书足以授权释放密钥,并且如果是这样则可以向接口后端208返回未打包密钥。接口后端208可以使用密钥以加密或者解密数据对象并且然后可以丢弃密钥。
[0041]在一些示例中,加密密钥是可以用来既加密又解密对象的对称密钥。在一些示例中,打包密钥可以具有关联元数据,该元数据指示被授权访问明文密钥的多个用户或者组。在一些示例中,密钥存储库209可以复制打包密钥并且重新打包密钥以用于不同主体(例如包含不同元数据)。
[0042]接口后端208可以例如在结构化数据格式(比如数据库(例如,MySQL或者BigTable))中管理与数据对象关联的元数据216。可以完全在元数据216内定义标注桶的、用户指定的名称,并且对象元数据216可以将资源名称映射到存储资源的一个或者多个数据共享212。元数据216也可以包含桶和对象创建时间、对象大小、哈希以及用于桶和对象二者的访问控制列表218(ACL218)。接口后端208可以记录活动并且跟踪存储消耗以支持用于开账单和拒 付的记账。在一些示例中,这包括在对客户收费的每个维度(例如,读取、写入、网络传送、使用的总存储)中的配额监视。
[0043]ACL218定义谁被授权对对应桶或者对象执行动作以及允许的动作的性质。ACL218可以是{范围,作用}对的无需列表加上布尔标志。范围可以定义用户或者用户组,并且作用可以定义用于用户或者组的访问权限。在一些示例中,所有{范围,作用}对的并集可以定义访问权。在一些示例中,更具体{范围,作用}对超越更一般{范围,作用}对。下面的表1:桶作用示出可以在用于桶的ACL218中包括的示例作用列表。下面的表2:对象作用示出可以在用于数据对象的ACL218中包括的示例作用列表。
[0044]
【权利要求】
1.一种由一个或者多个处理器执行的方法,所述方法包括: 在托管式存储系统从请求器接收对于访问托管的资源的请求,所述托管的资源包括二进制大型对象,所述托管式存储系统向耦合到所述托管式存储系统的多个客户端提供托管式存储; 创建所述托管的资源的副本; 向所述请求器提供包括所述托管的资源的所述副本的副本消息; 在所述请求器修改所述托管的资源的所述副本之时在所述托管式存储系统中维护所述托管的资源; 从所述请求器接收包括所述托管的资源的修改的副本的消息;并且 确定自从所述托管的资源的所述副本被创建起所述托管的资源尚未被修改; 响应于所述确定并且在所述托管式存储系统中用所述托管的资源的所述修改的副本替换所述托管的资源;并且 其中来自请求器的所述请求、所述副本消息和来自所述请求器的所述消息是超文本传送协议或者超文本传送协议安全消息。
2.根据权利要求1所述的方法,其中: 提供包括向所述请求器提供所述托管的资源的版本指示符; 接收所述托管的资源的所述修改的副本包括接收提供的所述版本指示符; 确定包括比较提供的所述版本指示符与所述托管的资源的当前版本指示符;以及 替换包括递增所述版本指示符。
3.根据权利要求2所述的方法,其中所述版本指示符包括多个值,每个值与所述托管的资源的版本或者关联于所述托管的资源的元数据值关联。
4.根据权利要求3所述的方法,其中比较提供的所述版本指示符与所述托管的资源的当前版本指示符包括比较提供的所述版本指示符的所述多个值的子集与所述当前版本指示符的所述多个值的子集。
5.根据权利要求1所述的方法,其中所述托管式存储系统包括: 数据存储库,被配置用于存储托管的资源; 元数据存储库,被配置用于存储与托管的资源有关的元数据,所述元数据包括访问控制列表;以及 接口,被配置用于从请求器接收对于访问托管的资源的所述请求、向所述请求器提供所述副本消息并且从所述请求器接收包括所述托管的资源的修改的副本的所述消息。
6.根据权利要求1所述的方法,其中作为单个操作的部分执行所述确定和所述替换。
7.根据权利要求1所述的方法,所述方法还包括: 在所述托管式存储系统并且在所述替换之前从第二请求器接收对于访问托管的资源的第二请求; 创建所述托管的资源的第二副本; 向所述第二请求器提供所述托管的资源的所述第二副本以用于修改; 接收所述托管的资源的第二修改的副本,所述第二修改的副本由所述第二请求器创建; 确定自从所述托管的资源的所述第二副本被创建起所述托管的资源已经被修改;以及向所述第二请求器提供修改拒绝消息。
8.根据权利要求7所述的方法,所述方法还包括: 修改所述托管的资源的一部分;并且 其中所述修改拒绝消息指示所述托管的资源的修改的一部分。
9.一种由一个或者多个处理器执行的方法,所述方法包括: 在托管式存储系统从请求器接收对于访问托管的资源的请求,所述托管式存储系统向耦合到所述托管式存储系统的多个客户端提供托管式存储; 创建所述托管的资源的副本; 向所述请求器提供包括所述托管的资源的所述副本和所述托管的资源的版本指示符的副本消息,所述版本指示符包括多个值,每个值与所述托管的资源的版本或者关联于所述托管的资源的元数据值关联; 在所述请求器修改所述托管的资源的所述副本之时在所述托管式存储系统中维护所述托管的资源; 从所述请求器接收包括所述托管的资源的修改的副本和提供的所述版本指示符的消息;并且 通过比较提供的所述版本指示符与所述托管的资源的当前版本指示符来确定自从所述托管的资源的所述副本被创建起所述托管的资源尚未被修改; 响应于所述确定并且在所述托管式存储系统中用所述托管的资源的所述修改的副本替换所述托管的资源;以及 响应于所述确定并且在所述托管式存储系统中递增所述版本指示符。
10.一种计算机系统,包括: 托管式存储系统,被配置用于: 向耦合到所述托管式存储系统的多个客户端提供托管式存储; 从请求器接收对于访问托管的资源的请求,所述托管的资源包括二进制大型对象; 创建所述托管的资源的副本; 向所述请求器提供包括所述托管的资源的所述副本的副本消息; 在所述请求器修改所述托管的资源的所述副本之时在所述托管式存储系统中维护所述托管的资源; 从所述请求器接收包括所述托管的资源的修改的副本的消息;并且 确定自从所述托管的资源的所述副本被创建起所述托管的资源尚未被修改; 响应于所述确定并且在所述托管式存储系统中用所述托管的资源的所述修改的副本替换所述托管的资源;以及请求器,被配置用于: 向所述托管式存储系统提供所述请求; 从所述托管式存储系统接收所述副本消息; 修改所述托管的资源的所述副本;并且 向所述托管式存储系统提供所述消息;并且 其中来自请求器的所述请求、所述副本消息和来自所述请求器的用于访问托管的资源的所述消息是超文本传送协议或者超文本传送协议安全消息。
11.根据权利要求10所述的系统,其中: 提供所述副本消息包括向所述请求器提供所述托管的资源的版本指示符; 接收所述托管的资源的所述修改的副本包括接收提供的所述版本指示符; 确定包括比较提供的所述版本指示符与所述托管的资源的当前版本指示符;以及 替换包括递增所述版本指示符。
12.根据权利要求11所述的系统,其中所述版本指示符包括多个值,每个值与所述托管的资源的版本或者关联于所述托管的资源的元数据值关联。
13.根据权利要求12所述的系统,其中比较提供的所述版本指示符与所述托管的资源的当前版本指示符包括比较提供的所述版本指示符的所述多个值的子集与所述当前版本指示符的所述多个值的子集。
14.根据权利要求10所述的系统,其中所述托管式存储系统包括: 数据存储库,被配置用于存储托管的资源; 元数据存储库,被配置用于存储与托管的资源有关的元数据,所述元数据包括访问控制列表;以及 接口,被配置用于从请求器接收对于访问托管的资源的所述请求、向所述请求器提供所述副本消息并且从 所述请求器接收包括所述托管的资源的修改的副本的所述消息。
15.根据权利要求10所述的系统,其中作为单个操作的部分执行所述确定和所述替换。
16.根据权利要求10所述的系统,其中所述托管式存储系统还被配置用于: 在所述托管式存储系统并且在所述替换之前从第二请求器接收对于访问托管的资源的第二请求; 创建所述托管的资源的第二副本; 向所述第二请求器提供所述托管的资源的所述第二副本以用于修改; 接收所述托管的资源的第二修改的副本; 确定自从所述托管的资源的所述第二副本被创建起所述托管的资源已经被修改;并且 向所述第二请求器提供修改拒绝消息;并且 所述系统还包括所述第二请求器,所述第二请求器被配置用于: 向所述托管式存储系统提供所述第二请求; 从所述托管式存储系统接收所述托管的资源的所述副本; 修改所述托管的资源的所述副本;并且 向所述托管式存储系统提供所述托管的资源的所述第二修改的副本;以及 接收所述修改拒绝消息。
17.根据权利要求16所述的系统,其中所述托管式存储系统还被配置用于: 修改所述托管的资源的一部分;并且 其中所述修改拒绝消息指示所述托管的资源的修改的一部分。
【文档编号】G06F15/16GK103930881SQ201280055672
【公开日】2014年7月16日 申请日期:2012年9月13日 优先权日:2011年9月14日
【发明者】E·V·J·艾卡斯, D·厄布 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1