首页> 中国专利> 用于优化对象版本控制的无服务器解决方案

用于优化对象版本控制的无服务器解决方案

摘要

一个示例性方法包括:通过执行包括从客户端应用接收应用程序接口(API)网关调用、并利用API网关调用自动触发对象插入函数的执行的操作而在数据中心处实现函数即服务(FaaS),其中API网关调用与对象PUT请求相关联。对象插入函数包括从后端对象存储器中检索对象的先前版本,相对于对象的先前版本差异地压缩对象以产生差异,以及将差异存储在后端对象存储器中。

著录项

  • 公开/公告号CN112955860A

    专利类型发明专利

  • 公开/公告日2021-06-11

    原文格式PDF

  • 申请/专利权人 EMC IP控股有限公司;

    申请/专利号CN201980070564.3

  • 发明设计人 A·纳塔佐恩;Y·萨阿德;

    申请日2019-07-10

  • 分类号G06F3/06(20060101);G06F9/50(20060101);

  • 代理机构11291 北京同达信恒知识产权代理有限公司;

  • 代理人黄志华;何月华

  • 地址 美国马萨诸塞州

  • 入库时间 2023-06-19 11:21:00

说明书

技术领域

本发明的实施方式大体上涉及数据保护和可用性。更具体地,本发明的至少一些实施方式涉及用于优化对象版本控制以帮助减少对象消耗的存储量的系统、硬件、软件、计算机可读介质以及方法。

背景技术

企业生成大量重要数据,所述数据通常保存在某种类型的数据保护环境中。典型的数据保护环境采用各种硬件和软件,以提供数据安全性、访问性和可用性。

例如,对象存储目前广泛用于公共云中以及企业或其他实体本地。这些公共云存储环境的实例包括Amazon S3和Dell EMC弹性云存储(Elastic Cloud Storage,ECS)。

云存储环境采用的许多对象存储器都支持对象版本控制,因此允许用户为了数据保护和数据管理而保留对象的先前版本。但是,这种灵活性和能力是有代价的。也就是说,即使同一对象的不同版本通常彼此非常相似,用户也必须为该对象的每个完整版本消耗的存储容量付费。因此,用户在为可能不需要的存储容量付费。

更详细地,同一对象的各个版本往往相似。例如,在演示文稿和Word文档的情况下,文件的每个版本通常仅稍微更改对象。另一示例是对象的备份副本。备份定期进行(例如每天一次),并且每天产生的副本通常彼此之间的差异不大,甚至可能没有差异。使用当前的版本创建方法,向客户收费的存储器由每个版本的完整副本组成,这是不必要地昂贵的。也就是说,对象版本的定价仅基于对象的大小,而不是基于对象的任何更改的大小或程度,使得,即使仅对对象进行很小的更改,存储修改后的版本的花费与存储对象的先前版本的成本相同。因此,例如,将具有多个版本的对象存储在云中的成本可以比将对象本地存储在支持重复数据删除的存储器中的成本高得多。

附图说明

为了描述可以获得本发明的至少一些优点和特征的方式,将参考在附图中示出的本发明的特定实施方式来更具体的描述本发明的实施方式。应理解,这些附图仅描绘了本发明的典型实施方式,并且因此不应被认为是对本发明的范围的限制,将通过使用附图用附加的特征和细节来描述和解释本发明的实施方式。

图1公开了针对本发明的一些实施方式的示例性操作环境的方面。

图2公开了示例性主机配置的方面。

图3是公开了FaaS的结构和操作的一些一般方面的图。

图4是公开了涉及对象版本控制的FaaS的结构和操作的一些方面的图。

图5是公开了用于将对象插入实现为FaaS的方法的方面的流程图。

图6是公开了用于将对象读取实现为FaaS的方法的方面的流程图。

图7是公开了用于将对象删除实现为FaaS的方法的方面的流程图。

具体实施方式

本发明的实施方式大体上涉及数据保护和可用性。更具体地,本发明的至少一些实施方式涉及用于优化对象版本控制以帮助减少对象消耗的存储量的系统、硬件、软件、计算机可读介质以及方法。

一般而言,本发明的示例性实施方式包括针对对象版本控制服务的函数即服务(Function as a Service,FaaS)方法,其将允许对象的多个版本紧凑化,并且由于客户端的对象所需的存储量减少而允许可能地显著节省成本。如本文所使用的,FaaS包括但不限于云计算服务类别,其提供允许客户开发、运行和管理应用功能的平台,而无需复杂地构建和维护通常与开发和启动app(应用)相关联的基础设施。

本发明范围内的实施方式包括FaaS,其可以利用公共云支持的现有版本控制,但是可以以紧凑得多的格式将数据存储在公共云中。简而言之,使用应用程序接口(API)网关创建对象存储前端,其将成为FaaS服务的入口点。API前端将公开支持对象版本控制的对象存储API。当启用API前端中的函数时,将调用FaaS。该函数通过将调用转发到后端对象存储器来实现API,例如放置/获取/删除(PUT/GET/DELETE)对象。

于是有利地,相对于常规硬件、系统和方法,本发明的实施方式可以提供各种益处和改进。为了说明,本发明的实施方式可以通过提高存储数据的效率来改进计算系统或计算系统的元件的操作。并且,本发明的实施方式通过增加可用于数据存储的空间量来改进计算系统的操作。作为最后的示例,本发明的实施方式通过减少需要存储的数据的量来改进计算系统的操作。根据本申请,本发明的示例性实施方式的各种其他有利方面将是明显的。此外,FaaS实现的至少一些示例性实施方式不需要外部数据库。因此,定价主要基于函数的调用,而不是基于存储成本。因此,就所使用的存储量而言,可以实现显著的成本节省。

A.示例性操作环境的方面

以下是对本发明的各种实施方式的示例性操作环境的方面的讨论。该讨论不旨在以任何方式限制本发明的范围或实施方式的适用性。

在执行数据保护操作(例如备份和/或恢复操作)的情况下,至少一些实施方式可以结合能够实现备份、存档、恢复和/或灾难复原功能的数据保护环境来使用。然而,本发明的范围不限于该示例性数据保护环境,而是更一般地扩展到与创建、保存、备份和/或恢复数据有关的任何数据保护环境。更一般地,本发明的范围包括所公开的概念在其中可以有用的任何操作环境。例如,本发明的实施方式可以与数据备份和恢复平台(例如Dell-EMCNetWorker和Avamar平台)结合使用。

数据保护环境可以采取公共云存储环境或私有云存储环境、本地存储环境以及包括公共和私有元素的混合存储环境的形式,然而本发明的范围也扩展到任何其他类型的数据保护环境。这些示例性存储环境中的任一者都可以部分或完全地虚拟化。该存储环境可以包括数据中心或由数据中心组成,该数据中心是可操作的以服务由一个或多个客户端发起的读取和写入操作。

除了存储环境之外,操作环境还可以包括一个或多个主机设备(例如客户端),每个主机设备主管一个或多个应用。如此,特定客户端可以使用一个或多个应用中的每个应用的一个或多个实例,或者以其他方式与该一个或多个应用中的每个应用的一个或多个实例相关联。通常,客户端使用的应用不限于任何特定功能或功能类型。例如,一些示例性应用和数据包括电子邮件应用(例如MS Exchange)、文件系统以及数据库(例如Oracle数据库和SQL Server数据库)。客户端上的应用可生成期望被保护的新数据和/或经修改的数据。

根据本发明的各种实施方式,本文公开的任何设备或实体可以由一个或多个数据保护策略来保护。可以通过根据本发明的实施方式的数据保护策略来保护的设备的其他示例包括但不限于容器和VM。

操作环境中的任何设备(包括客户端、服务器和主机)都可以采用软件、物理机或虚拟机(VM)的形式、或这些形式的任意组合,然而任何实施方式均不需要特定的设备实现或配置。类似地,数据保护系统组件(例如数据库、存储服务器、存储卷(LUN)、存储磁盘、复制服务、备份服务器、恢复服务器、备份客户端和恢复客户端)例如同样可以采用软件、物理机或虚拟机(VM)的形式,然而任何实施方式均不需要特定的组件实现。在使用VM的情况下,可以使用管理程序或其他虚拟机监视器(VMM)来创建和控制VM。

如本文所使用的,术语“数据”旨在在范围上是广泛的。因此,该术语通过示例而非限制的方式包括(例如可通过数据流分段过程而产生的)数据段、数据分块、数据块、原子数据、电子邮件、任何类型的对象、文件、联系人、目录、子目录、卷以及前述中的一者或多者的任意组。

本发明的示例性实施方式适用于能够存储和处理以模拟、数字或其他形式的各种类型的对象的任何系统。尽管可以通过示例的方式使用例如文档、文件、块或对象的术语,但是本申请的原理不限于表示和存储数据或其他信息的任何特定形式。而是,这些原理等同地适用于能够表示信息的任何对象。

现在特别注意图1,操作环境100可包括数据保护环境,该数据保护环境可以包括数据中心200(例如云数据中心)或由数据中心200组成。数据中心200可以是MicrosoftAzure Blob storage(存储器)、Amazon S3、Dell EMC ECS、或任何其他云存储环境。例如,可以结合本发明的实施方式使用任意的各种FaaS供应商和相关联的API,并且这种FaaS供应商/API包括但不限于Amazon AWS(AWS Lambda API)、Google(Firebase)、Microsoft(Azure-无服务器函数)和IBM(Bluemix)。

在图1的示例中,数据中心200可以包括FaaS模块202,该FaaS模块202可执行本文公开的关于对象存储的优化的任何示例性方法的一部分或全部。数据中心200还可包括各种硬件204,本文公开了硬件的204示例,所述硬件204可用于提供由FaaS模块202执行的服务和/或在FaaS模块202的指导下执行的服务。

因为在某些实施方式中可采用一个或多个服务器的形式的硬件204存在于数据中心200处,所述硬件204需要执行用户代码,例如由FaaS模块202实施,所以本发明的一些示例性实施方式可以称为实现用于优化对象版本控制的无服务器解决方案。也就是说,FaaS模块202可响应于某些事件(例如HTTP命令和API调用)的发生而运行用户代码。在这样的无服务器配置中,运行代码所需的基础资源的管理可在数据中心200处进行而不是在用户站点进行。如此,用户不需要具有或提供运行用户代码所需的资源,例如服务器。因此,用户节省了维护运行用户代码所需的资源的时间和花费。也就是说,运行用户代码所需的基础设施在数据中心200处提供,而不是必须由用户提供。可提供无服务器客户端操作的基础设施的一个示例是Amazon Lambda系统,然而本发明的范围不限于该示例。

数据中心200可支持各种数据保护过程,包括例如数据复制、重复数据删除、克隆、数据备份和数据恢复。如本文中所使用的,术语“备份”旨在被广义地理解,并且包括但不限于部分备份、增量备份、完全备份、克隆、快照、连续复制、以及任何其他类型的数据副本、以及前述的任何组合。前述中的任一者都可以进行重复数据删除,也可以不进行重复数据删除。

继续参考图1,数据中心200可包括对象存储器206或可以其他方式访问对象存储器206。一般而言,在本文中也可以简单称地为对象存储库的对象存储器206可以可检索地存储例如与PUT、GET和DELETE命令及操作有关的对象和对象版本。对象存储器206可以采用混合存储器类型(诸如用于事务型工作负载的固态驱动器(Solid State Drive,SSD)存储器,例如其性能通常根据执行的输入/输出操作(IOPS)的数量来考虑的数据库和启动卷)或由混合存储器类型提供支持。另外地或可替选地,对象存储器206可以将硬盘驱动器(HardDisk Drive,HDD)存储器用于吞吐量密集型工作负载。

如图1所示,操作环境100可包括一个或多个客户端300。通常,客户端300可以是任何计算实体,其可包括执行与一个或多个对象有关的各种过程的硬件和/或软件。这样的过程可包括例如创建、删除和修改对象。这些过程中的一者、一些或全部可以由位于客户端300处的或由客户端300主管的一个或多个应用执行。在一些特定实施方式中,客户端300可以包括备份和恢复服务器或由备份和恢复服务器组成,然而这不是必需的。

结合与对象和对象版本有关的各种过程和操作的执行,客户端300可以包括可由用户操作以向API 400发出API调用的app 302,用户可以通过该方式访问FaaS 202。如此,API 400可用作FaaS 202的入口点。本文中其他地方公开了有关客户端300、API 400和FaaS202的操作的更多细节。

B.示例性主机和服务器配置

现在简要地参考图2,数据中心200、FaaS模块202、硬件204、对象存储器206、客户端300和API 400中的任一者或多者可以采用物理计算设备的形式、或包括物理计算设备、或在物理计算设备上实现、或由物理计算设备主管,物理计算设备的一个示例用500表示。举例来说,一些或全部的FaaS 202功能可在数据中心200处的服务器中实现。并且,在上述元件中的任一者包括虚拟机(VM)或由虚拟机(VM)组成的情况下,该VM可构成图2中公开的物理组件的任何组合的虚拟化。

在图2的示例中,物理计算设备500包括内存502,该内存502可以包括随机存取存储器(RAM)、非易失性随机存取存储器(NVRAM)504、只读存储器(ROM)、和永久性内存、一个或多个硬件处理器506、非暂时性存储介质508、UI(用户界面)设备510和数据存储器512中的一者、一些或全部。物理计算设备500的内存组件502中的一者或多者可以采用固态设备(solid state device,SSD)存储器的形式。并且,提供了包括可执行指令的一个或多个应用514。这样的可执行指令可以采取各种形式,包括例如可执行以执行本文公开的任何方法或其一部分的指令、和/或由任何存储站点/在任何存储站点(无论是在企业本地、或云存储站点、客户端、数据中心或备份服务器)可执行以执行本文公开的与FaaS 202的实施方式有关的功能的指令。并且,这样的指令可以是可执行的以执行本文公开的任何其他操作,包括但不限于读取、写入、备份和恢复、操作和/或任何其他数据保护操作。

C.示例性FaaS操作和配置

现在转到图3,提供了有关FaaS的示例性工作流程的细节。所指示的特定操作是对象插入,但是所指示的一般工作流程也适用于其他操作。在图3的示例中,动作(例如在对象存储库中插入对象)触发函数调用,例如用于处理对象并将对象存储在数据库(DB)中的函数。在一些情况下,触发动作可以例如由客户端或用户通过API(其一个示例在图1中公开)来发起。如此,“插入对象”过程可以包括动作(也就是说,插入对象),并且还可用作触发进一步的函数调用的触发,该函数调用例如用于处理和存储对象的函数调用。该方法可以称为具有链格式或结构。

如图3进一步指示的,动作/触发过程可以以级联或从属形式进行,其中,例如第一动作/触发(例如“插入对象”)可通过触发(也就是说引起导致执行第二动作(即对象的处理)的函数调用(例如“处理对象”)的启用)来引起第二动作的执行。因此,尽管用户可能未明确调用“处理对象”函数调用,但当用户发起引起“处理对象”函数被调用的对象插入动作时,将暗含地调用了“处理对象”函数调用。

在动作/触发过程的每次重现中,动作可被定向到不同的相应实体。因此,在所示的示例中,“插入对象”动作被定向到对象存储库,而与“处理对象”函数调用相关联的动作被定向到SQL数据库。然而,不需要将每个动作都定向到不同的相应实体,而是在一些实施方式中,可将一个或多个动作定向到共同实体。可以根据需要重复该动作/触发方法。

因此,在图3的示例中,与“处理对象”函数调用相关的对象的处理是这种动作:该动作还可用作启用“处理DB”函数调用的触发,从而引起对象在SQL数据库中的处理和存储。这样的处理和存储进而触发“处理DB”函数调用的启用,从而引起对象被处理,然后被存储在分布式数据库(例如Mongo)中。最后,与分布式数据库有关的处理和存储可进而触发“在Bluemix中运行认知算法”函数调用的启用,这导致针对IBM Bluemix环境中的对象运行认知算法。一般来说,IBM Bluemix是支持各种语言和服务的云平台,并使得能够在云计算环境中构建、运行和部署应用。

结合图3的示例,所公开的示例性FaaS工作流程可以在远离用户站点的站点(例如云数据中心)执行,然而所执行的各种功能可以由用户发起。此外,可以通过FaaS模块在云数据中心执行示例性FaaS工作流程的提供。因此,示例性FaaS工作流程和相关联的功能实际上可以称为无服务器的,因为实现工作流程和功能的(一个或多个)服务器不位于用户站点处。

D.示例性对象版本控制服务和架构

现在参考图4,提供了有关一些示例性对象版本控制服务(实现为FaaS)以及相关联的架构的细节。一般地说,图4公开了Amazon Lambda实现中的对象存储版本控制的有效方案,然而此类方案可以在任何对象存储库和任何FaaS服务上实现。简要概括,图4的示例公开了一种方案,其中用户写入常规的Amazon S3 API,然后调用并执行函数,该函数创建差异对象并将其有效地存储在后端存储器中。

在图4的示例中,架构600包括Amazon Lambda实现。但是,本发明的范围不限于该示例性实现。结合架构600,使用函数即服务(FaaS),可实现用于创建用于对象版本控制的服务的方法(参见图5)。通常,对象版本控制服务可以利用公共云支持的现有版本控制,但以更紧凑的格式保留数据。

示例性架构600包括对象存储前端,该对象存储前端包括API 602或由API602组成,该API 602用作FaaS服务的入口点。API 602例如可包括Amazon S3API,然而不一定需要特定的API。API 602可向用户(例如客户端300(参见图2))公开,并且可从客户端app(例如客户端app 302)接收API调用。通常,API 602前端将公开支持对象版本控制的对象存储API。当启用API 602前端中的函数时,将通过从API 602向计算服务平台604(例如AWSLambda)传输执行用户代码的请求来调用函数即服务(FaaS)。计算服务平台604可对API602进行响应反馈,例如指示已经接收到执行用户代码的请求。

然后,计算服务平台604可执行用户代码。例如,FaaS可以通过将函数调用转发到后端对象存储器来实现API调用,例如放置/获取/删除(PUT/GET/DELETE)对象。在图4的特定示例中,用户代码的执行包括在Amazon S3中创建和存储差异对象。如图所示,可以通过API 602针对对象版本1(Obj V1)和对象版本2(Obj V2)发出PUT调用。当启用对象版本控制功能时,相对于对象版本1压缩对象版本2,以形成对象版本2差异(Obj V2 diff),并将其存储在后端对象存储器中。这样,与存储完整的对象版本2相比,需要消耗的后端存储器606的空间将更少。结合图5讨论关于这些和其他示例性过程的更多细节。

E.示例性对象版本控制方法

现在转向图5,本发明的实施方式可以特别好地适于但不限于以有效和高效的方式实现对象PUT操作,特别是当关于对象版本来执行这样的操作时。图5公开了用于对象版本的PUT操作的方法的方面,其中一个示例性方法总体上用700表示。方法700的部分或全部可例如由FaaS模块执行,FaaS模块例如在云数据中心或能够服务于PUT/GET/DELETE调用的任何其他存储站点处。执行方法700所需的硬件和/或软件的提供同样可在云数据中心和/或远离用户站点的其他站点进行,因此,方法700可以称为构成对象版本控制过程的无服务器实现。

通常,当插入对象的新版本时,将从后端对象存储库中检索该对象的先前版本或该对象的第一个非差异版本,然后,将新版本与先前版本相比差异地压缩。如果差异压缩比常规压缩好得多,例如节省了“X”MB的更多存储空间,则放置对象的下一个对象版本的函数将仅存储差异,而不是对象的整个新版本。如果后端对象服务支持版本控制,则可将差异作为对象的新版本输入。如果后端对象服务不支持版本控制,则可将元数据信息作为对象名称的一部分、作为附加到对象的元数据存储、或在某些情况下存储在外部数据库中。

在一些实施方式中,压缩算法可以是文件类型感知。例如,MS Office文档可能已经被压缩,因此除非首先将对象解压缩,否则对象的差异压缩可能是没有益处的。在这种情况下,系统可以首先解压缩对象,然后压缩差异。

现在特别参考图5的示例,方法700可在用户请求将对象插入702(例如可位于数据中心的)后端对象存储器中时开始。可例如由客户端应用请求对象插入702。在一些特定的示例性实施方式中,用户采用PUT请求将对象放置或插入到对象存储库中。在这样的实施方式中,PUT请求用于请求由PUT请求中包括的服务URL标识的对象的创建/更新。

PUT请求进而自动引起将函数调用(例如API网关调用)传输704到数据中心。然后,在数据中心处,函数调用自动启用706该函数以存储在PUT请求中标识的对象。特别地,函数的启用706触发FaaS模块从后端对象存储库中检索708请求插入的对象的先前版本、或该对象的第一个非差异版本。

在已经检索到708先前版本或第一个非差异版本之后,可以相对于先前版本将对象的新版本差异地压缩710。也就是说,将仅存储712对象的两个版本之间的差别(即,差异)。可以将差异作为对象的新版本输入到后端对象存储库中。因为在某些情况下或在许多情况下,差别可能非常小,所以差异压缩可以导致在后端对象存储库中节省大量空间。

在差异压缩710产生或预期产生很小效果的情况下,即,两个对象版本之间的差别很大或超过某个预定阈值的情况下,可以完整地存储第二版本。如本文其他地方所述,如果后端对象存储库不支持版本控制(即,差异存储),则可使用各种其他方法来存储和解释对象的新版本,这例如通过将指示先前版本和新版本之间的差别的元数据附到存储在对象存储库中的对象的先前版本来实现。

如果压缩算法是文件类型感知,则过程710可以包括将对象的存储版本解压缩,然后相对于对象的先前版本对对象的较新版本执行差异压缩。如果差异压缩产生的效果很小,则可以压缩然后存储对象的新版本。

在已经存储712差异或整个新版本之后,方法700然后可以停止714。随后的对象插入请求702然后可以重新启动方法700。因此,仅根据需要进行函数调用,从而潜在地降低了用户的成本。并且,由于可创建和存储差异,因此特定用户在后端对象存储库中消耗的空间量可相对于如果存储了完整的对象版本所需的空间量减少。此外,因为方法700可以以无服务器的方式执行,所以用户不需要对服务函数调用所需的硬件和/或软件执行任何提供或管理。

为了避免从属副本过多的情况,系统可为对象的每“第n个”版本放置(PUT)对象的完整副本。例如,对象的每第10个版本将包括该版本的完整副本。然而,可以替选地使用用于剔除从属副本的任何其他方法。

如本文其他地方所指出的,本发明的实施方式还包括读取过程。因此,现在将注意力转向图6,其公开了用于对象版本的GET操作的方法的方面,其中一个示例性方法总体上用800表示。方法800的部分或全部可以例如由FaaS模块执行,FaaS模块例如在云数据中心或能够服务于PUT/GET/DELETE调用的任何其他存储站点处。执行方法800所需的硬件和/或软件的提供同样可以在云数据中心和/或远离用户站点的其他站点进行,因此,方法800可以称为构成对象读取过程的无服务器实现。通常,在读取对象版本时,读取函数将从后端存储器读取对象。如果对象是差异,则还将检索该对象的先前完整副本并重建该对象。

现在特别参考图6的示例,方法800可以在用户请求读取802后端对象存储器中的对象时开始,该后端对象存储器例如可以位于数据中心处。读取的对象可以例如由客户端应用来请求802。在一些特定的示例性实施方式中,用户使用GET请求从后端对象存储器中读取对象。在这样的实施方式中,GET请求用于请求检索由GET请求中包括的服务URL标识的对象。

GET请求进而自动地引起将函数调用(例如,API网关调用)传输804到数据中心。然后在数据中心处,函数调用自动启用806函数以读取在GET请求中标识的对象。特别地,函数的启用806触发FaaS模块从后端对象存储器中检索808在读取的请求中标识的对象。如果用户请求的版本是差异,则还将检索对象的先前完整副本以及在先前完整副本之后创建的差异。例如,如果存在三个版本,其中一个是完整的而其他是差异的,则将检索最后一个完整版本以及在最后一个完整版本之后创建的任何和所有差异,并且将重建810对象。因此,在没有检索到差异的实施方式中,可以省略过程810。

无论是仅检索对象的先前完整副本,还是利用差异和先前完整副本重建对象,然后都将完整副本或重建对象(如果适用)返回812客户端,并由客户端接收814。然后,过程800可以停止816。

最后参考图7,提供了有关用于对象版本的DELETE操作的方法的方面的细节,其中一个示例性方法总体上用900表示。方法900的部分或全部可以例如由FaaS模块执行,FaaS模块例如在云数据中心或能够服务PUT/GET/DELETE调用的任何其他存储站点处。执行方法900所需的硬件和/或软件的提供同样可在云数据中心和/或远离用户站点的其他站点进行,因此,方法800可称为构成对象读取过程的无服务器实现。

通常,在删除对象版本时,将执行检查以确定该对象是否是其他对象的基础对象。在这种情况下,例如通过将元数据放入对象或重命名对象,可将该对象标记为被删除。一旦删除了对象的所有从属副本,则也可以删除对象本身。为了避免从属副本过多的情况,系统可为对象的每“第n个”版本放置该对象的完整副本。例如,对象的每第10个版本将包含该版本的完整副本。

现在特别参考图7的示例,方法900可以在用户请求从后端对象存储器中删除902对象时开始,该后端对象存储器例如可位于数据中心处。可以例如由客户端应用请求902对象删除。在某些特定示例性实施方式中,用户使用DELETE请求来从后端对象存储器中删除对象。在这种实施方式中,DELETE请求用于请求删除由DELETE请求中包括的服务URL标识的对象。

DELETE请求进而自动引起将函数调用(例如API网关调用)传输904到数据中心。然后在数据中心处,函数调用自动启用906函数以删除在DELETE请求中标识的对象。特别地,函数的启用906触发FaaS模块检查908请求从后端对象存储器中删除的对象是否是任何其他对象的基础对象。如果确定908请求删除的对象不是基础对象,则将该对象从后端对象存储器中删除910,并且过程900停止912。

另一方面,如果确定908请求删除的对象是一个或多个差异版本的基础对象,则该对象可以被标记914为被删除,并且将相应的差异版本删除。可以以任何合适的方式执行这种标记914。例如,通过向对象添加指示其是基础对象的元数据,或者通过以某种方式重命名该对象以指示其是基础对象,可对该对象进行标记914。此时,方法900可以例如返回到906并且监听该函数的进一步启用。可将此重复,直到删除对象的所有从属副本为止,此时也可以删除910对象本身。

应该注意的是,关于图5、图6和图7的各个示例性方法,可以按照这些附图中指示的顺序执行这些方法,然而这不是必须要求的。在其他实施方式中,可以改变任何方法的一个或多个过程的执行顺序。此外,并非必须要求执行方法的所有过程。例如,在一些实施方式中,可以省略过程810。

F.示例性计算设备和相关联的介质

本文所公开的实施方式可以包括使用包括各种计算机硬件或软件模块的专用或通用计算机,如下面更详细讨论的。计算机可以包括处理器和承载指令的计算机存储介质,所述指令在被处理器执行时和/或使得所述指令被处理器执行时,执行本文所公开的方法中的任一者或多者。

如上所述,在本发明的范围内的实施方式还包括计算机存储介质,所述计算机存储介质是用于承载或带有其上存储的计算机可执行指令或数据结构的物理介质。这种计算机存储介质可以是能够被通用或专用计算机访问的任何可用的物理介质。

以示例而不是限制的方式,这种计算机存储介质可以包括硬件存储器,所述硬件存储器诸如固态硬盘/设备(SSD)、RAM、ROM、EEPROM、CD-ROM、闪存、相变内存(“PCM”)、或者其他光盘存储器、磁盘存储器或其他磁存储设备、或者可用于存储以计算机可执行指令或数据结构的形式的程序代码的任何其他硬件存储设备,所述计算机可执行指令或数据结构可以被通用或专用计算机系统访问和执行以实现本发明所公开的功能。以上的组合也应该被包括在计算机存储介质的范围内。这些介质也是非暂时性存储介质的示例,非暂时性存储介质也包含基于云的存储系统和结构,然而本发明的范围未被限定到非暂时性存储介质的这些示例。

计算机可执行指令包括例如使得通用计算机、专用计算机、或专用处理设备执行某一功能或某一组功能的指令和数据。尽管已经用特定于结构特征和/或方法动作的语言描述了主题,应理解的是,所附权利要求中限定的主题不必限定到上述特定特征或动作。相反,本文所公开的特定特征和动作被披露作为实现权利要求的示例形式。

如本文中所使用的,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。本文描述的不同的组件、模块、引擎、和服务可以实现为例如作为单独的线程在计算系统上执行的对象或进程。尽管本文描述的系统和方法可以以软件实现,但是以硬件或者软件和硬件的组合实现也是可以的且可预期的。在本申请中,“计算实体”可以是如本文之前所限定的任何计算系统、或者在计算系统上运行的任何模块或模块组合。

在至少一些实例中,提供硬件处理器,该硬件处理器可操作成执行用于执行方法或过程(诸如本文所公开的方法和过程)的可执行指令。该硬件处理器可以包括或不包括其他硬件、诸如本文所公开的计算设备和系统的元件。

在计算环境方面,本发明的实施方式可以在客户端-服务器环境(无论是网络环境还是本地环境)或任何其他合适的环境中执行。用于本发明的至少一些实施方式的合适的操作环境包括云计算环境,在云计算环境中,客户端、服务器、和其他机器中的一者或多者可以驻留并操作在云环境中。

本发明可以以其他特定形式实现而不脱离其精神或实质特征。所描述的实施方式在所有方面均仅作为说明性的而非限制性的被考虑。因此,本发明的范围由所附权利要求而不是由之前的描述来指示。落入权利要求的等价含义和等价范围内的所有改变均被包含在权利要求的范围内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号