CN111033459B - 针对广域网优化的基于微服务的去重 - Google Patents

针对广域网优化的基于微服务的去重 Download PDF

Info

Publication number
CN111033459B
CN111033459B CN201880038221.4A CN201880038221A CN111033459B CN 111033459 B CN111033459 B CN 111033459B CN 201880038221 A CN201880038221 A CN 201880038221A CN 111033459 B CN111033459 B CN 111033459B
Authority
CN
China
Prior art keywords
data
segments
micro
services
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880038221.4A
Other languages
English (en)
Other versions
CN111033459A (zh
Inventor
格兰特·R·华莱士
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Publication of CN111033459A publication Critical patent/CN111033459A/zh
Application granted granted Critical
Publication of CN111033459B publication Critical patent/CN111033459B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种用于管理对象存储装置的系统,该系统包括前端微服务和后端微服务。前端微服务获得将数据存储在对象存储装置中的请求;将数据划分为多个分片;根据多个分片中的一分片,向后端微服务发送分片分析请求;从多个后端微服务获得分片的未存储在对象存储装置中的分段的列表;并且将由该分段的列表指定的分段添加到压缩区中。后端微服务识别由分片分析请求指定的分片的未存储在对象存储装置中的分段,并根据所识别的分段生成该分片的分段的列表。

Description

针对广域网优化的基于微服务的去重
背景技术
计算设备产生,使用和/或存储数据。数据例如可以是图像、文档、网页、或与任何文件相关联的元数据。数据可本地存储在计算设备的持久性存储装置上,和/或可远程存储在另一个计算设备的持久性存储装置上。
背景技术
计算设备产生,使用和/或存储数据。数据例如可以是图像、文档、网页、或与任何文件相关联的元数据。数据可本地存储在计算设备的持久性存储装置上,和/或可远程存储在另一个计算设备的持久性存储装置上。
发明内容
在一个方面中,本发明的一个或多个实施例的一种用于管理对象存储装置的系统包括前端微服务和后端微服务。前端微服务获得将数据存储在对象存储装置中的请求;将数据划分为多个分片;根据多个分片中的某个分片,向后端微服务发送分片分析请求;从多个后端微服务获得分片的尚未存储在对象存储装置中的分段的列表;并且将由该分段列表指定的分段添加到压缩区中。后端微服务识别由分片分析请求指定的分片的尚未存储在对象存储装置中的分段,并根据识别的分段生成该分片的分段列表。
在一个方面中,本发明的一个或多个实施例的一种管理对象存储装置的方法包括:前端微服务获得将数据存储在对象存储装置中的请求;前端微服务将数据划分为分片;前端微服务将分片分析请求发送至后端微服务;前端微服务从后端微服务获得分片中的尚未存储在对象存储装置中的分片的分段列表;以及前端微服务将由该分段列表指定的分段添加到压缩区中。分片分析请求可包括多个分片中的一分片的草图和多个分片中的该分片的每个分段的指纹。
在一个方面中,本发明的一个或多个实施例的用于管理对象存储装置的方法包括:后端微服务获得分片分析请求;后端微服务识别由该分片分析请求指定的尚未存储在对象存储装置中的分段;后端微服务生成指定每个识别的分段的分段列表;以及后端微服务将该分段列表发送至发送分片分析请求的客户端。分片分析请求可包括数据分片的草图和该分片的每个分段的指纹。
附图说明
下面将参照附图说明本发明的一些实施例。但是,附图仅通过示例的方式示出了本发明的某些方面或实施方式,并不意味着限制权利要求的范围。
图1示出了本发明的一个或多个实施例的系统的示意图;
图2A示出了本发明的一个或多个实施例的对象存储装置的示意图;
图2B示出了本发明的一个或多个实施例的相似性组元数据项的示意图;
图2C示出了本发明的一个或多个实施例的对象模板存储装置的示意图;
图2D示出了本发明的一个或多个实施例的分片模板存储装置的示意图;
图3A示出了本发明的一个或多个实施例的数据的示意图;
图3B示出了图3A所示的本发明的一个或多个实施例的数据的分片的示意图;
图3C示出了图3B所示的本发明的一个或多个实施例的分片的分段的示意图;
图4示出了本发明的一个或多个实施例的在对象存储装置中存储数据的一种方法的流程图;
图5示出了本发明的一个或多个实施例的在对象存储装置中存储数据的第二种方法的流程图;
图6示出了本发明的一个或多个实施例的读取存储在对象存储装置中的数据的一种方法的流程图;
图7示出了本发明的一个或多个实施例的读取存储在对象存储装置中的数据的第二种方法的流程图;
图8示出了本发明的一个或多个实施例的调整分配给前端微服务和/或后端微服务的计算资源量的方法的流程图。
具体实施方式
下面将参照附图说明本发明的具体实施例。在以下说明中,阐述了许多细节作为本发明的示例。本领域技术人员应理解,无需这些具体细节即可实践本发明的一个或多个实施例,并且在不脱离本发明的范围的情况下可做出各种变化或修改。在本文中省略了本领域普通技术人员已知的某些细节,以避免使说明变得模糊。
本发明的实施例总体涉及一种用于管理对象存储装置的方法和系统。更具体地说,所述方法和系统可提供在将数据存储在对象存储装置中之前对数据进行去重的功能。与不对数据进行去重就将数据存储在对象存储装置中的情况相比,在将数据存储在对象存储装置中之前对数据进行去重能增加可存储在对象存储装置中的数据量。与存储数据而不重复数据所需的总存储量相比,对数据进行去重还能通过减少存储去重后的数据所需的总存储量而降低与在对象存储装置中存储数据相关的成本。
在本文所用的“去重”指仅存储尚未存储在存储装置中的数据部分的方法。例如,当在不进行去重的情况下存储每个版本之间仅有很小差异的大型文本文档的多个版本时,存储每个版本所需的持久性存储装置的存储空间量是大致相同的。相反,当在进行去重的情况下存储这些大型文本文档的多个版本时,只有被存储的多个版本的第一个版本需要很大的存储量。在将第一个版本存储在持久性存储装置中之后,随后存储的大型文本文档的版本将在存储在持久性存储装置中之前进行去重,从而与存储首次存储的版本所需的持久性存储装置的存储空间量相比,存储后续存储的版本所需的持久性存储装置的存储空间量要少得多。
在本发明的一个或多个实施例中,所述去重方法可包括:在客户端或可操作地连接至客户端的网络设备上执行的一个或多个前端微服务接收数据,并将该数据划分为分片。可将每个分片的草图和每个分片的每个分段的指纹发送至在一个不同的计算平台上执行的一个或多个后端微服务。不同的计算平台例如可以是云平台或另一个网络设备。
后端微服务可将每个草图与相似性组进行匹配,并使用匹配的相似性组的元数据来标识分片的尚未存储在对象存储装置中的一个或多个分段。后端微服务可将尚未存储在对象存储装置中的分段通知给前端微服务,并将每个匹配的分段的指纹添加至元数据。
前端微服务可将分片中的尚未存储的每个分段添加至一个或多个压缩区,并将该压缩区存储在对象存储装置中。可分别存储可用于重构数据的每个分片的分片模板和对象模板以及数据,以便可读取现在存储在对象存储装置中的数据。
在本发明的一个或多个实施例中,前端微服务的数量和/或后端微服务的数量可以是动态可调的。调整每个微服务的数量能够实现将计算资源高效地分配给去重方法的不同部分。更高效地分配用于在存储装置中存储数据的计算资源能够通过响应于存储速率的变化动态地重新分配保留的计算资源,从而提高存储装置的数据存储吞吐率,消除存储瓶颈,降低存储成本,和/或提供可扩展的数据存储系统。
图1示出了本发明的一个或多个实施例的系统。该系统可包括将数据存储在持久性存储装置(150)的对象存储装置(160)中的客户端(100、101)。该系统可包括去重服务(110),该去重服务与客户端(100、101)协作,以在将来自客户端(100)的数据存储在对象存储装置(160)中之前对该数据进行去重。
客户端(100、101)可以是计算设备。计算设备例如可以是移动电话、平板计算机、便携式计算机、台式计算机、或服务器。客户端(100)的其他例子包括在云中运行的客户端,例如在虚拟机或在公共和/或私有云环境中运行的容器中运行的客户端。在不脱离本发明的情况下,客户端(100、101)可以是其他类型的计算设备和/或平台。
客户端可包括前端微服务(120、121),这些前端微服务从客户端(100、101)获得待存储在对象存储装置(160)中的数据,准备该数据以进行去重,对该数据进行去重,并将该数据存储在对象存储装置(160)中。前端微服务可执行图4所示的方法,以便在对象存储装置(160)中存储数据。
前端微服务(120)还可获得对存储在对象存储装置(160)中的数据的请求。前端微服务可执行图6所示的方法,以便从对象存储装置(160)读取数据。
在本发明的一个或多个实施例中,前端微服务(120)可以是在客户端(100、101)上执行的微服务。在本发明的一个或多个实施例中,前端微服务(120)可在除了客户端(100、101)之外的网络设备上执行。例如,前端微服务(120)可在可操作地连接至客户端、去重服务(110)和/或持久性存储装置(150)或其部分的服务器上执行。在本发明的一个或多个实施例中,前端微服务(120)可以是作为在客户端或其他网络设备上执行的另一个应用的一部分执行的插件模块。在本发明的一个或多个实施例中,前端微服务(120)可在客户端和其他网络设备的异构集合上执行。例如,第一前端微服务可在客户端上执行,而第二前端微服务可在可操作地连接至至少一个第二客户端的另一个网络设备上执行。在不脱离本发明的情况下,前端微服务(120)可在其他计算和/或网络设备上执行。
虽然在图1中未示出,但是所述系统可包括负载均衡器。负载均衡器可从一个或多个客户端接收将数据存储在对象存储装置中和/或获取对象存储装置中的数据的请求,并将该请求分发给前端微服务。根据前端微服务和客户端的拓扑布局,负载均衡器可能在客户端或其他网络设备上执行。例如,负载均衡器可能在执行另一个前端微服务的网络设备上执行。负载均衡器可以可操作地连接至多个客户端,并通过可操作的连接分发将数据存储在对象存储装置中或读取对象存储装置中的数据的客户端请求。在一些实施例中,负载均衡器可以是去重服务(110)的一部分。例如,负载均衡器可位于客户端(100,101)与消息管理器(130)之间。
在本发明的一个或多个实施例中,可动态地调整前端微服务的数量,即,可实例化前端微服务的更多实例,或者可终止前端微服务的现有实例。例如,可动态地调整前端微服务的数量,使前端微服务(120)的请求处理能力与来自客户端的将数据存储在对象存储装置中的请求的速率相匹配。例如,来自客户端的请求的数量可超过可操作地连接至负载均衡器的前端微服务(120)的请求处理能力,因而造成请求积压。在另一个示例中,前端微服务(120)的请求处理能力可能超过来自客户端的请求的数量,因而造成前端微服务空闲。可动态地调整前端微服务的数量,以匹配存储/读取对象存储装置的数据的请求的速率。在不脱离本发明的情况下,每个客户端可具有不同数量的前端微服务。
客户端(100)可以可操作地连接至去重服务(110)、对象存储装置(160)、分片模板存储装置(170)、以及对象模板存储装置(180)。
持久性存储装置(150)可以是硬盘驱动器、固态驱动器、任何其他类型的持久性存储介质、或包括前述存储介质和/或其他类型的持久性存储装置的任何组合的逻辑存储装置。在本发明的一个或多个实施例中,持久性存储装置(150)可以是云存储服务。云存储服务可以是逻辑存储装置,该逻辑存储装置包括可操作地连接和/或统一为形成逻辑存储装置的任意数量的物理存储设备。逻辑存储装置可包括冗余或其他数据完整性特征,以确保任何物理存储元件的故障不会导致存储在逻辑存储装置中的数据发生丢失。
持久性存储装置(150)可包括用于存储来自客户端(100)的数据的对象存储装置(160)、用于存储分片模板的分片模板存储装置(170)、以及用于存储对象模板的对象模板存储装置(180)。在不脱离本发明的情况下,分片模板存储装置(170)和/或对象模板存储装置(180)可位于不同的设备和/或不同的持久性存储装置上。在不脱离本发明的情况下,分片模板存储装置(170)和/或对象模板存储装置(180)可以是对象存储装置(160)的一部分。关于对象存储装置(160)、分片模板存储装置(170)、以及对象模板存储装置(180)的更多详细信息,请参考图2A-2D。
在本文所使用的对象存储装置是将数据作为对象进行管理的数据存储架构。对象存储装置的每个对象可包括数据、元数据和/或对象的全局唯一标识符。对象可包括用于在该对象中存储数据的多个字节。在不脱离本发明的情况下,对象存储装置的每个对象可包括不同数量的字节。在本发明的一个或多个实施例中,对象存储装置不包括文件系统。关于对象存储装置(160)的更详细信息,请参考图2A-2B。
持久性存储装置(150)可以可操作地连接至去重服务(110)和/或客户端(100、101)。
去重服务(110)可与前端微服务协作,以便在将数据存储在对象存储装置中之前进行去重。去重服务可将待存储在对象存储装置中的数据分段与已存储在对象存储装置中的数据分段进行匹配。去重服务可将已存储在对象存储装置中的数据分段通知给前端微服务。去重服务(110)还可响应于来自客户端(100)的前端微服务的对分片的请求提供存储在对象存储装置中的数据分片。
在本发明的一个或多个实施例中,去重服务(110)可以是在云平台上执行的服务,例如平台即服务。在本文所使用的云平台是对一个或多个物理计算系统的聚合物理资源进行抽象的逻辑计算资源。一个或多个物理计算系统可以是包括非暂时性存储装置、存储器(例如随机存取存储器)以及一个或多个处理器的物理设备。非暂时性存储装置可包括指令,当由一个或多个处理器执行时,该指令使云平台能够执行在本申请中说明并在图5和7-8中示出的功能。
在本发明的一个或多个实施例中,去重服务(110)可以是包括非暂时性存储装置、存储器(例如随机存取存储器)和一个或多个处理器的物理设备。物理设备例如可以是服务器。在不脱离本发明的情况下,该物理设备可以是其他类型的计算设备。非暂时性存储装置可包括指令,当由一个或多个处理器执行时,该指令使物理设备能够执行在本申请中说明并在图5和7-8中示出的功能。
去重服务(110)可包括分析待存储在对象存储装置中的数据分片的后端微服务(140)和/或管理客户端(100、101)的前端微服务(120)与后端微服务(140)之间的请求和通知的消息管理器(130)。分片的分析可包括识别已存储在对象存储装置中的一个或多个数据分段,并将分片的尚未存储在对象存储装置中的分段通知给前端微服务(120)。前端微服务(120)和后端微服务(140)还可协作,以将存储在对象存储装置中的数据提供给客户端(100)。下面说明去重服务(110)的每个组件。
消息管理器(130)可有助于在前端微服务(120)与后端微服务(140)之间传输请求和通知。在本发明的一个或多个实施例中,消息管理器(130)可以是在云平台上执行的服务。在本发明的一个或多个实施例中,消息管理器(130)可以是在网络设备上执行的服务,该网络设备是与后端微服务(140)在其上执行的计算资源分离的。消息管理器(130)可包括请求队列(131)和通知队列(132)。下面论述每个队列。
请求队列(131)可以是一个或多个队列,该队列将前端微服务(120)的分析分片的请求进行排队以由后端微服务(140)进行处理,或者将重构存储在对象存储装置中的数据的分片的请求进行排队。请求队列(131)的每个队列可以是先入先出队列。在不脱离本发明的情况下,请求队列(131)的队列可以是其他类型的队列。例如,队列可配置为使供后端微服务(140)处理的某些分片优先于其他分片,或者可根据与分片或分析请求相关的类型、质量或元数据将某些分片或分析请求移至队列的前部。
在本发明的一个或多个实施例中,可分配第一队列以便于将数据存储在对象存储装置中,并且可分配第二队列以便于从对象存储装置读取数据。例如,当正在将数据存储在对象存储装置中时,第一队列可将数据分片发送至后端微服务以进行处理,当正在从对象存储装置读取数据时,第二队列可将重构的数据分片发送至前端微服务以进行处理。第二队列可以是通知队列,该通知队列使后端微服务能够将重构的分片发送至指定的前端微服务。第一队列可以是请求队列,该请求队列使前端微服务能够向任何后端微服务发送分片请求或分片,而无需指定将接收该请求的特定微服务。换句话说,第一队列可将请求发送至任何后端微服务,而第二队列可将重构的分片发送至请求已被后端微服务重构的分片的前端微服务。
通知队列(132)可以是消息传递队列,该消息传递队列使后端微服务(140)和前端微服务(120)能够交换图4-7中所示方法的任何部分的完成确认消息。
后端微服务(140)可以是一个或多个微服务,该微服务分析数据分片以确定是否在对象存储装置中已经存在了分片的任何分段。后端微服务可执行图5所示的方法,以便将去重后的数据存储在对象存储装置中。在本发明的一个或多个实施例中,后端微服务(140)可以是在云平台上执行的微服务。
后端微服务(140)还可获得对存储在对象存储装置(160)中的数据分片的请求。后端微服务可执行图7所示的方法,以便提供存储在对象存储装置中的数据分片。
在本发明的一个或多个实施例中,可动态地调整后端微服务的数量,即,可实例化后端微服务的更多实例,或者可终止后端微服务的现有实例,以使后端微服务(140)的分片处理能力与来自客户端(100)的分析数据分片和/或获取对象存储装置中的数据分片的请求的速率相匹配。可通过执行图8中所示的方法来动态调整后端微服务的数量。
在本发明的一个或多个实施例中,可根据在其上执行去重服务的硬件的处理负载和/或存储器使用负载来调整后端微服务和/或前端微服务。
前端微服务和后端微服务可利用多个存储装置来提供本文所述的功能。图2A-2D示出了可由前端和/或后端微服务利用的存储装置(160、170、180,图1)的结构图。
另外,虽然前端微服务和后端微服务在此被描述为独立的服务,但是本发明的实施例不限于分别执行前端微服务和后端微服务的功能的独立服务。在不脱离本发明的情况下,前端微服务和后端微服务的功能也可由单个服务执行。例如,单个服务可执行本文所述的前端微服务和后端微服务的功能。
图2A示出了本发明的一个或多个实施例的示例性对象存储装置(160)。对象存储装置(160)可存储压缩区(161A、161P)和相似性组元数据(162A-162Q)。
每个压缩区(161A、161P)可存储一个或多个数据分片的一个或多个分段。在本文所使用的压缩区是被聚合和/或压缩的一个或多个数据。
每个相似性组元数据(162A-162Q)可指定与相似性组相关联的元数据。每个相似性组的元数据可指定草图和多个指纹。草图可用于将数据分片与相似性组进行匹配。指纹可用于确定在对象存储装置中是否已存在映射至相似性组的数据分片的分段。
图2B示出了相似性组A元数据(162A)的一个示例。相似性组A元数据(162A)包括草图(163)和多个指纹(164A-164R)。
在本发明的一个或多个实施例中,草图可以是不唯一地标识一个分片的位序列。相反,草图可以是标识一组分片的位序列,该组分片中的每个分片包括相似但唯一的数据或包括相同的数据。换句话说,若每个分片包括相似但不同的数据或包括相同的数据,则多个不同分片的草图可以是相同的位序列。
在本发明的一个或多个实施例中,指纹可以是几乎唯一地标识一个分片的分段的位序列。在本文中所用的“几乎唯一地”意味着指定不同数据的两个分段的每个指纹之间存在冲突的概率与其他不可避免的致命错误原因的概率相比可忽略不计。在本发明的一个或多个实施例中,概率是10-20以下。在本发明的一个或多个实施例中,不可避免的致命错误可能是由自然力(例如龙卷风)引起的。换句话说,指定不同数据的任何两个分段的指纹几乎总是不同的。
相似性组A元数据(162A)的每个指纹(164A-164R)可包括压缩区标识符(165A-165R)。压缩区标识符(165A-165R)可指定在其中存储具有由指纹(164A-164R)所指定的相同指纹的分片的分段的压缩区。换句话说,每个指纹(164A-164R)可指定具有由指纹(164A-164R)指定的指纹的分段的存储位置。
虽然相似性组元数据在此被示为仅包括草图(163)和指纹(164A-164R),但是在不脱离本发明的情况下,相似性组元数据还可包括其他数据。例如,在不脱离本发明的情况下,相似性组可指定压缩区的长度、距压缩区的起点的偏移量、位序列、名称、或其他类型的数据。
请再参考图2A,虽然对象存储装置(160)在此被示为仅包括压缩区和相似性组元数据,但是在不脱离本发明的情况下,在对象存储装置(160)中还可存储其他类型的数据。例如,对象存储装置(160)可包括分片模板存储装置(170)、对象模板存储装置(180)、与每个压缩区相关联的元数据、或其他类型的数据。与每个压缩区相关联的元数据可指定存储在每个压缩区中的多个分段之间的分段边界、指向压缩区的部分的键值、或可标识或指定压缩区的部分的其他数据。
图2D示出了本发明的一个或多个实施例的分片模板存储装置(170)的示意图。分片模板存储装置(170)可包括多个分片模板(171A-171U),这些分片模板包括可用于重构数据分片的数据。每个分片模板(171A-171U)可包括相似性组标识符(172A-172U)和指纹标识符(173A-173U)。
分片模板可具有唯一地标识数据分片的名称,即,分片模板名称A。分片模板可作为图4所示的将数据存储在对象存储装置中的方法的一部分生成。
相似性组标识符(172A-172U)可指定相似性组以及该相似性组的对应元数据(162A-162Q,图2A)。相似性组标识符(172A-172U)例如可以是键值、位序列、或者支持获得相应元数据的其他数据。
指纹标识符(173A-173U)可指定与由相似性组标识符(172A-172U)指定的相似性组对应的相似性组元数据的一个或多个指纹(164A-164R)。指纹标识符(173A-173U)例如可以是一个或多个键值、位序列、或者支持获得相似性组元数据的一个或多个指纹(164A-164R,图2B)的其他数据。获得一个或多个指纹(164A-164R,图2B)可实现获得存储在由压缩区标识符(165A-165R,图2B)指定的压缩区中的分片的分段。
虽然分片模板(171A-171U)在此被示为仅包括相似性组标识符(172A-172U)和指纹标识符(173A-173U),但是不脱离本发明的情况下,分片模板(171A-171U)还可包括其他数据。
图2C示出了本发明的一个或多个实施例的对象模板存储装置(180)。对象模板存储装置(180)可包括多个对象模板(181A-181T),该对象模板包括可用于重构数据对象的数据。数据对象例如可以是先前存储在对象存储装置(160,图2A)中的数据文件或者该数据文件的一部分。每个对象模板(181A-181T)可包括对象名称(182A-182T)和分片标识符(183A-183T)。对象模板可作为图4所示的将数据存储在对象存储装置中的方法的一部分生成。
每个对象模板(181A-181T)的对象名称(182A-182T)可以是存储在对象存储装置中的数据对象的名称。当某个实体通过图6所示的读取数据的方法请求读取存储在对象存储装置中的数据时,可使用对象名称(182A-182T)来标识对象模板(181A-181T)。
分片标识符(183A-183T)可指定存储在分片模板存储装置(170)中的一个或多个分片模板(171A-171U)。可作为图6所示的读取数据的方法的一部分而将分片模板标识符(183A-183T)传递给后端微服务,以获得与每个分片模板对应的每个数据分片。分片标识符(183A-183U)例如可以是一个或多个键值、位序列、或使后端微服务能够获得对应的分片模板的其他数据。
虽然对象模板(181A-181U)在此被描述为仅包括对象名称(182A-182U)和分片标识符(183A-183U),但在不脱离本发明的情况下,对象模板(181A-181U)还可包括其他数据。
图3A-3B分别示出了数据(300)、数据(300)的分片(310、320、330)、以及数据(300)的分片(310)的分段(311、312、313)之间的关系图。作为图4所示的方法的一部分,数据(300)可划分为分段和分片。
图3A示出了本发明的一个或多个实施例的数据(300)的示意图。数据可以是任何格式、任何长度的任何类型的数据。
图3B示出了数据(300)的分片(310、320、330)的示意图。数据的每个分片可包括数据(300)的独立且不同的部分。每个分片可具有不同但相似的长度。例如,每个分片可包括大约8M字节数据,例如,第一分片可包括8.05M字节数据,第二分片可包括7.93M字节数据,等等。在本发明的一个或多个实施例中,每个分片的平均数据量为4M至16M字节。
图3C示出了数据(300)的分片(310)的分段(311、312、313)的示意图。每个分段可包括分片(310)的独立且不同的部分。每个分段可具有不同但相似的长度。例如,每个分段可包括大约8K字节数据,例如,第一分段可包括8.03K字节数据,第二分段可包括7.96K字节数据,等等。在本发明的一个或多个实施例中,每个分段的平均数据量为4K至16K字节。
图4-8示出了本技术的一个或多个实施例的流程图。图4和图5所示的方法可便于将数据存储在对象存储装置中,而图6-7所示的方法可便于从对象存储装置读取存储的数据。图8所示的方法可调整专用于从对象存储装置读取数据和/或向对象存储装置写入数据的计算资源,以便于从对象存储装置读取数据和将数据存储在对象存储装置中。虽然这些流程图中的各个步骤是按顺序示出和描述的,但是本领域普通技术人员应理解,某些或所有步骤也可按不同的顺序执行,可以组合或省略,并且某些或所有步骤可并行执行。此外,可主动或被动地执行这些步骤。
图4示出了本发明的一个或多个实施例的流程图。根据本发明的一个或多个实施例,图4中描绘的方法可用于将数据存储在对象存储装置中。例如,客户端(100、101,图1)的前端微服务可执行图4所示的方法。
在步骤400中,前端微服务可获得待存储在对象存储装置中的数据文件或该数据文件的一部分。该数据文件可由客户端提供给前端微服务。
在本发明的一个或多个实施例中,在客户端上执行的应用可包括作为插件模块的前端微服务,并且将数据文件直接提供给前端微服务。
在本发明的一个或多个实施例中,负载均衡器可接收该数据文件。负载均衡器可将该数据文件添加到待存储在对象存储装置中的数据文件的队列中。当该数据文件到达队列的头部时,负载均衡器可将其提供给前端微服务。
在本发明的一个或多个实施例中,数据文件可被流传输至前端微服务。换句话说,数据文件的各个部分或数据流可按时间顺序发送至前端微服务。负载均衡器可指定客户端的前端微服务来接收流传输的数据文件或数据流,并在流传输的过程中对流传输的数据的各个部分执行图4所示的过程的一个或多个其他步骤。
在步骤405中,前端微服务可将数据文件划分为多个分段。这些分段可以是数据文件的不重叠部分,每个部分具有参照图3C所述的大致相同的长度。
在本发明的一个或多个实施例中,可通过生成数据文件的滚动哈希值来将数据文件划分为多个分段。随着窗口在数据文件中移动,滚动哈希值可以是该窗口的连续哈希值。例如,第一滚动哈希值可以是从数据文件的第一个字节开始的64字节数据的哈希值,第二滚动哈希值可以是从数据文件的第二个字节开始的64字节数据的哈希值,第三滚动哈希值可以是从数据文件的第三个字节开始的64字节数据的哈希值,等等。
然后可通过将滚动哈希值的每个哈希值或其部分与预定位序列进行比较来选择多个分段断点。可将与预定位模式匹配的每个哈希值的起始字节选择为分段断点。每个选定起始字节的位置都可用作分段断点。在本发明的一个或多个实施例中,预定位序列可包括13位。
可通过根据由分段断点指定的位置将数据文件划分为多个部分来生成数据文件的分段。例如,第一分段可开始于数据文件的起始位置,并终止于由第一分段断点指定的位置,第二分段可开始于由第一分段断点指定的位置,并终止于由第二分段断点指定的位置,第三分段可开始于由第二分段断点指定的位置,并终止于由第三分段断点指定的位置,等等。
在步骤410中,前端微服务可将多个分段编组为多个分片。这些分片可以是数据文件的不重叠部分,每个部分具有参照图3B所述的大致相同的长度。
在本发明的一个或多个实施例中,可使用步骤405的滚动哈希值来将分段编组为分片。
可通过将滚动哈希值的每个哈希值或其部分与第二预定位序列进行比较来选择多个分片断点。可将与第二预定位模式匹配的每个哈希值的起始字节选择为分片断点。每个选定起始字节的位置都可用作分片断点。在本发明的一个或多个实施例中,第二预定位序列可包括23位。
可通过根据分片断点所指定的位置聚合分段来生成数据文件的分片。例如,可通过聚合位于数据文件的起始位置与由第一分片断点指定的位置之间的分段来生成第一分片,可通过聚合位于第一分片断点的位置与第二分片断点的位置之间的分段来生成第二分片,可通过聚合位于第二分片断点的位置与第三分片断点的位置之间的所有分段来生成第三分片,等等。
在步骤415中,前端微服务可生成步骤410的每个分片的草图。每个分片的草图可以是如参照图2B所述的草图。可通过生成分片的弱哈希值来获得草图。
在本发明的一个或多个实施例中,弱哈希值可包括通过针对分片的数据执行滚动哈希函数而获得的多个最大和/或最小哈希值。例如,可对分片的数据执行四个滚动哈希函数,并且可聚合四个滚动哈希函数中的每一个的最大哈希值。可生成聚合哈希值的一个哈希值,以获得单个哈希值。该单个哈希值可用作分片的草图。
在本发明的一个或多个实施例中,草图是与已存储在对象存储装置中的具有相似或相同数据的其他分片的草图匹配的位序列。
在步骤420中,前端微服务可生成步骤410的每个分片的每个分段的指纹。每个分段的指纹可以是如参照图2B所述的指纹。
在本发明的一个或多个实施例中,指纹是与具有几乎相同的数据的其他分段的指纹匹配的位序列。
每个指纹可以是如参照图2A所述的位序列。在本发明的一个或多个实施例中,可使用拉宾指纹算法来生成分片的每个分段的每个指纹的分段边界或其部分。在本发明的一个或多个实施例中,可使用加密哈希函数来生成分片的每个分段的每个指纹。该加密哈希函数例如可以是消息摘要(MD)算法或安全哈希算法(SHA)。该消息MD算法可以是MD5。该SHA算法可以是SHA-0、SHA-1、SHA-2或SHA3。在不脱离本发明的情况下,也可使用其他指纹算法。
在步骤425中,前端微服务可将分片分析请求发送至后端微服务。分片分析请求可指定分片的草图以及该分片的每个分段的指纹。前端微服务可发送与步骤410的每个分片对应的独立分片分析请求,直到已经为每个分片发送了分片分析请求为止。例如,如将在步骤445中论述的,可重复步骤425,直到作为分片分析请求的一部分将步骤415和/或420的所有草图和/或指纹发送至后端微服务为止。在本发明的一个或多个实施例中,不向后端微服务发送分片和/或分段。
在本发明的一个或多个实施例中,前端微服务可通过将请求发送到请求队列中来发送每个分片分析请求,该请求队列对每个请求进行排队和/或在一个或多个后端微服务之间对每个请求进行负载平衡。
例如,每个分片分析请求可按顺序载入请求队列中。然后,当某个后端微服务指示其可进行处理时,请求队列可将一个分片分析请求提供给该后端微服务。然后,当第二个后端微服务指示其可进行处理时,请求队列可将第二个分片分析请求提供给该后端微服务。可重复该过程,直到所有分片分析请求都已提供给后端微服务为止。在不脱离本发明的情况下,请求队列可将多个分片分析请求发送至同一个后端微服务。
在步骤430中,前端微服务可接收在对象存储装置中不存在某个分片的分段的指示。该指示例如可以是该分片的分段的指纹列表。
在步骤435中,前端微服务可将步骤430的指示的分段添加到一个或多个压缩区中。
在步骤440中,前端微服务可将一个或多个压缩区存储在对象存储装置中。
在步骤445中,若未将步骤415和/或420的任何草图和/或指纹作为分片分析请求的一部分发送至后端微服务,则所述方法可前进至步骤425。因此,可针对每个分片重复步骤425-440,或者可针对每个分片并行地执行这些步骤。若所有草图已作为一个或多个分片分析请求的一部分发送至后端微服务,则所述方法可前进至步骤450。
在步骤450中,前端微服务可生成对象模板。对象模板可指定例如在图2C的对象模板A(181A)中示出的数据。模板可包括对象名称(即,客户端用于引用数据文件的数据文件名)、以及一个或多个分片标识符(即,用于标识构成数据文件的分片的数据)。
可根据由客户端提供的数据文件名来生成对象名称。在本发明的一个或多个实施例中,客户端和前端微服务可为存储在对象存储装置中的数据文件实施预定命名约定。
可根据前端微服务与后端微服务之间的预定命名约定来生成每个分片标识符。例如,数据文件的第一分片可以是带有分片号的数据文件名,该分片号反映该分片在数据文件中的相对位置,并附加在数据文件名之后。
在不脱离本发明的情况下,可使用其他方法来生成分片标识符。例如,前端微服务可为分片提供任意标识符,并且可将分片标识符与分片一起发送至后端微服务,以确保前端微服务与后端微服务之间的分片命名和标识的一致性。
在步骤455中,前端微服务将对象模板存储在对象存储装置中。该对象存储装置可以是如图2C所示的存储装置。该对象存储装置可以是持久性存储装置。
图5示出了本发明的一个或多个实施例的流程图。根据本发明的一个或多个实施例,图5中描绘的方法可用于将数据存储在对象存储装置中。例如,去重服务(110,图1)的后端微服务可执行图5所示的方法。
在步骤500中,后端微服务可获得分片分析请求。该分片分析请求可包括来自客户端的前端微服务的数据文件的分片的草图和分片的分段的多个指纹。在本发明的一个或多个实施例中,数据文件的分片数据不是由后端微服务获得的。仅发送草图和指纹而不发送分片数据和分段数据本身能够减少在前端微服务与后端微服务之间传输的数据总量,以利于将数据存储在对象存储装置中。
在本发明的一个或多个实施例中,分片分析请求可从消息队列获得,该消息队列在去重服务的多个后端微服务之间对分片分析请求和/或从对象存储装置读取分片的请求进行负载平衡。在本发明的一个或多个实施例中,可通过向消息传递队列通知后端微服务能处理更多请求来获得分片分析请求。在本发明的一个或多个实施例中,后端微服务可从消息队列中读取分片分析请求,并向消息管理器和/或消息队列通知该分片分析请求已被后端微服务读取和/或正在被后端微服务处理。
在步骤510中,后端微服务可将由步骤500的分片分析请求指定的草图与由存储在对象存储装置(160,图2A)中的相似性组元数据之一指定的草图进行匹配。可通过将草图的位序列与存储在对象存储装置中的每个相似性组元数据的每个草图的位序列按顺序地对比来匹配草图,直到找到相同的位序列为止。
在本发明的一个或多个实施例中,若分片的草图与已存储在对象存储装置中的任何相似性组元数据的草图不匹配,则生成一条新的相似性组元数据项,并将其存储在对象存储装置中。
在步骤520中,后端微服务获得与在步骤510中匹配的相似性组相关联的元数据。该相似性组元数据可指定存储在对象存储装置中的分段的多个指纹。后端微服务可通过从对象存储装置中提取元数据和指纹并将它们载入执行后端微服务的云平台或其他计算设备的存储器中来获得元数据和指纹。
在步骤530中,后端微服务将步骤500中的分片分析请求中指定的每个指纹与在步骤520中获得的每个指纹进行比较,以识别分片的尚未存储在对象存储装置中的分段。对于由分析请求指定的与所获得的任何指纹都不匹配的每个指纹,可将对应的分段识别为在对象存储装置中不存在。
在步骤540中,后端微服务可将步骤530的分片的每个识别的分段的指示发送给客户端。可步骤520的匹配的相似性组元数据更新。
更新相似性组元数据可包括根据未匹配的每个指纹添加新的指纹,该指纹指定将在其中存储与该指纹对应的分段的压缩区的压缩区标识符。
在本发明的一个或多个实施例中,前端微服务和后端微服务可利用预定约定来将分段存储在压缩区中,以便后端微服务能在将分段实际添加到压缩区中和/或存储在对象存储装置中之前确定分段的存储位置。在不脱离本发明的情况下,可通过在相似性组元数据中添加、修改或删除其他数据来更新相似性组元数据。在本发明的其他实施例中,可不使用预定命名约定。
在步骤550中,后端微服务可生成分片模板,该分片模板指定步骤510的匹配的相似性组的标识符以及与由步骤500的分片分析请求指定的对象存储装置的相应压缩区相关联的每个指纹。分片模板可以是如图2D所示的分片模板。
在步骤560中,后端微服务可将分片模板存储在分片模板存储装置中。该分片模板存储装置可以是如图2D所示的存储装置,并且可存储在持久性存储装置上。
在本发明的一个或多个实施例中,可根据预定命名约定来设置分片模板名称或标识符。预定命名约定可使前端微服务和后端微服务能够读取存储在对象存储装置中的数据。在本发明的其他实施例中,后端微服务或前端微服务之一可选择分片模板名称或标识符,并将选定的分片模板名称或标识符通知给相应的后端微服务或前端微服务,以便前端微服务和后端微服务能够协作读取存储在对象存储装置中的数据。
图6示出了本发明的一个或多个实施例的流程图。根据本发明的一个或多个实施例,图6中描绘的方法可用于从对象存储装置获得数据。例如,去重服务(110,图1)的前端微服务可执行图6所示的方法。
在步骤600中,前端微服务可从某个实体获得对存储在对象存储装置中的数据文件的请求。该请求可从将来自客户端的请求分发至前端微服务的负载均衡器获得。
在步骤610中,前端微服务可获得由该请求指定的对象模板。该对象模板可以是如图2C所示的对象模板。
在步骤620中,前端微服务可将对由对象模板指定的每个分片的请求发送至一个或多个后端微服务。可通过对请求进行排队的消息管理器将分片请求发送至后端微服务,并且在后端微服务可用时,可将请求分发给后端微服务。
在步骤630中,前端微服务可从一个或多个后端微服务接收由对象模板指定的每个分片。可经由消息管理器通过队列来接收分片。
在步骤640中,前端微服务使用在步骤630中获得的分片和在步骤600中获得的对象模板来组装数据文件或其部分。可通过按对象模板指定的顺序附加每个分片来组装数据文件。
在步骤650中,前端微服务将组装后的数据文件发送至请求该数据文件的实体。
图7示出了本发明的一个或多个实施例的流程图。根据本发明的一个或多个实施例,图7中描绘的方法可用于获得存储在对象存储装置中的数据。例如,去重服务(110,图1)的后端微服务可执行图7所示的方法。
在步骤700中,后端微服务可获得对数据文件的分片的请求。对分片的请求可从消息队列获得,该消息队列在去重服务的多个后端微服务之间对将分片存储在对象存储装置中的请求以及从对象存储装置读取分片的请求进行负载平衡。在本发明的一个或多个实施例中,可通过向消息传递队列通知后端微服务能处理更多请求来获得对分片的请求。该消息队列可响应于通知向后端微服务提供请求。在本发明的一个或多个实施例中,后端微服务可从消息队列中读取对分片的请求,并向消息管理器和/或消息队列通知对分片的请求已被后端微服务读取和/或正在被后端微服务处理。
在步骤710中,后端微服务可从分片模板存储装置获得与分片相关联的分片模板。分片模板可以是如图2D所示的分片模板。可通过将该请求中包含的分片名称或数据与存储在分片模板存储装置中的分片模板的分片模板名称进行匹配来获得分片模板。可通过从分片模板存储装置读取匹配的分片模板来获得分片模板。
在步骤720中,后端微服务可使用由步骤710的分片模板指定的相似性组元数据来获得由分片模板指定的相似性组元数据。
在步骤730中,后端微服务可识别存储在对象存储装置中并由获得的相似性组元数据指定的压缩区。
在步骤740中,后端微服务可从对象存储装置读取步骤730的每个识别的压缩区,以获得分片的分段。
在步骤750中,后端微服务可使用获得的分片的分段和分片模板来组装分片。
在步骤760中,后端微服务可将组装后的分片发送至请求该分片的前端微服务。
图8示出了本发明的一个或多个实施例的流程图。根据本发明的一个或多个实施例,图8中描绘的方法可用于修改专用于管理对象存储装置的数据的资源的数量。图8所示的方法例如可由去重服务(110,图1)执行。
在步骤800中,可监视多个前端微服务与多个后端微服务之间的请求队列中的请求数量。
在步骤810中,可调整前端微服务和/或后端微服务的数量。换句话说,可添加新的微服务实例,或者可终止微服务的执行实例。
在本发明的一个或多个实施例中,如果请求队列中的请求数量超过预定数量,那么可添加后端微服务的新实例。换句话说,如果当前执行的后端微服务的请求处理速率小于向队列添加请求的速率,那么可添加后端微服务的新实例。
在本发明的一个或多个实施例中,如果请求队列中的请求数量小于预定数量,那么可终止当前执行的后端微服务实例。换句话说,如果当前执行的后端微服务的请求处理能力大于向队列添加请求的速率,那么可终止当前执行的后端微服务实例。
在本发明的一个或多个实施例中,如果请求队列中的请求数量小于预定数量,那么可添加前端微服务的新实例。换句话说,如果当前执行的后端微服务的请求处理速率大于向队列添加请求的速率,那么可添加前端微服务的新实例。
在本发明的一个或多个实施例中,如果请求队列中的请求数量大于预定数量,那么可终止当前执行的前端微服务实例。换句话说,如果当前执行的后端微服务的请求处理能力小于向队列添加请求的速率,那么可终止当前执行的前端微服务实例。
本发明的一个或多个实施例可实现下列一种或多种能力:i)将待去重的数据文件的准备工作与对准备好的文件进行去重的工作分别分离到前端微服务和后端微服务中;ii)将前端微服务和后端微服务分别分配给客户端和去重服务;iii)通过添加新的微服务实例和/或终止微服务的现有实例来动态调整用于准备待去重的文件和进行去重的计算资源;iv)在任意数量的计算资源上扩展数据去重;v)通过执行相似性组映射而仅加载存储在对象存储装置中的每个分段的所有指纹的一个子集,从而减少用于对将存储在对象存储装置中的数据进行去重的计算资源;以及vi)通过仅发送数据的草图和/或指纹来识别部分数据是否已存储在对象存储装置中,从而减少用于对将存储在对象存储装置中的数据进行去重的网络带宽。
虽然本发明在上文中是参照有限数量的实施例说明的,但是受益于本公开的本领域技术人员能理解,能够设计出不脱离本文中所公开的本发明的范围的其他实施例。因此,本发明的范围仅由所附权利要求限定。

Claims (17)

1.一种用于管理对象存储装置的系统,包括:
多个前端微服务,其被编程为:
获得将数据存储在对象存储装置中的请求;
将所述数据划分为多个分片;
根据所述多个分片中的一分片,将分片分析请求发送至多个后端微服务,其中所述分片分析请求包括:
所述分片的草图,其中所述草图不唯一地标识所述分片,和所述分片的每个分段的指纹,其中所述指纹几乎唯一地标识每个对应的分段;
从所述多个后端微服务获得所述分片中的未存储在所述对象存储装置中的分段的列表;
将由所述分段的列表指定的分段添加到压缩区中;
所述多个后端微服务,其被编程为:
利用所述分片的草图和所述指纹识别由所述分片分析请求指定的所述分片中的未存储在所述对象存储装置中的分段;和
根据所识别的分段生成所述分段的列表;
负载均衡器,其被编程为:
获得将数据存储在对象存储装置中的请求;
将所述请求分发给所述多个前端微服务,其中所述系统根据所述负载均衡器中的待处理请求的数量动态地调整可用的前端微服务的数量。
2.根据权利要求1所述的系统,还包括:
将分片分析请求从所述前端微服务传递至所述后端微服务的请求队列,
其中所述系统根据所述请求队列中的待处理分片分析请求的数量来动态地调整可用的后端微服务的数量。
3.根据权利要求1所述的系统,其中所述多个前端服务还被编程为:
将所述压缩区存储在所述对象存储装置中,
其中所述对象存储装置是持久性存储装置。
4.根据权利要求1所述的系统,其中将数据存储在所述对象存储装置中的所述请求是从计算设备接收的。
5.根据权利要求4所述的系统,其中所述多个后端微服务在可操作地连接至所述计算设备的云平台上执行。
6.根据权利要求5所述的系统,其中所述多个前端微服务不在所述云平台上执行。
7.一种管理对象存储装置的方法,包括:
由前端微服务获得将数据存储在对象存储装置中的请求;
由所述前端微服务将所述数据划分为多个分片;
由所述前端微服务向多个后端微服务发送分片分析请求,其中所述分片分析请求包括:
所述分片的草图,其中所述草图不唯一地标识所述分片,和
所述分片的每个分段的指纹,其中所述指纹几乎唯一地标识每个对应的分段;
由所述前端微服务获得所述多个分片的所述分片中的未存储在所述对象存储装置中的分段的列表;和
由所述前端微服务将由所述分段的列表指定的分段添加到压缩区中。
8.根据权利要求7所述的方法,其中将所述数据划分为多个分片包括:
将所述数据的一部分划分为多个分段;
将所述多个分段中的一部分分段编组为所述分片;
生成部分地指定所述分片的对象模板;和
将所述对象模板存储在对象模板存储装置中。
9.根据权利要求8所述的方法,其中将所述数据的一部分划分为所述多个分段包括:
生成所述数据的滚动哈希值;
通过将所述滚动哈希值的每个哈希值与预定位模式进行比较来获得多个分段断点;和
根据所述多个分段断点划分所述数据的该部分。
10.根据权利要求9所述的方法,其中将所述多个分段中的一部分分段编组为所述分片包括:
通过将所述滚动哈希值的每个哈希值与第二预定位模式进行比较来确定多个分片断点;
根据所述多个分片断点来识别所述多个分段中的该部分分段;和
将所述多个分段中的所识别的部分分段编组为所述分片,
其中所述第二预定位模式的长度大于所述预定位模式的长度。
11.根据权利要求7所述的方法,还包括:
由所述前端微服务将所述压缩区存储在所述对象存储装置中,
其中所述对象存储装置是持久性存储装置。
12.根据权利要求7所述的方法,其中将数据存储在所述对象存储装置中的所述请求是从计算设备接收的,其中多个前端微服务在所述计算设备上执行,其中所述多个后端微服务不在所述计算设备上执行。
13.根据权利要求8所述的方法,其中数据不被发送至所述多个后端微服务。
14.一种用于管理对象存储装置的方法,包括:
由后端微服务获得分片分析请求,其中所述分片分析请求包括:
数据的所述分片的草图,其中所述草图不唯一地标识所述分片,和
所述分片的多个分段中每个分段的指纹,其中所述指纹几乎唯一地标识每个对应的分段;
由所述后端微服务利用所述数据的所述分片的草图和所述分片的多个分段中每个分段的指纹识别所述多个分段中的未存储在所述对象存储装置中的分段;
由所述后端微服务生成指定所识别的分段中的每个分段的分段的列表;
由所述后端微服务将所述分段的列表发送至发送所述分片分析请求的客户端;
由包括多个所述后端微服务的系统监视向包括所述后端微服务的所述多个后端微服务提供所述分片分析请求的请求队列中的待处理分片分析请求的基数;和
由所述系统根据所述请求队列中所述待处理分片分析请求的基数的监视结果动态地调整所述多个后端微服务的基数。
15.根据权利要求14所述的方法,其中识别所述多个分段中的未存储在所述对象存储装置中的第一组分段和所述多个分段中的存储在所述对象存储装置中的第二组分段包括:
将所述分片的所述草图与多个相似性组中的相似性组进行匹配,其中所述多个相似性组中的每一个相似性组具有不同的草图;
获得与所匹配的相似性组相关联的元数据,所述元数据指定存储在所述对象存储装置中的多个指纹;和
识别由所述分片分析请求指定的与由所述元数据指定的所述多个指纹中的任何指纹都不匹配的指纹。
16.根据权利要求15所述的方法,还包括:
将所述第一组分段的每个指纹添加至所述元数据。
17.根据权利要求14所述的方法,其中所述分片分析请求是从计算设备获得的,其中在所述计算设备上执行的多个前端微服务接收所述分段的列表,其中所述多个后端微服务不在所述计算设备上执行。
CN201880038221.4A 2017-04-13 2018-04-13 针对广域网优化的基于微服务的去重 Active CN111033459B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/486,609 US10795860B1 (en) 2017-04-13 2017-04-13 WAN optimized micro-service based deduplication
US15/486,609 2017-04-13
PCT/US2018/027646 WO2018191712A1 (en) 2017-04-13 2018-04-13 Wan optimized micro-service based deduplication

Publications (2)

Publication Number Publication Date
CN111033459A CN111033459A (zh) 2020-04-17
CN111033459B true CN111033459B (zh) 2024-02-27

Family

ID=62218291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880038221.4A Active CN111033459B (zh) 2017-04-13 2018-04-13 针对广域网优化的基于微服务的去重

Country Status (4)

Country Link
US (1) US10795860B1 (zh)
EP (1) EP3610364B1 (zh)
CN (1) CN111033459B (zh)
WO (1) WO2018191712A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221779B2 (en) * 2019-06-10 2022-01-11 Acronis International Gmbh Method and system for building content for a de-duplication engine
US11429573B2 (en) * 2019-10-16 2022-08-30 Dell Products L.P. Data deduplication system
US11416460B2 (en) * 2020-06-29 2022-08-16 EMC IP Holding Company LLC Source-agnostic service for performing deduplication for an object storage
CN112988153B (zh) * 2021-03-17 2023-12-29 薪得付信息技术(上海)有限公司 基于微前端的数据处理方法及框架
US11893422B2 (en) * 2021-03-29 2024-02-06 EMC IP Holding Company LLC Scale out deduplicated file system as microservices
US20230061902A1 (en) * 2021-08-24 2023-03-02 International Business Machines Corporation Intelligent dataset slicing during microservice handshaking
US20230100935A1 (en) * 2022-10-17 2023-03-30 Intel Corporation Microservice deployments using accelerators

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US8396841B1 (en) * 2010-11-30 2013-03-12 Symantec Corporation Method and system of multi-level and multi-mode cloud-based deduplication
CN103548003A (zh) * 2011-02-11 2014-01-29 赛门铁克公司 用于提高去重复系统备份性能的客户端侧指纹缓存的过程和方法
US9454321B1 (en) * 2014-05-30 2016-09-27 Emc Corporation Workload-driven storage configuration management

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6976134B1 (en) 2001-09-28 2005-12-13 Emc Corporation Pooling and provisioning storage resources in a storage network
IL147073A0 (en) 2001-12-10 2002-08-14 Monosphere Ltd Method for managing the storage resources attached to a data network
CA2384185A1 (en) 2002-04-29 2003-10-29 Ibm Canada Limited-Ibm Canada Limitee Resizable cache sensitive hash table
JP2005165486A (ja) 2003-12-01 2005-06-23 Sony Corp ファイル管理装置、ストレージ管理システム、ストレージ管理方法、プログラム及び記録媒体
US7284093B2 (en) 2004-01-16 2007-10-16 International Business Machines Corporation Self-tuning cache
US7117310B2 (en) 2004-02-18 2006-10-03 Lsi Logic Corporation Systems and methods for cache synchronization between redundant storage controllers
US7818515B1 (en) 2004-08-10 2010-10-19 Symantec Operating Corporation System and method for enforcing device grouping rules for storage virtualization
US8739020B2 (en) 2005-08-03 2014-05-27 Aol Inc. Enhanced favorites service for web browsers and web applications
US7536500B2 (en) 2006-09-29 2009-05-19 Intel Corporation Header blocks for flash memory writes
US7844581B2 (en) * 2006-12-01 2010-11-30 Nec Laboratories America, Inc. Methods and systems for data management using multiple selection criteria
US8214517B2 (en) * 2006-12-01 2012-07-03 Nec Laboratories America, Inc. Methods and systems for quick and efficient data management and/or processing
JP2008217216A (ja) 2007-03-01 2008-09-18 Hitachi Ltd 負荷分散方法及び計算機システム
US7769971B2 (en) 2007-03-29 2010-08-03 Data Center Technologies Replication and restoration of single-instance storage pools
US8768895B2 (en) 2007-04-11 2014-07-01 Emc Corporation Subsegmenting for efficient storage, resemblance determination, and transmission
US8190835B1 (en) 2007-12-31 2012-05-29 Emc Corporation Global de-duplication in shared architectures
WO2009087413A1 (en) 2008-01-08 2009-07-16 Taptu Ltd. Data storage
US8515909B2 (en) 2008-04-29 2013-08-20 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US8204868B1 (en) 2008-06-30 2012-06-19 Symantec Operating Corporation Method and system for improving performance with single-instance-storage volumes by leveraging data locality
US8046551B1 (en) 2008-08-14 2011-10-25 Emc Corporation Techniques for processing I/O requests
US8316064B2 (en) 2008-08-25 2012-11-20 Emc Corporation Method and apparatus for managing data objects of a data storage system
WO2010045262A1 (en) 2008-10-14 2010-04-22 Wanova Technologies, Ltd. Storage-network de-duplication
US8060715B2 (en) 2009-03-31 2011-11-15 Symantec Corporation Systems and methods for controlling initialization of a fingerprint cache for data deduplication
US20110055471A1 (en) 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
WO2011024239A1 (en) 2009-08-31 2011-03-03 Hitachi, Ltd. Storage system having plurality of flash packages
US8321648B2 (en) 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
US8121993B2 (en) 2009-10-28 2012-02-21 Oracle America, Inc. Data sharing and recovery within a network of untrusted storage devices using data object fingerprinting
US8782323B2 (en) 2009-10-30 2014-07-15 International Business Machines Corporation Data storage management using a distributed cache scheme
US9514055B2 (en) 2009-12-31 2016-12-06 Seagate Technology Llc Distributed media cache for data storage systems
US8407193B2 (en) 2010-01-27 2013-03-26 International Business Machines Corporation Data deduplication for streaming sequential data storage applications
US8805967B2 (en) 2010-05-03 2014-08-12 Panzura, Inc. Providing disaster recovery for a distributed filesystem
US8935487B2 (en) 2010-05-05 2015-01-13 Microsoft Corporation Fast and low-RAM-footprint indexing for data deduplication
US8898114B1 (en) 2010-08-27 2014-11-25 Dell Software Inc. Multitier deduplication systems and methods
US8577850B1 (en) * 2010-11-15 2013-11-05 Symantec Corporation Techniques for global data deduplication
US8898119B2 (en) 2010-12-15 2014-11-25 Netapp, Inc. Fingerprints datastore and stale fingerprint removal in de-duplication environments
US8904120B1 (en) 2010-12-15 2014-12-02 Netapp Inc. Segmented fingerprint datastore and scaling a fingerprint datastore in de-duplication environments
US9442671B1 (en) 2010-12-23 2016-09-13 Emc Corporation Distributed consumer cloud storage system
US9280550B1 (en) 2010-12-31 2016-03-08 Emc Corporation Efficient storage tiering
US8676834B2 (en) 2011-02-16 2014-03-18 International Business Machines Corporation Set-level comparisons in dynamically formed groups
US8832394B2 (en) * 2011-03-31 2014-09-09 Emc Corporation System and method for maintaining consistent points in file systems
US8341312B2 (en) 2011-04-29 2012-12-25 International Business Machines Corporation System, method and program product to manage transfer of data to resolve overload of a storage system
US8874863B2 (en) 2011-08-01 2014-10-28 Actifio, Inc. Data replication system
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
US8799467B2 (en) * 2011-09-09 2014-08-05 Microsoft Corporation Storage and communication de-duplication
US8943032B1 (en) 2011-09-30 2015-01-27 Emc Corporation System and method for data migration using hybrid modes
US8949208B1 (en) 2011-09-30 2015-02-03 Emc Corporation System and method for bulk data movement between storage tiers
US8898120B1 (en) 2011-10-09 2014-11-25 Symantec Corporation Systems and methods for distributed data deduplication
US9047304B2 (en) 2011-11-28 2015-06-02 International Business Machines Corporation Optimization of fingerprint-based deduplication
CN103136114B (zh) 2011-11-30 2015-11-25 华为技术有限公司 存储方法及存储装置
EP2810171B1 (en) * 2012-02-02 2019-07-03 Hewlett-Packard Enterprise Development LP Systems and methods for data chunk deduplication
US8732403B1 (en) 2012-03-14 2014-05-20 Netapp, Inc. Deduplication of data blocks on storage devices
CN104246718A (zh) * 2012-05-01 2014-12-24 惠普发展公司,有限责任合伙企业 用于去重复的段组合
CN104541252B (zh) 2012-05-20 2021-02-26 微软技术许可有限责任公司 用于实现基于服务器的分层大容量存储系统的系统和方法
US8918390B1 (en) 2012-06-13 2014-12-23 Emc Corporation Preferential selection of candidates for delta compression
US9164688B2 (en) * 2012-07-03 2015-10-20 International Business Machines Corporation Sub-block partitioning for hash-based deduplication
US9183200B1 (en) 2012-08-02 2015-11-10 Symantec Corporation Scale up deduplication engine via efficient partitioning
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
CN103020174B (zh) 2012-11-28 2016-01-06 华为技术有限公司 相似性分析方法、装置及系统
CN103547329B (zh) * 2012-12-12 2016-11-02 华为技术有限公司 集群系统中数据处理方法及装置
US9274954B1 (en) 2012-12-18 2016-03-01 Netapp, Inc. Caching data using multiple cache devices
GB2509504A (en) * 2013-01-04 2014-07-09 Ibm Accessing de-duplicated data files stored across networked servers
US9317218B1 (en) 2013-02-08 2016-04-19 Emc Corporation Memory efficient sanitization of a deduplicated storage system using a perfect hash function
US9798731B2 (en) 2013-03-06 2017-10-24 Dell Products, Lp Delta compression of probabilistically clustered chunks of data
US9244623B1 (en) 2013-03-13 2016-01-26 Emc Corporation Parallel de-duplication of data chunks of a shared data object using a log-structured file system
US9471500B2 (en) 2013-04-12 2016-10-18 Nec Corporation Bucketized multi-index low-memory data structures
US10592347B2 (en) 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US9424185B1 (en) 2013-06-04 2016-08-23 Emc Corporation Method and system for garbage collection of data storage systems
US9298724B1 (en) 2013-06-14 2016-03-29 Symantec Corporation Systems and methods for preserving deduplication efforts after backup-job failures
US9251160B1 (en) 2013-06-27 2016-02-02 Symantec Corporation Data transfer between dissimilar deduplication systems
US9386086B2 (en) 2013-09-11 2016-07-05 Cisco Technology Inc. Dynamic scaling for multi-tiered distributed systems using payoff optimization of application classes
US9390116B1 (en) 2013-09-26 2016-07-12 Emc Corporation Insertion and eviction schemes for deduplicated cache system of a storage system
US9336143B1 (en) 2013-09-26 2016-05-10 Emc Corporation Indexing a deduplicated cache system by integrating fingerprints of underlying deduplicated storage system
US9678973B2 (en) 2013-10-15 2017-06-13 Hitachi Data Systems Corporation Multi-node hybrid deduplication
US9158633B2 (en) 2013-12-24 2015-10-13 International Business Machines Corporation File corruption recovery in concurrent data protection
US9390281B2 (en) 2013-12-30 2016-07-12 Open Invention Network, Llc Protecting data in insecure cloud storage
US9361032B2 (en) 2014-05-14 2016-06-07 International Business Machines Corporation Management of server cache storage space
US10002048B2 (en) 2014-05-15 2018-06-19 International Business Machines Corporation Point-in-time snap copy management in a deduplication environment
US9250823B1 (en) 2014-05-20 2016-02-02 Emc Corporation Online replacement of physical storage in a virtual storage system
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
WO2016054212A1 (en) 2014-10-01 2016-04-07 Cacheio Llc Efficient metadata in a storage system
US9749428B2 (en) * 2014-10-21 2017-08-29 Twilio, Inc. System and method for providing a network discovery service platform
US10372695B2 (en) * 2014-12-27 2019-08-06 Intel Corporation Technologies for computing rolling hashes
US10175894B1 (en) 2014-12-30 2019-01-08 EMC IP Holding Company LLC Method for populating a cache index on a deduplicated storage system
JP6476932B2 (ja) 2015-02-02 2019-03-06 富士通株式会社 ストレージ装置,制御プログラム,ストレージシステム及びデータ転送方法
US9436392B1 (en) 2015-02-17 2016-09-06 Nimble Storage, Inc. Access-based eviction of blocks from solid state drive cache memory
WO2016176601A1 (en) * 2015-04-30 2016-11-03 Lifespeed, Inc. Massively-scalable, asynchronous backend cloud computing architecture
US9612749B2 (en) 2015-05-19 2017-04-04 Vmware, Inc. Opportunistic asynchronous deduplication using an in-memory cache
US10296219B2 (en) 2015-05-28 2019-05-21 Vmware, Inc. Data deduplication in a block-based storage system
US10104167B2 (en) * 2015-09-28 2018-10-16 Verizon Patent And Licensing Inc. Networking functions in a micro-services architecture
US10261946B2 (en) 2016-01-12 2019-04-16 International Business Machines Corporation Rebalancing distributed metadata
US10078451B1 (en) 2016-01-22 2018-09-18 Red Hat, Inc. Deduplicating data based on boundary identification
US20170220334A1 (en) 2016-01-29 2017-08-03 General Electric Company Mobile management of industrial assets
US10140066B2 (en) * 2016-02-01 2018-11-27 International Business Machines Corporation Smart partitioning of storage access paths in shared storage services
US10445292B1 (en) 2016-03-30 2019-10-15 Veritas Technologies Llc Sharing services between deduplication systems
US10453076B2 (en) 2016-06-02 2019-10-22 Facebook, Inc. Cold storage for legal hold data
US9973573B2 (en) * 2016-06-08 2018-05-15 International Business Machines Corporation Concurrency reduction service
JP6854885B2 (ja) 2016-09-29 2021-04-07 ベリタス テクノロジーズ エルエルシー 重複排除ストレージ内のイメージを修復するためのシステム及び方法
US10735553B2 (en) * 2016-11-23 2020-08-04 Level 3 Communications, Llc Micro-services in a telecommunications network
US10102150B1 (en) 2017-04-28 2018-10-16 EMC IP Holding Company LLC Adaptive smart data cache eviction
US11010300B2 (en) 2017-05-04 2021-05-18 Hewlett Packard Enterprise Development Lp Optimized record lookups

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
CN101599091A (zh) * 2002-10-30 2009-12-09 河床技术股份有限公司 用于存储器中数据压缩的基于内容的分段模式及包括等级分段表示的传输
US8396841B1 (en) * 2010-11-30 2013-03-12 Symantec Corporation Method and system of multi-level and multi-mode cloud-based deduplication
CN103548003A (zh) * 2011-02-11 2014-01-29 赛门铁克公司 用于提高去重复系统备份性能的客户端侧指纹缓存的过程和方法
US9454321B1 (en) * 2014-05-30 2016-09-27 Emc Corporation Workload-driven storage configuration management

Also Published As

Publication number Publication date
WO2018191712A1 (en) 2018-10-18
EP3610364A1 (en) 2020-02-19
CN111033459A (zh) 2020-04-17
EP3610364B1 (en) 2023-09-27
US10795860B1 (en) 2020-10-06

Similar Documents

Publication Publication Date Title
CN111033459B (zh) 针对广域网优化的基于微服务的去重
US10795859B1 (en) Micro-service based deduplication
US11010240B2 (en) Tracking status and restarting distributed replication
US11327799B2 (en) Dynamic allocation of worker nodes for distributed replication
US10761765B2 (en) Distributed object replication architecture
US11349915B2 (en) Distributed replication and deduplication of an object from a source site to a destination site
US9792306B1 (en) Data transfer between dissimilar deduplication systems
CN107426258B (zh) 一种镜像文件的上传和下载方法及装置
US10339112B1 (en) Restoring data in deduplicated storage
US20180285014A1 (en) Data storage method and apparatus
CN110347651B (zh) 基于云存储的数据同步方法、装置、设备及存储介质
US9772909B1 (en) Dynamic proxy server assignment for virtual machine backup
TW201301053A (zh) 基於雲端儲存的檔案處理方法,系統及伺服器叢集系統
WO2015081470A1 (zh) 数据处理设备和数据处理的方法
CN102523290B (zh) 数据的处理方法、设备和系统
US20200065306A1 (en) Bloom filter partitioning
US20180107404A1 (en) Garbage collection system and process
EP3432168B1 (en) Metadata separated container format
US20170124107A1 (en) Data deduplication storage system and process
CN110019056B (zh) 用于云层的容器元数据分离
EP3707610B1 (en) Redundant data storage using different compression processes
US10521400B1 (en) Data reduction reporting in storage systems
WO2018102392A1 (en) Garbage collection system and process
US11836388B2 (en) Intelligent metadata compression
CN116756137B (zh) 大规模数据对象存储的重删方法、系统及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant