CN104106055A - 分布式存储和任务网络中的分布式计算 - Google Patents
分布式存储和任务网络中的分布式计算 Download PDFInfo
- Publication number
- CN104106055A CN104106055A CN201280061203.0A CN201280061203A CN104106055A CN 104106055 A CN104106055 A CN 104106055A CN 201280061203 A CN201280061203 A CN 201280061203A CN 104106055 A CN104106055 A CN 104106055A
- Authority
- CN
- China
- Prior art keywords
- performance element
- dst
- task
- data
- groups
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1028—Distributed, i.e. distributed RAID systems with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
Abstract
方法通过下述操作开始:分散存储(DS)处理模块选择用于执行任务的分布式存储和任务(DST)执行单元集合,并确定数据的分散存储差错编码参数。所述方法以下述操作继续:DS处理模块根据参数来对数据进行分散存储差错编码以产生多个编码数据块,并将所述多个编码数据块成组为多个编码数据块成组;所述方法以下述操作继续:DS处理模块将任务分区为部分任务的集合,将所述多个编码数据块成组中的至少一些输出至DST执行单元集合,以及将部分任务的集合输出至DST执行单元集合以对多个编码数据块成组中的至少一些执行部分任务的集合。
Description
相关专利的交叉引用
本专利申请要求2011年12月12日提交的名称为“Distributed Storage and Task Processing”的待审美国临时申请No. 61/569,387以及2012年12月6日提交的名称为“Distributed Computing in a Distributed Storage and Task Network”的待审美国实用新型申请No. 13/707,428依照35 U.S.C. § 119(e)的优先权,这两个申请出于所有目的以其全部内容通过引用并入本文并构成本专利申请的一部分。
技术领域
本发明总体涉及计算机网络,并且更具体地涉及数据的分散存储和数据的分布式任务处理。
背景技术
计算设备被已知为传送数据、处理数据和/或存储数据。这种计算设备从无线智能电话、膝上型电脑、平板电脑、个人计算机(PC)、工作站、视频游戏设备变化到每天支持数百万web搜索、股票交易或在线购买的数据中心。一般地,计算设备包括中央处理单元(CPU)、存储系统、用户输入/输出接口、外围设备接口和互连总线结构。
如进一步已知,计算机可以通过下述操作来有效地扩展其CPU:使用“云计算”以代表计算机执行一个或多个计算功能(如服务、应用、算法、算术逻辑功能等)。此外,对于大型服务、应用和/或功能,云计算可以由多个云计算资源以分布式方式执行,以改进该服务、应用和/或功能的完成的响应时间。例如,Hadoop是支持通过上千计算机启用应用执行的分布式应用的开放源软件框架。
除云计算外,计算机还可以使用“云存储”作为其存储系统的一部分。如已知的那样,云存储经由其计算机使用户能够将文件、应用等存储在互联网存储系统上。互联网存储系统可以包括使用纠错方案对数据进行编码以用于存储的分散存储系统和/或RAID(独立盘冗余阵列)系统。
附图说明
图1是根据本发明的分布式计算系统的实施例的示意框图;
图2是根据本发明的计算核心的实施例的示意框图;
图3是根据本发明的分布式存储和任务处理的示例的图;
图4是根据本发明的出站分布式存储和/或任务(DST)处理的实施例的示意框图;
图5是根据本发明的用于出站DST处理的方法的示例的逻辑图;
图6是根据本发明的分散差错编码的实施例的示意框图;
图7是根据本发明的分散差错编码的分段处理的示例的图;
图8是根据本发明的分散差错编码的差错编码和切片处理的示例的图;
图9是根据本发明的出站DST处理的成组选择处理的示例的图;
图10是根据本发明的将数据转换为切片组的示例的图;
图11是根据本发明的DST执行单元的实施例的示意框图;
图12是根据本发明的DST执行单元的操作的示例的示意框图;
图13是根据本发明的入站分布式存储和/或任务(DST)处理的实施例的示意框图;
图14是根据本发明的用于入站DST处理的方法的示例的逻辑图;
图15是根据本发明的入站DST处理的解组选择处理的示例的图;
图16是根据本发明的分散差错解码的实施例的示意框图;
图17是根据本发明的分散差错解码的解切片和差错解码处理的示例的图;
图18是根据本发明的分散差错解码的解段处理的示例的图;
图19是根据本发明的将切片组转换为数据的示例的图;
图20是根据本发明的分布式计算系统内的分布式存储的示例的图;
图21是根据本发明的用于存储数据的出站分布式存储和/或任务(DST)处理的操作的示例的示意框图;
图22是根据本发明的图21的示例的分散差错编码的示例的示意框图;
图23是根据本发明的将数据转换为柱切片组以用于存储的示例的图;
图24是根据本发明的DST执行单元的存储操作的示例的示意框图;
图25是根据本发明的用于获取分散差错编码的数目的入站分布式存储和/或任务(DST)处理的操作的示例的示意框图;
图26是根据本发明的图25的示例的分散差错解码的示例的示意框图;
图27是根据本发明的存储多个数据和多个任务码的分布式存储和任务处理网络(DSTN)模块的示例的示意框图;
图28是根据本发明的在所存储的数据上执行任务的分布式计算系统的示例的示意框图;
图29是根据本发明的便于图28的示例的任务分布模块的实施例的示意框图;
图30是根据本发明的分布式计算系统对所存储的数据执行任务的具体示例的图;
图31是根据本发明的图30的示例的存储数据和任务码的分布式存储和任务处理网络(DSTN)模块的示例的示意框图;
图32是根据本发明的图30的示例的DST分配信息的示例的图;
图33至38是根据本发明的执行图30的示例的DSTN模块的示意框图;
图39是根据本发明的图30的示例的将结果信息组合成最终结果的示例的图;
图40是根据本发明的分布式计算系统的另一实施例的示意框图;
图41是图示了根据本发明的数据上的任务的分布式计算的示例的流程图;
图42是根据本发明的分布式计算系统的另一实施例的示意框图;
图43是图示了根据本发明的所存储的数据上的任务的分布式计算的示例的流程图;
图44是图示了根据本发明的数据的编码的图;
图45是图示了根据本发明的生成切片成组的示例的流程图;
图46是图示了根据本发明的获取分布式计算的数据的示例的流程图;
图47是图示了根据本发明的对分布式计算资源进行负载平衡的示例的流程图;以及
图48是图示了根据本发明的对存储数据进行变换的另一示例的流程图。
具体实施方式
图1是分布式计算系统10的实施例的示意框图,分布式计算系统10包括用户设备12和/或用户设备14、分布式存储和/或任务(DST)处理单元16、分布式存储和/或任务网络(DSTN)管理单元18、DST完整性处理单元20以及分布式存储和/或任务网络(DSTN)模块22。分布式计算系统10的部件经由网络24耦合,网络24可以包括:一个或多个无线和/或有线通信系统;一个或多个专用内联网系统和/或公用互联网系统;和/或一个或多个局域网(LAN)和/或广域网(WAN)。
DSTN模块22包括可位于地理上不同的站点处的多个分布式存储和/或任务(DST)执行单元36(例如,一个在芝加哥,一个在密尔沃基等等)。DST执行单元中的每一个可操作以存储分散差错编码的数据和/或以分布式方式在数据上执行一个或多个任务。任务可以是简单功能(例如数学功能、逻辑功能、识别功能、查找功能、搜索引擎功能、替换功能等)、复杂功能(例如压缩、人类和/或计算机语言翻译、文本至语音转换、语音至文本转换等)、多个简单和/或复杂功能、一个或多个算法、一个或多个应用等。
用户设备12至14、DST处理单元16、DSTN管理单元18和DST完整性处理单元20中的每一个包括计算核心26并可以是便携式计算设备和/或固定计算设备。便携式计算设备可以是社交网络设备、游戏设备、蜂窝电话、智能电话、个人数字助理、数字音乐播放器、数字视频播放器、膝上型计算机、手持接收机、平板电脑、视频游戏控制器、和/或包括计算核心的任何其他便携式设备。固定计算设备可以是个人计算机(PC)、计算机服务器、有线机顶盒、卫星接收机、电视机、打印机、传真机、家庭娱乐设备、视频游戏控制台、和/或任何类型的家庭或办公室计算设备。用户设备12和DST处理单元16被配置为包括DST客户端模块34。
关于接口,每个接口30、32和33包括用于支持直接和/或间接经由网络24的一个或多个通信链路的软件和/或硬件。例如,接口30支持用户设备14与DST处理单元16之间(例如,有线、无线、直接、经由LAN、经由网络24等)的通信链路。作为另一示例,接口32支持用户设备12与DSTN模块22之间以及DST处理单元16与DSTN模块22之间的通信链路(例如,有线连接、无线连接、LAN连接、和/或去往/来自网络24任何其他类型的连接)。作为又一示例,接口33支持供DSTN管理单元18和DST完整性处理单元20中的每一个到网络24的通信链路。
分布式计算系统10可操作以支持分散存储(DS)差错编码数据存储和获取,支持对接收数据的分布式任务处理,和/或支持对存储数据的分布式任务处理。一般地以及关于DS差错编码数据存储和获取,分布式计算系统10支持三个主要操作:存储管理、数据存储和获取(其示例将关于图20至26加以讨论)、以及数据存储完整性验证。根据这三个主要功能,可以对数据进行编码,将数据分布式地存储在物理上不同的位置,并后续以可靠且安全的方式获取数据。这种系统容忍可能由个体存储设备故障和/或网络设备故障引起的相当大数目的故障(例如,高达可能大于或等于柱宽度减去解码阈值减一的故障水平),而不丢失数据并且无需冗余或备份的拷贝。此外,系统允许数据被存储达无限期的时间段而没有数据丢失,并以安全的方式这样做(例如,系统非常抗拒在劈切数据方面进行尝试)。
第二个主要功能(即,分布式数据存储和获取)开始和结束于用户设备12至14。例如,如果第二种类型的用户设备14具有数据40要存储在DSTN模块22中,则其经由其接口30将数据40发送至DST处理单元16。接口30工作以模拟传统操作系统(OS)文件系统接口(例如,网络文件系统(NFS)、快闪文件系统(FFS)、盘文件系统(DFS)、文件传送协议(FTP)、基于web的分布式创作和版本(WebDAV)等)和/或块存储接口(例如,小型计算机系统接口(SCSI)、互联网小型计算机系统接口(iSCSI)等)。此外,接口30可以将用户标识码(ID)附着至数据40。
为了支持存储管理,DSTN管理单元18执行DS管理服务。一个这种DS管理服务包括:DSTN管理单元18针对个体的或作为用户设备组的一部分的用户设备12至14建立分布式数据存储参数(例如保险库创建、分布式存储参数、安全性参数、账单信息、用户简档信息等)。例如,DSTN管理单元18针对用户设备、设备组或针对公共访问而协调DSTN模块22的存储器内的保险库(例如,虚拟存储块)的创建,并针对保险库建立每保险库的分散存储(DS)差错编码参数。DSTN管理单元18可以通过更新分布式计算系统10的注册信息来促进多个保险库中的每个保险库的DS差错编码参数的存储。该促进包括:将更新的注册信息存储在DSTN模块22、用户设备12、DST处理单元16和DST完整性处理单元20中的一个或多个中。
DS差错编码参数(例如,或者分散存储差错编码参数)包括数据分段信息(例如,数据(例如文件、文件组、数据块等)被划分为多少段)、段安全性信息(例如每段的加密、压缩、完整性校验和等)、差错编码信息(例如柱宽度、解码阈值、读取阈值、写入阈值等)、切片信息(例如将针对每个数据段创建的编码数据切片的数目)、以及切片安全性信息(例如每编码数据切片的加密、压缩、完整性校验和等)。
DSTN管理模块18创建用户简档信息(例如,访问控制列表(ACL))并将其存储在本地存储器中和/或DSTN模块22的存储器内。用户简档信息包括认证信息、许可和/或安全性参数。安全性参数可以包括加密/解密方案、一个或多个加密密钥、密钥生成方案和/或数据编码/解码方案。
DSTN管理单元18创建特定用户、用户组、保险库访问、公共保险库访问等的账单信息。例如,DSTN管理单元18跟踪用户访问私有保险库和/或公共保险库的次数,其可以用于生成每访问的账单信息。在另一实例中,DSTN管理单元18跟踪由用户设备和/或用户组存储和/或获取的数据量,其可以用于生成每数据量的账单信息。
另一DS管理服务包括:DSTN管理单元18执行网络操作、网络管理和/或网络维护。网络操作包括:认证用户数据分配请求(例如,读取和/或写入请求);管理保险库的创建;建立用户设备的认证证书;从分布式计算系统10添加/删除部件(例如,用户设备、DST执行单元和/或DST处理单元);和/或建立DST执行单元36的认证证书。网络管理包括:针对故障监视设备和/或单元;维护保险库信息;确定设备和/或单元激活状态;确定设备和/或单元加载;和/或确定影响系统10的性能级别的任何其他系统级操作。网络维护包括:促进替换、升级、修复和/或扩充系统10的设备和/或单元。
为了支持分布式计算系统10内的数据存储完整性验证,DST完整性处理单元20执行“坏”或丢失编码数据切片的重新构建。在较高级别处,DST完整性处理单元20通过周期性地尝试从DSTN模块22获取/列出编码数据切片和/或编码数据切片的切片名称来执行重新构建。对于所获取的编码切片,针对由于数据破坏、过时版本等而引起的差错校验它们。如果切片包括差错,则其被标记为“坏”切片。对于未被接收和/或未被列出的编码数据切片,它们被标记为丢失切片。后续使用被视为好切片的其他所获取的编码数据切片来重新构建坏和/或丢失切片,以产生重新构建的切片。重新构建的切片被存储在DSTN模块22的存储器中。注意,DST完整性处理单元20可以是如所示的分离单元,其可以被包括在DSTN模块22中,其可以被包括在DST处理单元16中和/或分布在DST执行单元36当中。
为了支持对接收数据的分布式任务处理,分布式计算系统10具有两个主要操作:对接收数据的DST(分布式存储和/或任务处理)管理和DST执行(其示例将参照图13至19加以讨论)。关于DST管理的存储部分,DSTN管理单元18如前所述那样工作。关于DST管理的任务处理,DSTN管理单元18执行分布式任务处理(DTP)管理服务。一个这种DTP管理服务包括:DSTN管理单元18针对单独的或作为用户设备组的一部分的用户设备12至14建立DTP参数(例如用户保险库附属信息、账单信息、用户任务信息等)。
另一DTP管理服务包括:DSTN管理单元18执行DTP网络操作、网络管理(其实质上与上述相同)和/或网络维护(其实质上与上述相同)。网络操作包括但不限于:认证用户任务处理请求(例如有效请求、有效用户等);认证结果和/或部分结果;建立用户设备的DTP认证证书;从分布式计算系统添加/删除部件(例如,用户设备、DST执行单元和/或DST处理单元);和/或建立DST执行单元的DTP认证证书。
为了支持对存储数据的分布式任务处理,分布式计算系统10具有两个主要操作:对存储数据的DST(分布式存储和/或任务)管理和DST执行。关于对存储数据的DST执行,如果第二种类型的用户设备14具有供DSTN模块22执行的任务请求38,则其经由其接口30将任务请求38发送至DST处理单元16。对存储数据的DST执行的示例将参照图27至39更详细地加以讨论。关于DST管理,其与用于支持对接收数据的分布式任务处理的DST管理基本上类似。
图2是计算核心26的实施例的示意框图,计算核心26包括处理模块50、存储控制器52、主存储器54、视频图形处理单元55、输入/输出(IO)控制器56、外围部件互连(PCI)接口58、IO接口模块60、至少一个IO设备接口模块62、只读存储器(ROM)基本输入输出系统(BIOS)64、以及一个或多个存储接口模块。一个或多个存储接口模块包括通用串行总线(USB)接口模块66、主机总线适配器(HBA)接口模块68、网络接口模块70、闪存接口模块72、硬盘驱动器接口模块74和DSTN接口模块76中的一个或多个。
DSTN接口模块76工作以模拟传统操作系统(OS)文件系统接口(例如网络文件系统(NFS)、基于web的分布式创作和版本(WebDAV)等)和/或块存储器接口(例如小型计算机系统接口(SCSI)、互联网小型计算机系统接口(iSCSI)等)。DSTN接口模块76和/或网络接口模块70可以充当图1的用户设备14的接口30。进一步注意,IO设备接口模块62和/或存储器接口模块可以共同或分别被称作IO端口。
图3是执行分布式存储和任务处理操作的分布式计算系统的示例的图。分布式计算系统包括DST(分布式存储和/或任务)客户端模块34(其可以处于图1的用户设备14中和/或处于图1的DST处理单元16中)、网络24、包括两个或更多个图1的DST执行单元36(其形成图1的DSTN模块22的至少部分)在内的多个DST执行单元1至n、DST管理模块(未示出)和DST完整性验证模块(未示出)。DST客户端模块34包括出站DST处理部80和入站DST处理部82。DST执行单元1至n中的每一个包括控制器86、处理模块84、存储器88、DT(分布式任务)执行模块90和DST客户端模块34。
在操作的示例中,DST客户端模块34接收数据92和要对数据92执行的一个或多个任务94。数据92可以具有任何大小和任何内容,其中,由于大小(例如,大于几太字节)、内容(例如安全数据等)和/或任务(例如,MIPS密集型),期望任务在数据上的分布式处理。例如,数据92可以是一个或多个数字书、公司的电子邮件的拷贝、大规模互联网搜索、视频安全性文件、一个或多个娱乐视频文件(例如电视节目、电影等)、数据文件和/或任何其他大量的数据(例如,大于几太字节)。
在DST客户端模块34内,出站DST处理部分80接收数据90和任务94。出站DST处理部80处理数据90以产生切片成组96。作为这种处理的示例,出站DST处理部80将数据90分区为多个数据分区。对于每个数据分区,出站DST处理部80分散存储(DS)对数据分区进行差错编码,以产生编码数据切片并将编码数据切片成组为切片成组96。此外,出站DST处理部80将任务94分区为部分任务98,其中,部分任务98的数目可以对应于切片成组96的数目。
出站DST处理部80然后经由网络24将切片成组96和部分任务98发送至DSTN模块22的DST执行单元1至n。例如,出站DST处理部80将切片组1和部分任务1发送至DST执行单元1。作为另一示例,出站DST处理部80将切片组#n和部分任务#n发送至DST执行单元#n。
每个DST执行单元36对其切片组96执行其部分任务98以产生部分结果102。例如,对于结果,DST执行单元#1对切片组#1执行部分任务#1以产生部分结果#1。作为更具体示例,切片组#1对应于一系列数字书的数据分区,并且部分任务#1对应于搜索具体短语、记录在何处找到该短语和建立短语计数。在该更具体示例中,部分结果#1包括关于在何处找到该短语的信息并包括短语计数。
在完成生成其相应部分结果102时,DST执行单元36经由网络24将其部分结果102发送至DST客户端模块34的入站DST处理部32。入站DST处理部82处理接收到的部分结果102以产生结果104。继续至前一段落的具体示例,入站DST处理部82将来自DST执行单元36中的每一个的短语计数进行组合,以产生总短语计数。此外,入站DST处理部82在其相应的数据分区内将来自DST执行单元36中的每一个的“在何处找到短语”信息进行组合,以针对该一系列数字书产生“在何处找到短语”信息。
在操作的另一示例中,DST客户端模块34请求DST执行单元36的存储器(例如,DSTN模块的存储器)内的存储数据的获取。在该示例中,任务94是:获取DSTN模块的存储器中存储的数据。相应地,出站DST处理部80将任务94转换为多个部分任务98并将部分任务98发送至相应的DST执行单元1至n。
响应于获取存储数据的部分任务98,DST执行单元36识别对应的编码数据切片100并获取它们。例如,DST执行单元#1接收部分任务#1并响应于此而获取所获取的切片#1。DST执行单元36经由网络24将其相应的所获取的切片100发送至入站DST处理部82。
入站DST处理部82将所获取的切片100转换为数据92。例如,入站DST处理部82对所获取的切片100重新成组,以产生每数据分区的编码切片。入站DST处理部82然后对每数据分区的编码切片进行DS差错解码以产生数据分区。入站DST处理部82对数据分区进行解分区以重新捕获数据92。
图4是经由网络24耦合至图1的DSTN模块22(例如,多个n DST执行单元36)的图1的分布式存储和/或任务(DST)客户端模块34的出站DST处理部80的实施例的示意框图。出站DST处理部80包括数据分区模块110、分散存储(DS)差错编码模块112、成组选择器模块114、控制模块116和分布式任务控制模块118。
在操作的示例中,数据分区模块110将数据92分区为多个数据分区120。分区的数目和分区的大小可以由控制模块116经由控制160基于数据92(例如其大小、其内容等)、要执行的对应任务94(例如简单、复杂、单步、多步等)、DS编码参数(例如柱宽度、解码阈值、写入阈值、段安全性参数、切片安全性参数等)、DST执行单元36的能力(例如处理资源、处理资源的可用性等)来选择,和/或可以由用户、系统管理员或其他操作者(人为的或自动化的)输入。例如,数据分区模块110将数据92(例如,100太字节)分区为100000个数据段,每个在大小上为1千兆字节。可替换地,数据分区模块110将数据92分区为多个数据段,其中,数据段中的一些具有不同的大小、具有相同的大小、或者其组合。
DS差错编码模块112以串行方式、以并行方式和/或其组合接收数据分区120。对于每个数据分区120,DS差错编码模块112根据来自控制模块116的控制信息160来对数据分区120进行DS差错编码,以产生编码数据切片122。DS差错编码包括:将数据分区分段为数据段;段安全性处理(例如加密、压缩、加水印、完整性校验(例如CRC)等);差错编码;切片;和/或每切片的安全性处理(例如加密、压缩、加水印、完整性校验(例如CRC)等)。控制信息160指示DS差错编码的哪些步骤对给定数据分区来说活动,并针对活动步骤指示步骤的参数。例如,控制信息160指示差错编码是活动的,并包括差错编码参数(例如柱宽度、解码阈值、写入阈值、读取阈值、差错编码的类型等)。
组选择模块114将将数据分区的编码切片122成组为切片成组96的集合。切片成组的数目对应于针对特定任务94识别的DST执行单元36的数目。例如,如果针对特定任务94识别出五个DST执行单元36,则组选择模块将数据分区的编码切片122成组为五个切片成组96。组选择模块114经由网络24将切片成组96输出至对应的DST执行单元36。
分布式任务控制模块118接收任务94并将任务94转换为部分任务98的集合。例如,分布式任务控制模块118接收下述任务:找到短语出现在数据(例如,一系列书)中的何处以及数据中的短语使用的总计数。在该示例中,分布式任务控制模块118针对每个DST执行单元36复制任务94以产生部分任务98。在另一示例中,分布式任务控制模块118接收下述任务:找到第一短语出现在数据中的何处、第二短语出现在数据中的何处以及数据中的每个短语使用的总计数。在该示例中,分布式任务控制模块118生成找到和计数第一短语的第一集合部分任务98以及找到和计数第二短语的第二集合部分任务。分布式任务控制模块118将相应的第一和/或第二部分任务98发送至每个DST执行单元36。
图5是用于出站分布式存储和任务(DST)处理的方法的示例的逻辑图,该方法开始于步骤126处,其中,DST客户端模块接收数据和一个或多个对应任务。该方法继续在步骤128处,其中,DST客户端模块确定用于支持一个或多个数据分区的任务的DST单元的数目。例如,DST客户端模块可以基于数据的大小、所请求的任务、数据的内容、预定数目(例如用户指示的、系统管理员确定的等等)、可用DST单元、DST单元的能力、和/或关于数据的分布式任务处理的任何其他因素来确定用于支持任务的DST单元的数目。DST客户端模块可以针对每个数据分区选择相同DST单元,可以针对数据分区选择不同DST单元,或者其组合。
该方法继续在步骤130处,其中,DST客户端模块基于针对分布式任务处理选择的DST单元的数目来确定数据的处理参数。处理参数包括数据分区信息、DS编码参数和/或切片成组信息。数据分区信息包括数据分区的数目、每个数据分区的大小和/或数据分区的组织(例如,分区中的数据块的数目、数据块的大小和数据块的布置)。DS编码参数包括分段信息、段安全性信息、差错编码信息(例如,分散存储差错编码功能参数,包括柱宽度、解码阈值、写入阈值、读取阈值、生成矩阵中的一个或多个)、切片信息和/或每切片的安全性信息。切片成组信息包括关于如何针对所选择的DST单元将编码数据切片布置为组的信息。作为具体示例,如果DST客户端模块确定需要五个DST单元来支持任务,则其确定差错编码参数包括值为5的柱宽度和值为3的解码阈值。
该方法继续在步骤132处,其中,DST客户端模块基于所选择的DST单元和数据处理参数来确定任务分区信息(例如,如何对任务进行分区)。数据处理参数包括处理参数和DST单元能力信息。DST单元能力信息包括DT(分布式任务)执行单元的数目、每个DT执行单元的执行能力(例如,MIPS能力、处理资源(例如,微处理器、CPU、数字信号处理器、协处理器、微控制器、算术逻辑电路和/或其他模拟和/或数字处理电路的量和能力)、处理资源的可用性、存储信息(例如类型、大小、可用性等))和/或与执行一个或多个任务有关的任何信息。
该方法继续在步骤134处,其中,DST客户端模块根据处理参数来处理数据以产生切片成组。该方法继续在步骤136处,其中,DST客户端模块基于任务分区信息来对任务进行分区以产生部分任务的集合。该方法继续在步骤138处,其中,DST客户端模块将切片成组和对应的部分任务发送至所选择的DST单元。
图6是出站分布式存储和任务(DST)处理部的分散存储(DS)差错编码模块112的实施例的示意框图。DS差错编码模块112包括段处理模块142、段安全性处理模块144、差错编码模块146、切片模块148和每切片安全性处理模块150。这些模块中的每一个耦合至控制模块116以从其接收控制信息160。
在操作的示例中,段处理模块142从数据分区模块接收数据分区120并从控制模块116接收分段信息作为控制信息160。分段信息指示段处理模块142要如何对数据分区120进行分段。例如,分段信息基于差错编码方案的解码阈值来指示要对数据分段多少行,基于数据分区120内的数据块的数目和大小来指示对数据分段多少列,并指示多少列要包括在数据段152中。段处理模块142根据分段信息将数据120分段为数据段152。
段安全性处理模块144在被控制模块116使能时基于作为控制信息160从控制模块116接收的段安全性信息来保护数据段152。段安全性信息包括数据压缩、加密、加水印、完整性校验(例如循环冗余校验CRC等)、和/或任何其他类型的数字安全性。例如,当段安全性处理模块144被使能时,其可以对数据段152进行压缩,对压缩的数据段进行加密,并生成加密的数据段的CRC值,以产生安全数据段154。当段安全性处理模块144未被使能时,其将数据段152传递至差错编码模块146,或被设旁路绕过以使得数据段152被提供给差错编码模块146。
差错编码模块146根据作为控制信息160从控制模块116接收的纠错编码参数来对安全数据段154进行编码。纠错编码参数(例如,也被称作分散存储差错编码参数)包括:标识纠错编码方案(例如前向纠错算法、基于里德-梭罗门(Reed-Salomon)的算法、在线编码算法、信息分散算法等)、柱宽度、解码阈值、读取阈值、写入阈值等。例如,纠错编码参数标识具体纠错编码方案,指定值为5的柱宽度,并指定值为3的解码阈值。根据这些参数,差错编码模块146对数据段154进行编码,以产生编码数据段156。
切片模块148根据作为控制信息160接收的纠错编码参数的柱宽度来对编码数据段156进行切片。例如,如果柱宽度为5,切片模块148将编码数据段156切片为5个编码数据切片的集合。由此,对于针对给定数据分区的多个数据段156,切片模块输出编码数据切片158的多个集合。
每切片安全性处理模块150在被控制模块116使能时基于作为控制信息160从控制模块116接收的切片安全性信息来保护每个编码数据切片158。切片安全性信息包括数据压缩、加密、加水印、完整性校验(例如CRC等)、和/或任何其他类型的数字安全性。例如,当每切片安全性处理模块150被使能时,其对编码数据切片158进行压缩,对压缩的编码数据切片进行加密,并生成加密的编码数据切片的CRC值,以产生安全的编码数据切片122。当每切片安全性处理模块150未被使能时,其传递编码数据切片158,或被设旁路绕过以使得编码数据切片158是DS差错编码模块112的输出。注意,控制模块116可以被省略,并且每个模块存储其自身的参数。
图7是分散存储(DS)差错编码模块的段处理的示例的图。在该示例中,段处理模块142接收包括45个数据块(例如,d1至d45)的数据分区120并从控制模块接收分段信息(即,控制信息160)。每个数据块可以具有与其他数据块相同的大小或具有不同的大小。此外,每个数据块的大小可以是几字节到兆字节的数据。如前所述,分段信息指示将数据分区分段为多少行指示将数据分区分段为多少列,并指示多少列要包括在数据段中。
在该示例中,差错编码方案的解码阈值是3;由此,将数据分区划分为的行的数目是3。每一行的列数被设置为15,这基于数据块的数目和大小。按顺序的次序以行和列布置数据分区的数据块(即,第一行包括第一15个数据块;第二行包括第二15个数据块;以及第三行包括最后15个数据块)。
在数据块被布置成期望顺序的次序的情况下,它们基于分段信息而被划分为数据段。在该示例中,数据分区被划分为8个数据段;前7个包括2列的三行,并且最后一个包括1列的三行。注意,第一行的8个数据段是按第一15个数据块的顺序次序的;第二行的8个数据段是按第二15个数据块的顺序次序的;以及第三行的8个数据段是按最后15个数据块的顺序次序的。注意,数据块的数目、数据块成为段的成组以及数据块的大小可以变化,以适应期望的分布式任务处理功能。
图8是图7的对数据段进行分散差错编码的差错编码和切片处理的示例的图。在该示例中,数据段1包括3行,其中每一行被视为用于编码的一个字。由此,数据段1包括用于编码的三个字:包括数据块d1和d2的字1、包括数据块d16和d17的字2以及包括数据块d31和d32的字3。数据段2至7中的每一个包括三个字,其中,每个字包括两个数据块。数据段8包括三个字,其中,每个字包括单个数据块(例如,d15、d30和d45)。
在操作中,差错编码模块146和切片模块148根据作为控制信息160的纠错编码参数将每个数据段转换为编码数据切片的集合。更具体地,当纠错编码参数指示单位矩阵的基于里德-梭罗门的编码算法、5个柱和值为3的解码阈值时,数据段的编码数据切片的集合中的前三个编码数据切片基本上类似于该数据段的对应字。例如,当单位矩阵的基于里德-梭罗门的编码算法被应用于数据段1时,第一集合的编码数据切片(例如,与数据段1相对应)中的第一编码数据切片的内容(DS1_d1&2)基本上类似于第一字的内容(例如,d1 & d2);第一集合的编码数据切片中的第二编码数据切片的内容(DS1_d16&17)基本上类似于第二字的内容(例如, d16 & d17);以及第一集合的编码数据切片中的第三编码数据切片的内容(DS1_d31&32)基本上类似于第三字的内容(例如,d31 & d32)。
第一集合的编码数据切片中的第四和第五编码数据切片的内容(例如,ES1_1和ES1_2)包括基于第一数据段的第一至第三字的纠错数据。在这种编码和切片方案的情况下,获取五个编码数据切片中的任何三个允许数据段被准确地重构。
数据段2至7的编码和切片产生与数据段1的编码数据切片的集合类似的编码数据切片的集合。例如,第二集合的编码数据切片(例如,与数据段2相对应)中的第一编码数据切片的内容(DS2_d3&4)基本上类似于第一字的内容(例如,d3 & d4);第二集合的编码数据切片中的第二编码数据切片的内容(DS2_d18&19)基本上类似于第二字的内容(例如, d18 & d19);以及第二集合的编码数据切片中的第三编码数据切片的内容(DS2_d33&34)基本上类似于第三字的内容(例如,d33 & d34)。第二集合的编码数据切片中的第四和第五编码数据切片的内容(例如,ES1_1和ES1_2)包括基于第二数据段的第一至第三字的纠错数据。
图9是根据来自控制模块的作为控制信息160的组选择信息的出站分布式存储和任务(DST)处理的成组选择处理的示例的图。在该示例中,成组选择模块114将编码数据切片组织为五个切片成组(例如,对分布式存储和任务网络(DSTN)模块的每个DST执行单元来说一个)。作为具体示例,成组选择模块114针对DST执行单元#1创建第一切片成组,其包括编码切片集合中的每一个的第一编码切片。由此,第一DST执行单元接收与数据块1至15相对应的编码数据切片(例如,邻接数据的编码数据切片)。
成组选择模块114还针对DST执行单元#2创建第二切片成组,其包括编码切片集合中的每一个的第二编码切片。由此,第二DST执行单元接收与数据块16至30相对应的编码数据切片。成组选择模块114进一步针对DST执行单元#3创建第三切片成组,其包括编码切片集合中的每一个的第三编码切片。由此,第三DST执行单元接收与数据块31至45相对应的编码数据切片。
成组选择模块114针对DST执行单元#4创建第四切片成组,其包括编码切片集合中的每一个的第四编码切片。由此,第四DST执行单元接收与第一差错编码信息相对应的编码数据切片(例如,差错编码(EC)数据的编码数据切片)。成组选择模块114进一步针对DST执行单元#5创建第五切片成组,其包括编码切片集合中的每一个的第五编码切片。由此,第五DST执行单元接收与第二差错编码信息相对应的编码数据切片。
图10是在先前图上扩充的将数据92转换为切片组的示例的图。如所示,根据分区功能164将数据92分区为多个数据分区(1至x,其中x是大于4的整数)。每个数据分区(或数据组块集合)由编码和成组功能166编码和成组为如前所讨论的切片成组。对于给定数据分区,将切片成组发送至分布式存储和任务(DST)执行单元。从数据分区到数据分区,切片成组到DST执行单元的排序可以变化。
例如,数据分区#1的切片成组被发送至DST执行单元,使得第一DST执行接收编码数据切片集合中的每一个的第一编码数据切片,其对应于第一数据分区的第一邻接数据组块(例如,参照图9),第二DST执行接收编码数据切片集合中的每一个的第二编码数据切片,其对应于第一数据分区的第二邻接数据组块,等等。
针对第二数据分区,可以按与针对第一数据分区而进行的不同的顺序将切片成组发送至DST执行单元。例如,第二数据分区的第一切片成组(例如,切片成组2_1)被发送至第二DST执行单元;第二数据分区的第二切片成组(例如,切片组2_2)被发送至第三DST执行单元;第二数据分区的第三切片成组(例如,切片组2_3)被发送至第四DST执行单元;第二数据分区的第四切片成组(例如,切片组2_4,其包括第一差错编码信息)被发送至第五DST执行单元;以及第二数据分区的第五切片成组(例如,切片组2_5,其包括第二差错编码信息)被发送至第一DST执行单元。
将切片成组发送至DST执行单元的集合的模式可以从数据分区到数据分区在预测模式、随机模式和/或其组合中变化。此外,从数据分区到数据分区,DST执行单元的集合可以改变。例如,对于第一数据分区,可以使用DST执行单元1至5;对于第二数据分区,可以使用DST执行单元6至10;对于第三数据分区,可以使用DST执行单元3至7;等等。还如所示,任务被划分为部分任务,该部分任务协同数据分区的切片成组而被发送至DST执行单元。
图11是DST(分布式存储和/或任务)执行单元的实施例的示意框图,该DST执行单元包括接口169、控制器86、存储器88、一个或多个DT(分布式任务)执行模块90和DST客户端模块34。存储器88具有足够的大小以存储相当大数目的编码数据切片(例如,数千个切片到数亿个切片),并可以包括一个或多个硬盘驱动器和/或一个或多个固态存储设备(例如闪存、DRAM等)。
在存储切片组的示例中,DST执行模块经由接口169来接收切片成组96(例如,切片组#1)。切片成组96包括:针对每分区,邻接数据的编码数据切片或差错编码(EC)数据的编码数据切片。对于切片组#1,DST执行模块接收针对分区#1和#x(以及潜在地,3与x之间的其他数)的邻接数据的编码数据切片,并接收针对分区#2和#3(以及潜在地,3与x之间的其他数)的EC数据的编码数据切片。参照图9来讨论邻接数据的编码数据切片和差错编码(EC)数据的编码数据切片的示例。存储器88根据其从控制器86接收的存储控制信息174来存储切片成组96的编码数据切片。
控制器86(例如处理模块、CPU等)基于部分任务98和分布式计算信息(例如用户信息(例如用户ID、分布式计算许可、数据访问许可等)、保险库信息(例如向用户指派的虚拟存储器、用户组、用于任务处理的暂时存储等)、任务确证信息等)来生成存储控制信息174。例如,控制器86按照分布式计算信息来解释部分任务98,以确定请求者是否被授权执行任务98、是否被授权访问数据和/或是否被授权对该特定数据执行任务。当请求者被授权时,控制器86基于任务98和/或另一输入来确定切片成组96的编码数据切片是要被暂时存储还是要被永久存储。基于前述内容,控制器86生成存储控制信息174,以将切片成组96的编码数据切片写入到存储器88中并指示切片成组96是被永久存储还是被暂时存储。
在切片成组96被存储在存储器88中的情况下,控制器86促进部分任务98的执行。在示例中,控制器86按照DT执行模块90的能力来解释部分任务98。该能力包括MIPS能力、处理资源(例如,微处理器、CPU、数字信号处理器、协处理器、微控制器、算术逻辑电路和/或其他模拟和/或数字处理电路的量和能力)、处理资源的可用性等中的一个或多个。如果控制器86确定DT执行模块90具有足够的能力,则其生成任务控制信息176。
任务控制信息176可以是通用指令(例如,对所存储的切片成组执行任务)或一系列操作代码。在前者实例中,DT执行模块90包括具体被配置(固定或编程)为执行期望任务98的协处理器功能。在后者实例中,DT执行模块90包括一般处理器拓扑,其中,控制器存储与特定任务98相对应的算法。在该实例中,控制器86将算法的操作代码(例如汇编语言、编程语言的源代码、目标代码等)提供给DT执行模块90以用于执行。
根据任务98的性质,DT执行模块90可以生成中间部分结果102,中间部分结果102被存储在存储器88中或被存储在DT执行模块90内的高速缓冲存储器(未示出)中。在任一种情况下,当DT执行模块90完成部分任务98的执行时,其输出一个或多个部分结果102。部分结果102还可以被存储在存储器88中。
如果当控制器86正在解释DT执行模块90的能力是否能够支持部分任务98时,控制器86确定DT执行模块90不能充分地支持任务98(例如不具有恰当的资源、不具有足够的可用资源、可用资源将太慢等等),那么其确定部分任务98是应当被完全卸载还是被部分卸载。
如果控制器86确定部分任务98应当被完全卸载,则其生成DST控制信息178并将其提供给DST客户端模块34。DST控制信息178包括部分任务98、关于切片成组96的存储储存信息、以及分布指令。分布指令指示DST客户端模块34将部分任务98划分为子部分任务172、将切片成组96划分为子切片成组170、以及其他DST执行单元的标识。DST客户端模块34以与图3至10的DST客户端模块34类似的方式工作,以根据分布指令来产生子部分任务172和子切片成组170。
DST客户端模块34经由接口169从任务被卸载到的DST执行单元接收DST反馈168(例如,子部分结果)。DST客户端模块34将子部分结果提供给DST执行单元,DST执行单元处理子部分结果以产生部分结果102。
如果控制器86确定部分任务98应当被部分卸载,则其确定任务98和/或切片成组96的什么部分应当被局部处理以及什么应当被卸载。对于被局部处理的部分,控制器86生成任务控制信息176,如前所讨论。对于被卸载的部分,控制器86生成DST控制信息178,如前所讨论。
当DST客户端模块34从任务的部分被卸载到的DST执行单元接收到DST反馈168(例如,子部分结果)时,其将子部分结果提供给DT执行模块90。DT执行模块90将子部分结果与其所创建的子部分结果一起处理,以产生部分结果102。
当DT执行模块90将部分结果102和/或结果104存储在存储器88中时,存储器88可以被进一步利用以获取所存储的切片100、所存储的结果104、部分结果102中的一个或多个。例如,当部分任务98包括获取请求时,控制器86将存储控制174输出至存储器88以促进切片100和/或结果104的获取。
图12是存储编码数据切片并对其执行任务的分布式存储和任务(DST)执行单元的操作的示例的示意框图。为了存储切片成组1的分区1的编码数据切片,控制器86生成写入命令作为存储控制信息174,使得编码切片被存储在存储器88内的期望位置(例如永久的或暂时的)中。
一旦编码切片被存储,控制器86就将任务控制信息176提供给分布式任务(DT)执行模块90。作为根据任务控制信息176执行任务的第一步骤,DT执行模块90从存储器88获取编码切片。DT执行模块90然后重构数据分区的邻接数据块。如针对该示例所示,数据分区1的重构的邻接数据块包括数据块1至15(例如,d1至d15)。
在邻接数据块被重构的情况下,DT执行模块90对重构的邻接数据块执行任务。例如,任务可以是:针对特定词或短语搜索重构的邻接数据块;识别该特定词或短语出现在重构的邻接数据块中的何处;和/或对该特定词或短语在重构的邻接数据块上的出现进行计数。DST执行单元以类似的方式针对切片成组1中的其他分区的编码数据切片继续。注意,在使用先前讨论的单位矩阵差错编码方案的情况下,如果邻接数据的编码数据切片未被破坏,则其解码是提取数据的相对直截了当的过程。
然而,如果邻接数据的编码数据切片被破坏(或丢失),则其能够通过访问存储被破坏的编码数据切片的编码数据切片集合的其他编码数据切片的其他DST执行单元而重新构建。在该实例中,具有被破坏的编码数据切片的DST执行单元从其他DST执行单元获取集合中的(邻接数据的和差错编码数据的)至少三个编码数据切片(针对该示例回顾,柱宽度是5并且解码阈值是3)。DST执行单元使用DS差错编码参数来对所获取的数据切片进行解码,以重新捕获对应的数据段。DST执行单元然后使用DS差错编码参数来对数据重新编码,以重新构建被破坏的编码数据切片。一旦编码数据切片被重新构建,DST执行单元就如前所述那样工作。
图13是经由网络24耦合至分布式存储和任务网络(DSTN)模块的分布式存储和/或任务(DST)执行单元的DST客户端模块的入站DST处理部82的实施例的示意框图。入站DST处理部82包括解组模块180、DS(分散存储)差错解码模块182、数据解分区模块184、控制模块186和分布式任务控制模块188。注意,控制模块186和/或分布式任务控制模块188可以是与出站DST处理部中的对应处理部分离的模块,或可以是相同的模块。
在操作的示例中,DST执行单元已经完成对应部分任务102对对应切片成组的执行,以产生部分结果102。入站DST处理部82经由分布式任务控制模块188来接收部分结果102。入站DST处理部82然后处理部分结果102以产生一个或多个最终结果104。例如,如果任务是在数据内找到具体词或短语,则部分结果102指示对应的DST执行单元在数据的指定部分中的每一个中的何处找到了该具体词或短语。分布式任务控制模块188将数据的对应部分的个体部分结果102组合成数据作为整体的最终结果104。
在操作的另一示例中,入站DST处理部82从DST执行单元(即,DSTN模块)获取所存储的数据。在该示例中,DST执行单元输出与数据获取请求相对应的编码数据切片100。解组模块180接收所获取的切片100并对其进行解组以产生每数据分区122的编码数据切片。DS差错解码模块182根据DS差错编码参数来对每数据分区122的编码数据切片进行解码,以产生数据分区120。
数据解分区模块184将数据分区12组合成数据92。控制模块186使用去往每个模块的控制信号190来控制将获取切片100转换为数据92。例如,控制模块186将解组信息提供给解组模块180;将DS差错编码参数提供给DS差错解码模块182;以及将解分区信息提供给数据解分区模块184。
图14是分布式存储和任务(DST)客户端模块关于入站DST处理可执行的方法的示例的逻辑图。该方法开始于步骤194处,其中,DST客户端模块接收部分结果。该方法继续在步骤196处,其中,DST客户端模块获取与部分结果相对应的任务。例如,部分结果包括标识进行请求的实体的首部信息,其与所请求的任务相关。
该方法继续在步骤198处,其中,DST客户端模块基于任务来确定结果处理消息。例如,如果任务是在数据内识别特定词或短语,则结果处理信息将指示以积聚数据的对应部分的部分结果,以便产生最终结果。作为另一示例,如果任务是对特定词或短语在数据内的出现进行计数,则处理信息的结果将指示以添加部分结果,以便产生最终结果。该方法继续在步骤200处,其中,DST客户端模块根据结果处理信息来处理部分结果,以产生一个或多个最终结果。
图15是分布式存储和任务(DST)客户端模块的入站DST处理部的解组选择处理的示例的图。一般地,这是图9的出站DST处理部的成组模块的反过程。相应地,对于每个数据分区(例如,分区#1),解组模块从DST执行单元(EU)(例如,DST 1至5)获取对应的切片成组。
如所示,DST执行单元#1提供第一切片成组,其包括编码切片集合中的每一个的第一编码切片(例如,数据块1至15的邻接数据的编码数据切片);DST执行单元#2提供第二切片成组,其包括编码切片集合中的每一个的第二编码切片(例如,数据块16至30的邻接数据的编码数据切片);DST执行单元#3提供第三切片成组,其包括编码切片集合中的每一个的第三编码切片(例如,数据块31至45的邻接数据的编码数据切片);DST执行单元#4提供第四切片成组,其包括编码切片集合中的每一个的第四编码切片(例如,差错编码(EC)数据的第一编码数据切片);以及DST执行单元#5提供第五切片成组,其包括编码切片集合中的每一个的第五编码切片(例如,差错编码(EC)数据的第一编码数据切片)。
解组模块使用如在该示例中所示的控制信号190所控制的解组选择器180来对切片成组进行解组,以产生编码数据切片122的多个集合。每个集合对应于数据分区的数据段。
图16是入站分布式存储和任务(DST)处理部的分散存储(DS)差错解码模块182的实施例的示意框图。DS差错解码模块182包括反每切片安全性处理模块202、解切片模块204、差错解码模块206、反段安全性模块208、解分段处理模块210和控制模块186。
在操作的示例中,反每切片安全性处理模块202在被控制模块186使能时基于作为从控制模块186接收的控制信息190(例如,参照图6讨论的切片安全性信息的补充)而接收的切片解安全性信息来对每个编码数据切片122进行解保护。切片安全性信息包括数据解压缩、解密、解水印、完整性校验(例如CRC等)验证和/或任何其他类型的数字安全性。例如,当反每切片安全性处理模块202被使能时,其验证每个编码数据切片122的完整性信息(例如,CRC值),其对每个验证后的编码数据切片进行解密,并对每个解密后的编码数据切片进行解压缩,以产生切片编码数据158。当反每切片安全性处理模块202未被使能时,其传递编码数据切片122作为切片编码数据158,或被设旁路绕过以使得所获取的编码数据切片122被提供作为切片编码数据158。
解切片模块204根据作为控制信息190从控制模块186接收的纠错编码参数的柱宽度将切片编码数据158解切片为编码数据段156。例如,如果柱宽度是5,则解切片模块204将5个编码数据切片的集合解切片为编码数据段156。差错解码模块206根据作为控制信息190从控制模块186接收的纠错解码参数来对编码数据段156进行解码,以产生安全数据段154。纠错解码参数包括标识纠错编码方案(例如前向纠错算法、基于里德-梭罗门的算法、信息分散算法等)、柱宽度、解码阈值、读取阈值、写入阈值等。例如,纠错解码参数标识具体纠错编码方案,指定值为5的柱宽度,并指定值为3的解码阈值。
反段安全性处理模块208在被控制模块186使能时基于作为控制信息190从控制模块186接收的段安全性信息来对所保护的数据段154进行解保护。段安全性信息包括数据解压缩、解密、解水印、完整性校验(例如CRC等)验证和/或任何其他类型的数字安全性。例如,当反段安全性处理模块208被使能时,其验证每个安全数据段154的完整性信息(例如CRC值),其对每个验证后的所保护的数据段进行解密,并对每个解密后的安全数据段进行解压缩,以产生数据段152。当反段安全性处理模块208未被使能时,其传递解码数据段154作为数据段152,或被设旁路绕过。
解段处理模块210接收数据段152,并从控制模块186接收作为控制信息190的解分段信息。解分段信息指示解段处理模块210要如何将数据段152解段为数据分区120。例如,解分段信息指示要如何重新布置数据段的行和列以产生数据分区120。
图17是分散差错解码模块的解切片和差错解码处理的示例的图。解切片模块204根据控制信息190切片来接收每个数据段的至少解码阈值数目的编码数据切片158,并提供编码数据156。在该示例中,解码阈值是3。由此,编码数据切片158的每个集合被示为每数据段具有3个编码数据切片。解切片模块204可以接收每数据段的3个编码数据切片,这是由于关联的分布式存储和任务(DST)客户端模块请求了获取每段的仅3个编码数据切片或选择了每数据段的所获取的编码数据切片中的3个。如所示,基于先前参照图8讨论的单位矩阵编码,编码数据切片可以是基于数据的编码数据切片(例如,DS1_d1和d2)或基于差错码的编码数据切片(例如,ES3_1)。
差错解码模块206根据控制信息190的纠错解码参数来对每个数据段的编码数据156进行解码,以产生数据段154。在该示例中,数据段1包括3个行,其中,每个行被视为用于编码的1个词。由此,数据段1包括3个词:包括数据块d1和d2的词1;包括数据块d16和d17的词2;以及包括数据块d31和d32的词3。数据段2至7中的每一个包括3个词,其中,每个词包括2个数据块。数据段8包括3个词,其中,每个词包括单个数据块(例如,d15、d30和d45)。
图18是入站分布式存储和任务(DST)处理的解段处理的示例的图。在该示例中,解段处理模块210接收数据段152(例如,1至8),并根据控制信息190的解分段信息将数据段的数据块重新布置成行和列,以产生数据分区120。注意,行数基于解码阈值(例如,在该具体示例中为3),并且列数基于数据块的数目和大小。
解分段模块210将数据块的行和列转换为数据分区120。注意,每个数据块可以具有与其他数据块相同的大小,或具有不同大小。此外,每个数据块的大小可以为几字节到几兆字节的数据。
图19是在入站分布式存储和任务(DST)处理部内将切片组转换为数据92的示例的图。如所示,数据92由多个数据分区(1至x,其中,x是大于4的整数)重构。使用解组和解码功能212和解分区功能214从如前所讨论的切片成组解码和重新成组每个数据分区(或数据的组块集合)。对于给定数据分区,从DST执行单元接收切片成组(例如,每数据段的至少解码阈值个编码数据切片)。从数据分区到数据分区,从DST执行单元接收的切片成组的排序可以变化,如参照图10所讨论。
图20是分布式计算系统内的分布式存储和/或获取的示例的图。分布式计算系统包括经由网络24耦合至分布式存储和/或任务处理网络(DSTN)模块或多个DSTN模块的多个分布式存储和/或任务(DST)处理客户端模块34(示出一个)。DST客户端模块34包括出站DST处理部80和入站DST处理部82。DSTN模块包括多个DST执行单元。每个DST执行单元包括控制器86、存储器88、一个或多个分布式任务(DT)执行模块90、和DST客户端模块34。
在数据存储的示例中,DST客户端模块34具有其期望分布式地存储在DSTN模块中的数据92。数据92可以是文件(例如视频、音频、文本、图形等)、数据对象、数据块、对文件的更新、对数据块的更新等。在该实例中,出站DST处理模块80将数据92转换为编码数据切片216,如将参照图21至23进一步描述。出站DST处理模块80经由网络24向DST执行单元进行发送以用于存储,如参照图24进一步描述。
在数据获取的示例中,DST客户端模块34向DST执行单元发出针对期望数据92的获取请求。获取请求可以寻址存储期望数据的编码数据切片的每个DST执行单元,寻址解码阈值数目的DST执行单元,寻址读取阈值数目的DST执行单元,或寻址某其他数目的DST执行单元。响应于该请求,每个所寻址的DST执行单元获取期望数据的其编码数据切片100,并经由网络24将其发送至入站DST处理部82。
当对于每个数据段,入站DST处理部82接收到至少解码阈值数目的编码数据切片100时,其将编码数据切片100转换为数据段。入站DST处理部82积聚数据段以产生所获取的数据92。
图21是经由网络24耦合至分布式存储和任务网络(DSTN)模块(例如,多个分布式存储和/或任务(DST)执行单元)的DST客户端模块的出站DST处理部80的实施例的示意框图。出站DST处理部80包括数据分区模块110、分散存储(DS)差错编码模块112、组选择模块114、控制模块116和分布式任务控制模块118。
在操作的示例中,数据分区模块110被设旁路绕过,使得数据92被直接提供给DS差错编码模块112。控制模块116通过将旁路220消息输出至数据分区模块110来协调数据分区模块110的旁路绕过。
DS差错编码模块112以串行方式、并行方式和/或其组合来接收数据92。DS差错编码模块112根据来自控制模块116的控制信息160来对数据进行DS差错编码,以产生编码数据切片218。DS差错编码包括:将数据92分段为数据段;段安全性处理(例如加密、压缩、加水印、完整性校验(例如CRC)等)、差错编码、切片和/或每切片的安全性处理(例如加密、压缩、加水印、完整性校验(例如CRC)等)。控制信息160指示DS差错编码的哪些步骤对数据92来说活动,并针对活动的步骤指示步骤的参数。例如,控制信息160指示差错编码是活动的,并包括差错编码参数(例如柱宽度、解码阈值、写入阈值、读取阈值、差错编码的类型等)。
组选择模块114将数据段的编码切片218成组为切片216的柱。柱的数目对应于DS差错编码参数的柱宽度。在该示例中,分布式任务控制模块118促进存储请求。
图22是图21的示例的分散存储(DS)差错编码模块112的示例的示意框图。DS差错编码模块112包括段处理模块142、段安全性处理模块144、差错编码模块146、切片模块148和每切片安全性处理模块150。这些模块中的每一个耦合至控制模块116以从其接收控制信息160。
在操作的示例中,段处理模块142接收数据92,并从控制模块116接收作为控制信息160的分段信息。分段信息指示段处理模块要如何对数据进行分段。例如,分段信息指示每个数据段的大小。段处理模块142根据分段信息将数据92分段为数据段152。
段安全性处理模块144在被控制模块116使能时基于作为控制信息160从控制模块116接收的段安全性信息来保护数据段152。段安全性信息包括数据压缩、加密、加水印、完整性校验(例如CRC等)和/或任何其他类型的数字安全性。例如,当段安全性处理模块144被使能时,其压缩数据段152,对压缩后的数据段进行加密,并生成加密后的数据段的CRC值,以产生安全的数据段。当段安全性处理模块144未被使能时,其将数据段152传递至差错编码模块146,或被设旁路绕过以使得数据段152被提供给差错编码模块146。
差错编码模块146根据作为控制信息160从控制模块116接收的纠错编码参数来对安全的数据段进行编码。纠错编码参数包括标识纠错编码方案(例如前向纠错算法、基于里德-梭罗门的算法、信息分散算法等)、柱宽度、解码阈值、读取阈值、写入阈值等。例如,纠错编码参数标识具体纠错编码方案,指定值为5的柱宽度,并指定值为3的解码阈值。根据这些参数,差错编码模块146对数据段进行编码以产生编码数据段。
切片模块148根据纠错编码参数的柱宽度来对编码数据段进行切片。例如,如果柱宽度是5,则切片模块将编码数据段切片为5个编码数据切片的集合。由此,对于多个数据段,切片模块148在如所描述的编码和切片功能222内输出如所示的编码数据切片的多个集合。
每切片安全性处理模块150在被控制模块116使能时,基于作为控制信息160从控制模块116接收的切片安全性信息来保护每个编码数据切片。切片安全性信息包括数据压缩、加密、加水印、完整性校验(例如CRC等)和/或任何其他类型的数字安全性。例如,当每切片安全性处理模块150被使能时,其可以压缩编码数据切片,对压缩后的编码数据切片进行加密,并生成加密后的编码数据切片的CRC值,以产生安全编码数据切片微调(tweaking)当每切片安全性处理模块150未被使能时,其传递编码数据切片,或被设旁路绕过以使得编码数据切片218是DS差错编码模块112的输出。
图23是利用编码、切片和柱成组功能224将数据92转换为柱切片组以存储在分布式存储和任务网络(DSTN)模块的存储器中的示例的图。如前所讨论,数据92被编码和切片成编码数据切片的多个集合;每数据段一个集合。成组选择模块将编码数据切片的集合组织为数据切片的柱。在该示例中,DS差错编码参数包括值为5的柱宽度和值为3的解码阈值。由此,对于每个数据段,创建5个编码数据切片。
成组选择模块取得每个集合的第一编码数据切片并形成第一柱,该第一柱可以被发送至第一DST执行单元。类似地,成组选择模块从集合的第二切片创建第二柱;从集合的第三切片创建第三柱;从集合的第四切片创建第四柱;以及从集合的第五切片创建第五柱。
图24是分布式存储和/或任务(DST)执行单元的实施例的示意框图,该DST执行单元包括接口169、控制器86、存储器88、一个或多个分布式任务(DT)执行模块90、和DST客户端模块34。计算核心26可以被利用以实现该一个或多个DT执行模块90以及DST客户端模块34。存储器88具有足够的大小以存储相当大数目的编码数据切片(例如,数千个切片到数亿个切片),并可以包括一个或多个硬盘驱动器和/或一个或多个固态存储设备(例如闪存、DRAM等)。
在存储切片216的柱的示例中,DST执行单元经由接口169来接收切片216的柱(例如,柱#1切片)。存储器88根据其从控制器86接收的存储控制信息174来存储切片柱的编码数据切片216。控制器86(例如处理模块、CPU等)基于分布式存储信息(例如用户信息(例如用户ID、分布式存储许可、数据访问许可等)、保险库信息(例如向用户指派的虚拟存储器、用户组等)等)来生成存储控制信息174。类似地,当获取切片时,DST执行单元经由接口169来接收切片获取请求。存储器88根据其从控制器86接收的存储控制信息174来获取切片。存储器88经由接口169将切片100输出至进行请求的实体。
图25是用于获取分散差错编码数据92的入站分布式存储和/或任务(DST)处理部82的操作的示例的示意框图。入站DST处理部82包括解组模块180、分散存储(DS)存储解码模块182、数据解分区模块184、控制模块186和分布式任务控制模块188。注意,控制模块186和/或分布式任务控制模块188可以是与出站DST处理部中的对应处理部分离的模块,或可以是相同的模块。
在操作的示例中,入站DST处理部82从DST执行单元(即,DSTN模块)获取所存储的数据92。在该示例中,DST执行单元从分布式任务控制模块188输出与数据获取请求相对应的编码数据切片。解组模块180接收切片100的柱,并根据来自控制模块186的控制信息190来对其进行解组,以产生编码数据切片218的集合。DS差错解码模块182根据作为控制信息190从控制模块186接收的DS差错编码参数来对编码数据切片218的每个集合进行解码,以产生被积聚成所获取的数据92的数据段。在该操作模式中经由来自控制模块186的控制信息190的旁路信号226来设旁路绕过数据解分区模块184。
图26是入站分布式存储和任务(DST)处理部的分散存储(DS)差错解码模块182的实施例的示意框图。DS差错解码模块182包括反每切片安全性处理模块202、解切片模块204、差错解码模块206、反段安全性模块208、解分段处理模块210和控制模块186。分散差错解码模块182可操作以利用解切片和解码功能228来对每数据段218的编码切片进行解切片和解码,以产生利用解段功能230解分段以恢复数据92的多个数据段。
在操作的示例中,反每切片安全性处理模块202在被控制模块186经由控制信息190使能时基于作为控制信息190从控制模块186接收的切片解安全性信息(例如,参照图6讨论的切片安全性信息的补充)来对每个编码数据切片218进行解保护。切片解安全性信息包括数据解压缩、解密、解水印、完整性校验(例如CRC等)验证和/或任何其他类型的数字安全性。例如,当反每切片安全性处理模块202被使能时,其验证每个编码数据切片218的完整性信息(例如,CRC值),其对每个验证后的编码数据切片进行解密,并对每个解密后的编码数据切片进行解压缩,以产生切片编码数据。当反每切片安全性处理模块202未被使能时,其传递编码数据切片218作为切片编码数据,或被设旁路绕过以使得所获取的编码数据切片218被提供作为切片编码数据。
解切片模块204根据作为控制信息190从控制模块186接收的纠错编码参数的柱宽度将切片编码数据解切片为编码数据段。例如,如果柱宽度是5,则解切片模块将5个编码数据切片的集合解切片为编码数据段。可替换地,编码数据段可以包括仅3个编码数据切片(例如,当解码阈值是3时)。
差错解码模块206根据作为控制信息190从控制模块186接收的纠错解码参数来对编码数据段进行解码,以产生安全数据段。纠错解码参数包括标识纠错编码方案(例如前向纠错算法、基于里德-梭罗门的算法、信息分散算法等)、柱宽度、解码阈值、读取阈值、写入阈值等。例如,纠错解码参数标识具体纠错编码方案,指定值为5的柱宽度,并指定值为3的解码阈值。
反段安全性处理模块208在被控制模块186使能时基于作为控制信息190从控制模块186接收的段安全性信息来对被保护的数据段进行解保护。段安全性信息包括数据解压缩、解密、解水印、完整性校验(例如CRC等)验证和/或任何其他类型的数字安全性。例如,当反段安全性处理模块被使能时,其验证每个安全数据段的完整性信息(例如,CRC值),其对每个验证后的被保护的数据段进行解密,并对每个解密后的安全数据段进行解压缩,以产生数据段152。当反段安全性处理模块208未被使能时,其传递解码数据段152作为数据段,或被设旁路绕过。解分段处理模块210根据来自控制模块186的控制信息190将数据段152积聚成数据92。
图27是包括多个分布式存储和任务(DST)执行单元(#1至#n,其中,例如,n是大于或等于3的整数)的分布式存储和任务处理网络(DSTN)模块的示例的示意框图。每个DST执行单元包括DST客户端模块34、控制器86、一个或多个DT(分布式任务)执行模块90、和存储器88。
在该示例中,DSTN模块在DST执行单元的存储器中存储多个DS(分散存储)编码数据(例如,1至n,其中,n是大于或等于2的整数),并存储多个DS编码任务码(例如,1至k,其中,k是大于或等于2的整数)。可以根据参照图3至19描述的一个或多个示例来对DS编码数据进行编码(例如,在切片成组中组织),或者根据参照图20至26描述的一个或多个示例来对DS编码数据进行编码(例如,在柱组中组织)。被编码为DS编码数据的数据可以具有任何大小和/或具有任何内容。例如,数据可以是一个或多个数字书、公司的电子邮件的拷贝、大规模互联网搜索、视频安全性文件、一个或多个娱乐视频文件(例如电视节目、电影等)、数据文件和/或任何其他大量的数据(例如,大于几太字节)。
被编码为DS编码任务码的任务可以是简单功能(例如数学功能、逻辑功能、识别功能、查找功能、搜索引擎功能、替换功能等)、复杂功能(例如压缩、人类和/或计算机语言翻译、文本至语音转换、语音至文本转换等)、多个简单和/或复杂功能、一个或多个算法、一个或多个应用等。可以根据参照图3至19描述的一个或多个示例将任务编码为DS编码任务码(例如,在切片成组中组织),或者根据参照图20至26描述的一个或多个示例来对任务进行编码(例如,在柱组中组织)。
在操作的示例中,DST处理单元的用户设备的DST客户端模块向DST模块发出DST请求。DST请求可以包括获取所存储的数据或其部分的请求,可以包括存储与DST请求一起包括的数据的请求,可以包括对所存储的数据执行一个或多个任务的请求,可以包括对与DST请求一起包括的数据执行一个或多个任务的请求,等等。在DST请求包括存储数据或获取数据的请求的情况下,客户端模块和/或DSTN模块如前参照图3至19(例如,切片成组)和/或20至26(例如,柱成组)中的一个或多个讨论的那样处理请求。在DST请求包括对与DST请求一起包括的数据执行一个或多个任务的请求的情况下,DST客户端模块和/或DSTN模块如前参照图3至19中的一个或多个讨论的那样处理DST请求。
在DST请求包括对所存储的数据执行一个或多个任务的请求的情况下,DST客户端模块和/或DSTN模块如将参照图28至39中的一个或多个描述的那样处理DST请求。一般地,DST客户端模块针对DSTN模块识别数据和一个或多个任务以对所识别的数据执行。DST请求可以针对任务的一次性执行或针对任务的正在进行的执行。作为后者的示例,随着公司生成每日电子邮件,DST请求可以是:针对不适当的内容每日搜索新电子邮件,并且如果找到,则记录该内容、电子邮件发送者、电子邮件接收者、电子邮件路由信息,向人类资源通知所识别的电子邮件等等。
图28是对所存储的数据执行任务的分布式计算系统的示例的示意框图。在该示例中,示出了两个分布式存储和任务(DST)客户端模块1至2:第一个可以与用户设备相关联,并且第二个可以与DST处理单元或高优先级用户设备(例如高优先级批准用户、系统管理员等)相关联。每个DST客户端模块包括存储数据列表234和任务码列表236。存储数据列表234包括数据标识信息的一个或多个条目,其中,每个条目标识DSTN模块22中存储的数据。数据标识信息(例如,数据ID)包括数据文件名、数据文件目录列表、数据的DSTN寻址信息、数据对象标识符等中的一个或多个。任务列表236包括任务码标识信息的一个或多个条目,其中,每个条目标识DSTN模块22中存储的任务码。任务码标识信息(例如,任务ID)包括任务文件名、任务文件目录列表、任务的DSTN寻址信息、用于标识任务的另一种类型的标识符等中的一个或多个。
如所示,数据列表234和任务列表236在第一DST客户端模块的条目的数目方面均比第二DST客户端模块的对应列表小。这种情况发生可能是由于与第一DST客户端模块相关联的用户设备在分布式计算系统中具有比与第二DST客户端模块相关联的设备更少的特权。可替换地,这种情况发生可能是由于与第一DST客户端模块相关联的用户设备服务于比与第二DST客户端模块相关联的设备更少的用户且相应地受分布式计算系统限制。作为又一可替换方案,这可能通过不受分布式计算系统限制而发生,其发生仅由于与第一DST客户端模块相关联的用户设备的操作者选择了比与第二DST客户端模块相关联的设备的操作者更少的数据和/或更少的任务。
在操作的示例中,第一DST客户端模块从其相应列表中选择一个或多个数据条目238和一个或多个任务240(例如,所选数据ID和所选任务ID)。第一DST客户端模块将其选择发送至任务分布模块232。任务分布模块232可以处于分布式计算系统的独立设备内,可以处于包含第一DST客户端模块的用户设备内,或者可以处于DSTN模块22内。
不论任务分布模块位置如何,其都从所选任务ID 240和所选数据ID 238生成DST分配信息242。DST分配信息242包括数据分区信息、任务执行信息和/或中间结果信息。任务分布模块232将DST分配信息242发送至DSTN模块22。注意,将参照图29至39中的一个或多个来讨论DST分配信息的一个或多个示例。
DSTN模块22解释DST分配信息242,以识别所存储的DS编码数据(例如,DS差错编码数据2)并识别所存储的DS差错编码任务码(例如,DS差错编码任务码1)。此外,DSTN模块22解释DST分配信息242,以确定要如何对数据进行分区以及要如何对任务进行分区。DSTN模块22还确定是否需要将所选DS差错编码数据238从柱成组转换为切片成组。如果是,则DSTN模块22将所选的DS差错编码数据转换为切片成组,并通过盖写柱成组DS差错编码数据或通过将其存储在DSTN模块22的存储器中的不同位置中(即,不盖写柱成组DS编码数据)来存储切片成组DS差错编码数据。
DSTN模块22如DST分配信息242中所指示的那样对数据和任务进行分区,并将部分发送至DSTN模块22的所选DST执行单元。每个所选DST执行单元对其切片成组执行其部分任务,以产生部分结果。DSTN模块22从所选DST执行单元收集部分结果,并将其作为结果信息244提供给任务分布模块。结果信息244可以是所收集的部分结果、如DSTN模块22从根据DST分配信息242处理部分结果而产生的一个或多个最终结果、或者如DSTN模块22从根据DST分配信息242处理部分结果而产生的一个或多个中间结果。
任务分布模块232接收结果信息244并从其提供一个或多个最终结果104给第一DST客户端模块。最终结果104可以是结果信息244或者任务分布模块对结果信息244的处理的结果。
与处理第一DST客户端模块的所选任务同时,分布式计算系统可以处理对第二DST客户端模块的所选数据的第二DST客户端模块的所选任务。可替换地,分布式计算系统可以在第一DST客户端模块的请求之后或之前处理第二DST客户端模块的请求。不论DST客户端模块请求的顺序和/或并行处理,第二DST客户端模块都将其所选数据238和所选任务240提供给任务分布模块232。如果任务分布模块232是分布式计算系统的分离设备或者处于DSTN模块内,则耦合到第一和第二DST客户端模块的任务分布模块232可以是相同的模块。任务分布模块232以与其处理第一DST客户端模块的请求类似的方式处理第二DST客户端模块的请求。
图29是促进图28的示例的任务分布模块232的实施例的示意框图。任务分布模块232包括其用以针对从DST客户端模块接收的所选数据和所选任务生成分布式存储和任务(DST)分配信息242的多个表。该表包括数据存储信息248、任务存储信息250、分布式任务(DT)执行模块信息252以及任务<->子任务映射信息246。
数据存储信息表248包括数据标识(ID)字段260、数据大小字段262、寻址信息字段264、分布式存储(DS)信息266,并可以进一步包括关于数据、其被如何存储和/或其能够被如何处理的其他信息。例如,DS编码数据#1具有值为1的数据ID、值为AA的数据大小(例如,几太字节或更多的字节大小)、值为Addr_1_AA的寻址信息、以及值为3/5、SEG_1和SLC_1的DS参数。在该示例中,寻址信息可以是与数据的第一存储字(例如,一个或多个字节)的虚拟地址相对应的虚拟地址以及与如何计算其他地址有关的信息,可以是数据的存储字的虚拟地址、数据的多个存储字或第一存储字的物理地址的范围,可以是数据的编码数据切片的切片名称的列表等等。DS参数可以包括差错编码方案的标识、解码阈值/柱宽度(例如,对于第一数据条目,为3/5)、段安全性信息(例如,SEG_1)、每切片的安全性信息(例如,SLC_1)、和/或关于数据如何被编码为数据切片的任何其他信息。
任务存储信息表250包括任务标识(ID)字段268、任务大小字段270、寻址信息字段272、分布式存储(DS)信息274,并可以进一步包括关于任务、其被如何存储和/或其能够被如何用于处理数据的其他信息。例如,DS编码数据#2具有值为2的任务ID、值为XY的任务大小、值为Addr_2_XY的寻址信息、以及值为3/5、SEG_2和SLC_2的DS参数。在该示例中,寻址信息可以是与任务的第一存储字(例如,一个或多个字节)的虚拟地址相对应的虚拟地址以及与如何计算其他地址有关的信息,可以是任务的存储字的虚拟地址、任务的多个存储字或第一存储字的物理地址的范围,可以是任务码的编码切片的切片名称的列表等等。DS参数可以包括差错编码方案的标识、解码阈值/柱宽度(例如,对于第一数据条目,为3/5)、段安全性信息(例如,SEG_2)、每切片的安全性信息(例如,SLC_2)、和/或关于任务如何被编码为编码任务切片的任何其他信息。注意,段和/或每切片的安全性信息包括加密类型(如果被使能的话)、压缩类型(如果被使能的话)、加水印信息(如果被使能的话)、和/或完整性校验方案(如果被使能的话)。
任务<->子任务映射信息表246包括任务字段256和子任务字段258。任务字段256标识分布式存储和任务网络(DSTN)的存储器中存储的任务,并且对应的子任务字段258指示任务是否包括子任务,并且如果任务包括子任务,则指示有多少子任务以及子任务中的任一个是否被排序。在该示例中,任务<->子任务映射信息表246包括针对DSTN模块的存储器中存储的每个任务(例如,任务1至任务k)的条目。特别地,该示例指示:任务1包括7个子任务;任务2不包括子任务;并且任务k包括数目r的子任务(其中,r是大于或等于2的整数)。
DT执行模块表252包括DST执行单元ID字段276、DT执行模块ID字段278和DT执行模块能力字段280。DST执行单元ID字段276包括DSTN模块中的DST单元的标识。DT执行模块ID字段278包括每个DST单元中的每个DT执行单元的标识。例如,DST单元1包括3个DT执行模块(例如,1_1、1_2和1_3)。DT执行能力字段280包括对应DT执行单元的能力的标识。例如,DT执行模块1_1包括能力X,其中,X包括MIPS能力、处理资源(例如,微处理器、CPU、数字信号处理器、协处理器、微控制器、算术逻辑电路和/或其他模拟和/或数字处理电路的量或能力)、处理资源的可用性、存储信息(例如类型、大小、可用性等)和/或与执行一个或多个任务有关的任何信息中的一个或多个。
从这些表,任务分布模块232生成DST分配信息242以指示数据被存储在何处、如何对数据进行分区、任务被存储在何处、如何对任务进行分区、哪些DT执行单元应当对哪些数据分区执行哪些部分任务、要在何处以及如何存储中间结果等等。如果正在对相同数据或不同数据执行多个任务,则任务分布模块把这种信息作为因素包括到其对DST分配信息的生成中。
图30是作为任务流程318的分布式计算系统对所存储的数据执行任务的具体示例的图。在该示例中,所选数据92是数据2,并且所选任务是任务1、2和3。任务1对应于分析数据从一种语言到另一种语言(例如,人类语言或计算机语言)的翻译;任务2对应于在数据中找到具体词和/或短语;以及任务3对应于在翻译后的数据中找到具体的翻译后的词和/或短语。
在该示例中,任务1包括7个子任务;任务1_1——识别非词(无序);任务1_2——识别唯一词(无序);任务1_3——翻译(无序);任务1_4——翻译回去(在任务1_3后有序);任务1_5——与ID差错比较(在任务1_4后有序);任务1_6——确定非词翻译差错(在任务1_5和1_1后有序);以及任务1_7——确定正确翻译(在1_5和1_2后有序)。子任务进一步指示它们是有序任务(即,依赖于另一任务的结果)还是无序的(即,不依赖于另一任务的结果)。任务2不包括子任务,并且任务3包括两个子任务:任务3_1,翻译;以及任务3_2,在翻译后的数据中找到具体词或短语。
一般地,三个任务共同被选择以针对翻译准确度、翻译差错、翻译异常、具体词或短语在数据中的出现率和具体词或短语在翻译后的数据上的出现率来分析数据。以图形方式,将数据92翻译306为翻译后的数据282;针对具体词和/或短语300来分析数据92以产生具体词和/或短语的列表286;针对非词302(例如,不在参考词典中)来分析数据92以产生非词的列表290;以及针对数据92中包括的唯一词316(即,在数据中包括多少不同词)来分析数据92以产生唯一词的列表298。这些任务中的每一个不依赖于彼此,且因此能够在期望时被并行处理。
针对具体的翻译后的词和/或短语304来分析翻译后的数据282(例如,子任务3_2)以产生具体的翻译后的词和/或短语的列表。将翻译后的数据282翻译回308(例如,子任务1_4)到原始数据的语言以产生重新翻译的数据284。这两个任务依赖于翻译任务(例如,任务1_3),且因此必须在翻译任务后有序,这可以按流水线排序或串行排序。然后,将重新翻译的数据284与原始数据92进行比较310,以找到未合适翻译(一种方式和/或另一种方式)的词和/或短语,以便产生不正确翻译的词的列表294。由此,比较任务(例如,任务1_5)310在翻译306后有序并且是重新翻译任务308(例如,子任务1_3和1_4)。
将不正确翻译的词的列表294与非词的列表290进行比较312,以识别由于词是非词而未合适翻译的词,以便产生由于非词而造成的差错的列表292。此外,将不正确翻译的词的列表294与唯一词的列表298进行比较314,以识别未合适翻译的唯一词,以便产生不正确翻译的词的列表296。该比较还可以识别未合适翻译的唯一词以产生未合适翻译的唯一词的列表。注意,词(例如具体词和/或短语、非词、唯一词、翻译后的词和/或短语等)的每个列表可以包括词和/或短语、其被使用多少次、其被用在数据中的何处、和/或关于词和/或短语而请求的任何其他信息。
图31是图30的示例的存储数据和任务码的分布式存储和任务处理网络(DSTN)模块的示例的示意框图。如所示,跨DST执行单元1至5的存储器(例如,存储在存储器88中)将DS编码数据2存储为编码数据切片;跨DST执行单元1至5的存储器将(任务1的)DS编码任务码1以及DS编码任务3存储为编码任务切片;并且跨DST执行单元3至7的存储器将(任务2的)DS编码任务码2存储为编码任务切片。如图29的数据存储信息表和任务存储信息表中所指示,相应的数据/任务针对其解码阈值/柱宽度具有值为3/5的DS参数;因此跨越5个DST执行单元的存储器。
图32是图30的示例的分布式存储和任务(DST)分配信息242的示例的图。DST分配信息242包括数据分区信息320、任务执行信息322和中间结果信息324。数据分区信息320包括数据标识符(ID)、要将数据分割为的分区的数目、每个数据分区的地址信息、以及是否必须将DS编码数据从柱成组变换为切片成组。任务执行信息322包括表格信息,该表格信息具有任务标识字段326、任务排序字段328、数据分区字段ID 330和DT执行模块集合332以用于每数据分区的分布式任务处理。中间结果信息324包括表格信息,该表格信息具有名称ID字段334、被指派以处理对应的中间结果336的DST执行单元的ID、便笺式存储字段338和中间结果存储字段340。
继续至图30的示例,其中要对数据2分布式地执行任务1至3,数据分区信息包括数据2的ID。此外,任务分布模块确定DS编码数据2是否具有用于分布式计算的合适格式(例如,被存储为切片成组)。如果否,则任务分布模块指示需要将DS编码数据2格式从柱成组格式改变为切片成组格式,这将由DSTN模块完成。此外,任务分布模块确定要将数据划分为的分区的数目(例如,2_1至2_z)以及每个分区的寻址信息。
任务分布模块在任务执行信息部中生成针对要执行的每个子任务的条目。例如,任务1_1(例如,识别数据上的非词)不具有任务排序(即,不依赖于其他子任务的结果),要由DT执行模块1_1、2_1、3_1、4_1和5_1对数据分区2_1至2_z执行。例如,DT执行模块1_1、2_1、3_1、4_1和5_1在数据分区2_1至2_z中搜索非词,以产生任务1_1中间结果(R1-1,其为非词的列表)。任务1_2(例如,识别唯一词)具有与任务1_1类似的任务执行信息,以产生任务1_2中间结果(R1-2,其为唯一词的列表)。
任务1_3(例如,翻译)包括无序(即,不依赖)的任务执行信息,使DT执行模块1_1、2_1、3_1、4_1和5_1翻译数据分区2_1至2_4并使DT执行模块1_2、2_2、3_2、4_2和5_2翻译数据分区2_5至2_z,以产生任务1_3中间结果(R1-3,其为翻译后的数据)。在该示例中,对数据分区进行成组,其中,DT执行模块的不同集合对每个数据分区组执行分布式子任务(或任务),这允许进一步并行的处理。
任务1_4(例如,翻译回去)在任务1_3后有序,且要对任务1_3的中间结果(例如,R1-3_1)(例如,翻译后的数据)执行。DT执行模块1_1、2_1、3_1、4_1和5_1被分配以将任务1_3中间结果分区R1-3_1至R1-3_4翻译回去,并且DT执行模块1_2、2_2、6_1、7_1和7_2被分配以将任务1_3中间结果分区R1-3_5至R1-3_z翻译回去,以产生任务1_4中间结果(R1-4,其为翻译回去的数据)。
任务1_5(例如,将数据和翻译后的数据进行比较以识别翻译差错)在任务1_4后有序,且要对任务1_4的中间结果(R3-1)以及对数据执行。DT执行模块1_1、2_1、3_1、4_1和5_1被分配以将数据分区(2_1至2_z)与任务1_4中间结果分区R1-4_1至R1-4_z的分区进行比较,以产生任务1_5中间结果(R1-5,其为不正确翻译的词的列表)。
任务1_6(例如,确定非词翻译差错)在任务1_1和1_5后有序,且要对任务1_1和1_5的中间结果(R1-1和R1-5)执行。DT执行模块1_1、2_1、3_1、4_1和5_1被分配以将任务1_1中间结果(R1-1_1至R1-1_z)的分区与任务1_5中间结果分区(R1-5_1至R1-5_z)的分区进行比较,以产生任务1_6中间结果(R1-6,其为由于非词而造成的翻译差错的列表)。
任务1_7(例如,确定正确翻译的词)在任务1_2和1_5后有序,且要对任务1_2和1_5的中间结果(R1-1和R1-5)执行。DT执行模块1_2、2_2、3_2、4_2和5_2被分配以将任务1_2中间结果(R1-2_1至R1-2_z)的分区与任务1_5中间结果分区(R1-5_1至R1-5_z)的分区进行比较,以产生任务1_7中间结果(R1-7,其为正确翻译的词的列表)。
任务2(例如,找到具体词和/或短语)不具有任务排序(即,不依赖于其他子任务的结果),要由DT执行模块3_1、4_1、5_1、6_1和7_1对数据分区2_1至2_z执行。例如,DT执行模块3_1、4_1、5_1、6_1和7_1在数据分区2_1至2_z中搜索具体词和/或短语,以产生任务2中间结果(R2,其为具体词和/或短语的列表)。
任务3_2(例如,找到具体的翻译后的词和/或短语)在任务1_3(例如,翻译)后有序,要由1_2、2_2、3_2、4_2和5_2对分区R1-3_1至R1-3_z执行。例如,DT执行模块1_2、2_2、3_2、4_2和5_2在翻译后的数据的分区(R1-3_1至R1-3_z)中搜索具体的翻译后的词和/或短语,以产生任务3_2中间结果(R3-2其为具体的翻译后的词和/或短语的列表)。
对于每个任务,中间结果信息指示哪个DST单元负责监督任务的执行且在需要时处理由所分配的DT执行单元的集合生成的部分结果。此外,中间结果信息指示任务的便笺式存储器以及对应的中间结果要被存储在何处。例如,对于中间结果R1-1(任务1_1的中间结果),DST单元1负责监督任务1_1的执行并协调中间结果作为DST执行单元1至5的存储器中存储的编码中间结果切片的存储。一般地,便笺用于存储非DS编码的中间结果,并且中间结果存储器用于存储DS编码的中间结果。
图33至38是执行图30的示例的分布式存储和任务网络(DSTN)模块的示意框图。在图33中,DSTN模块访问数据92,并根据分布式存储和任务网络(DST)分配信息将其分区为多个分区1至z。对于每个数据分区,DSTN识别其DT(分布式任务)执行模块90的集合以根据DST分配信息来执行任务(例如,识别非词(即,不在参考词典中))。从数据分区到数据分区,DT执行模块90的集合可以相同、不同或其组合(例如,一些数据分区使用相同集合,而其他数据分区使用不同集合)。
对于第一数据分区,DT执行模块的第一集合(例如,按照图32的DST分配信息,1_1、2_1、3_1、4_1和5_1)执行任务1_1,以产生在第二数据分区中找到的非词的第二部分结果102。DT执行模块的集合(按照DST分配信息)对数据分区执行任务1_1,直到DT执行模块的“z”集合对“第z”数据分区执行任务1_1以产生在“第z”数据分区中找到的非词的“第z”部分结果102。
如图32的DST分配信息中所指示,DST执行单元1被指派以处理第一至“第z”部分结果,以便产生第一中间结果(R1-1),其为在数据中找到的非词的列表。例如,DT执行模块90的每个集合将其相应的部分结果存储在DST执行单元1的便笺式存储器(其是在DST分配中识别的或可以由DST执行单元1确定)中。DST执行1的处理模块被任命以积聚第一至“第z”部分结果,以便产生第一中间结果(例如,R1_1)。该处理模块将第一中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元1的存储器的另一扇区中。
DST执行单元1任命其DST客户端模块以基于切片成组来对第一中间结果(例如,非词的列表)进行DS差错编码。为了开始该编码,DST客户端模块确定非词的列表是否具有足以分区的大小(例如,大于太字节)。如果是,则其将第一中间结果(R1-1)分区为多个分区(例如,R1-1_1至R1-1_m)。如果第一中间结果不具有足以分区的大小,则其不被分区。
对于第一中间结果的每个分区或者对于第一中间结果,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元1至5的存储器中分配的存储器)中。
在图34中,DSTN模块对数据92执行任务1_2(例如,找到唯一词)。为了开始,DSTN模块访问数据92,并根据DST分配信息将其分区为多个分区1至z,或者如果分区相同,则其可以使用任务1_1的数据分区。对于每个数据分区,DSTN识别其DT执行模块的集合以根据DST分配信息来执行任务1_2。从数据分区到数据分区,DT执行模块的集合可以相同、不同或其组合。对于数据分区,DT执行模块的所分配的集合执行任务1_2以产生在数据分区中找到的唯一词的部分结果(例如,第1至“第z”)。
如图32的DST分配信息中所指示,DST执行单元1被指派以处理任务1_2的第一至“第z”部分结果,以便产生第二中间结果(R1-2),其为在数据92中找到的唯一词的列表。DST执行1的处理模块被任命以积聚唯一词的第一至“第z”部分结果,以便产生第二中间结果。该处理模块将第二中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元1的存储器的另一扇区中。
DST执行单元1任命其DST客户端模块以基于切片成组来对第二中间结果(例如,非词的列表)进行DS差错编码。为了开始该编码,DST客户端模块确定唯一词的列表是否具有足以分区的大小(例如,大于太字节)。如果是,则其将第二中间结果(R1-2)分区为多个分区(例如,R1-2_1至R1-2_m)。如果第二中间结果不具有足以分区的大小,则其不被分区。
对于第二中间结果的每个分区或者对于第二中间结果,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元1至5的存储器中分配的存储器)中。
在图35中,DSTN模块对数据92执行任务1_3(例如,翻译)。为了开始,DSTN模块访问数据92,并根据DST分配信息将其分区为多个分区1至z,或者如果分区相同,则其可以使用任务1_1的数据分区。对于每个数据分区,DSTN识别其DT执行模块的集合以根据DST分配信息来执行任务1_3(例如,DT执行模块1_1、2_1、3_1、4_1和5_1翻译数据分区2_1至2_4,并且DT执行模块1_2、2_2、3_2、4_2和5_2翻译数据分区2_5至2_z)。对于数据分区,DT执行模块90的所分配的集合执行任务1_3以产生翻译后的数据的部分结果102(例如,第1至“第z”)。
如图32的DST分配信息中所指示,DST执行单元2被指派以处理任务1_3的第一至“第z”部分结果,以便产生第三中间结果(R1-3),其为翻译后的数据。DST执行2的处理模块被任命以积聚翻译后的数据的第一至“第z”部分结果,以便产生第三中间结果。该处理模块将第三中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元2的存储器的另一扇区中。
DST执行单元2任命其DST客户端模块以基于切片成组来对第三中间结果(例如,翻译后的数据)进行DS差错编码。为了开始该编码,DST客户端模块将第三中间结果(R1-3)分区为多个分区(例如,R1-3_1至R1-3_y)。对于第三中间结果的每个分区,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元2至6的存储器中按照DST分配信息分配的存储器)中。
如图35中进一步所示,DSTN模块对第三中间结果的翻译后的数据执行任务1_4(例如,重新翻译)。为了开始,DSTN模块访问翻译后的数据(从便笺式存储器或从中间结果存储器,并对其进行解码),并根据DST分配信息将其分区为多个分区。对于第三中间结果的每个分区,DSTN识别其DT执行模块90的集合以根据DST分配信息来执行任务1_4(例如,DT执行模块1_1、2_1、3_1、4_1和5_1被分配以将分区R1-3_1至R1-3_4翻译回去,并且DT执行模块1_2、2_2、6_1、7_1和7_2被分配以将分区R1-3_5至R1-3_z翻译回去)。对于分区,DT执行模块的所分配的集合执行任务1_4以产生重新翻译的数据的部分结果102(例如,第1至“第z”)。
如图32的DST分配信息中所指示,DST执行单元3被指派以处理任务1_4的第一至“第z”部分结果,以便产生第四中间结果(R1-4),其为重新翻译的数据。DST执行3的处理模块被任命以积聚重新翻译的数据的第一至“第z”部分结果,以便产生第四中间结果。该处理模块将第四中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元3的存储器的另一扇区中。
DST执行单元3任命其DST客户端模块以基于切片成组来对第四中间结果(例如,重新翻译的数据)进行DS差错编码。为了开始该编码,DST客户端模块将第四中间结果(R1-4)分区为多个分区(例如,R1-4_1至R1-4_z)。对于第四中间结果的每个分区,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元3至7的存储器中按照DST分配信息分配的存储器)中。
在图36中,分布式存储和任务网络(DSTN)模块对数据92和图35的重新翻译的数据执行任务1_5(例如,比较)。为了开始,DSTN模块访问数据92,并根据DST分配信息将其分区为多个分区,或者如果分区相同,则其可以使用任务1_1的数据分区。DSTN模块还从便笺式存储器或从中间结果存储器访问重新翻译的数据,并对其进行解码,并根据DST分配信息将其分区为多个分区。重新翻译的数据的分区的数目对应于数据的分区的数目。
对于每对分区(例如,数据分区1和重新翻译的数据分区1),DSTN识别其DT执行模块90的集合以根据DST分配信息来执行任务1_5(例如,DT执行模块1_1、2_1、3_1、4_1和5_1)。对于每对分区,DT执行模块的所分配的集合执行任务1_5以产生不正确翻译的词和/或短语的列表的部分结果102(例如,第1至“第z”)。
如图32的DST分配信息中所指示,DST执行单元1被指派以处理任务1_5的第一至“第z”部分结果,以便产生第五中间结果(R1-5),其为不正确翻译的词和/或短语的列表。特别地,DST执行1的处理模块被任命以积聚不正确翻译的词和/或短语的列表的第一至“第z”部分结果,以便产生第五中间结果。该处理模块将第五中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元1的存储器的另一扇区中。
DST执行单元1任命其DST客户端模块以基于切片成组来对第五中间结果进行DS差错编码。为了开始该编码,DST客户端模块将第五中间结果(R1-5)分区为多个分区(例如,R1-5_1至R1-5_z)。对于第五中间结果的每个分区,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元1至5的存储器中按照DST分配信息分配的存储器)中。
如图36中进一步所示,DSTN模块对不正确翻译的词和/或短语的列表(例如,第五中间结果R1-5)和非词的列表(例如,第一中间结果R1-1)执行任务1_6(例如,由于非词而造成的翻译差错)。为了开始,DSTN模块访问列表并将其分区为对应数目的分区。
对于每对分区(例如,分区R1-1_1和分区R1-5_1),DSTN识别其DT执行模块90的集合以根据DST分配信息来执行任务1_6(例如,DT执行模块1_1、2_1、3_1、4_1和5_1)。对于每对分区,DT执行模块的所分配的集合执行任务1_6以产生由于非词而造成的不正确翻译的词和/或短语的列表的部分结果102(例如,第1至“第z”)。
如图32的DST分配信息中所指示,DST执行单元2被指派以处理任务1_6的第一至“第z”部分结果,以便产生第六中间结果(R1-6),其为由于非词而造成的不正确翻译的词和/或短语的列表。特别地,DST执行2的处理模块被任命以积聚由于非词而造成的不正确翻译的词和/或短语的列表的第一至“第z”部分结果,以便产生第六中间结果。该处理模块将第六中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元1的存储器的另一扇区中。
DST执行单元2任命其DST客户端模块以基于切片成组来对第六中间结果进行DS差错编码。为了开始该编码,DST客户端模块将第六中间结果(R1-6)分区为多个分区(例如,R1-6_1至R1-6_z)。对于第六中间结果的每个分区,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元2至6的存储器中按照DST分配信息分配的存储器)中。
如图36中仍进一步所示,DSTN模块对不正确翻译的词和/或短语的列表(例如,第五中间结果R1-5)和唯一词的列表(例如,第二中间结果R1-2)执行任务1_7(例如,不正确翻译的词和/或短语)。为了开始,DSTN模块访问列表并将其分区为对应数目的分区。
对于每对分区(例如,分区R1-2_1和分区R1-5_1),DSTN识别其DT执行模块90的集合以根据DST分配信息来执行任务1_7(例如,DT执行模块1_2、2_2、3_2、4_2和5_2)。对于每对分区,DT执行模块的所分配的集合执行任务1_7以产生不正确翻译的词和/或短语的列表的部分结果102(例如,第1至“第z”)。
如图32的DST分配信息中所指示,DST执行单元3被指派以处理任务1_7的第一至“第z”部分结果,以便产生第七中间结果(R1-7),其为不正确翻译的词和/或短语的列表。特别地,DST执行3的处理模块被任命以积聚不正确翻译的词和/或短语的列表的第一至“第z”部分结果,以便产生第七中间结果。该处理模块将第七中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元3的存储器的另一扇区中。
DST执行单元3任命其DST客户端模块以基于切片成组来对第七中间结果进行DS差错编码。为了开始该编码,DST客户端模块将第七中间结果(R1-7)分区为多个分区(例如,R1-7_1至R1-7_z)。对于第七中间结果的每个分区,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元3至7的存储器中按照DST分配信息分配的存储器)中。
在图37中,分布式存储和任务网络(DSTN)模块对数据92执行任务2(例如,找到具体词和/或短语)。为了开始,DSTN模块访问数据,并根据DST分配信息将其分区为多个分区1至z,或者如果分区相同,则其可以使用任务1_1的数据分区。对于每个数据分区,DSTN识别其DT执行模块90的集合以根据DST分配信息来执行任务2。从数据分区到数据分区,DT执行模块的集合可以相同、不同或其组合。对于数据分区,DT执行模块的所分配的集合执行任务2以产生在数据分区中找到的具体词和/或短语的部分结果(例如,第1至“第z”)。
如图32的DST分配信息中所指示,DST执行单元7被指派以处理任务2的第一至“第z”部分结果,以便产生任务2中间结果(R2),其为在数据中找到的具体词和/或短语的列表。DST执行7的处理模块被任命以积聚具体词和/或短语的第一至“第z”部分结果,以便产生任务2中间结果。该处理模块将任务2中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元7的存储器的另一扇区中。
DST执行单元7任命其DST客户端模块以基于切片成组来对任务2中间结果进行DS差错编码。为了开始该编码,DST客户端模块确定具体词和/或短语的列表是否具有足以分区的大小(例如,大于太字节)。如果是,则其将任务2中间结果(R2)分区为多个分区(例如,R2_1至R2_m)。如果任务2中间结果不具有足以分区的大小,则其不被分区。
对于任务2中间结果的每个分区或者对于任务2中间结果,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元1至4和7的存储器中分配的存储器)中。
在图38中,分布式存储和任务网络(DSTN)模块对翻译后的数据(R1-3)执行任务3(例如,找到具体的翻译后的词和/或短语)。为了开始,DSTN模块访问翻译后的数据(从便笺式存储器或从中间结果存储器,并对其进行解码),并根据DST分配信息将其分区为多个分区。对于每个分区,DSTN识别其DT执行模块的集合以根据DST分配信息来执行任务3。从分区到分区,DT执行模块的集合可以相同、不同或其组合。对于分区,DT执行模块90的所分配的集合执行任务3以产生在数据分区中找到的具体的翻译后的词和/或短语的部分结果102(例如,第1至“第z”)。
如图32的DST分配信息中所指示,DST执行单元5被指派以处理任务3的第一至“第z”部分结果,以便产生任务3中间结果(R3),其为在翻译后的数据中找到的具体的翻译后的词和/或短语的列表。特别地,DST执行5的处理模块被任命以积聚具体的翻译后的词和/或短语的第一至“第z”部分结果,以便产生任务3中间结果。该处理模块将任务3中间结果作为非DS差错编码的数据存储在便笺式存储器中或存储在DST执行单元7的存储器的另一扇区中。
DST执行单元5任命其DST客户端模块以基于切片成组来对任务3中间结果进行DS差错编码。为了开始该编码,DST客户端模块确定具体的翻译后的词和/或短语的列表是否具有足以分区的大小(例如,大于太字节)。如果是,则其将任务3中间结果(R3)分区为多个分区(例如,R3_1至R3_m)。如果任务3中间结果不具有足以分区的大小,则其不被分区。
对于任务3中间结果的每个分区或者对于任务3中间结果,DST客户端模块使用数据的DS差错编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)来产生切片成组。切片成组被存储在中间结果存储器(例如,DST执行单元1至4、5和7的存储器中分配的存储器)中。
图39是图30的示例的将结果信息组合成最终结果104的示例的图。在该示例中,结果信息包括在数据中找到的具体词和/或短语的列表(任务2中间结果)、在数据中找到的具体的翻译后的词和/或短语的列表(任务3中间结果)、在数据中找到的非词的列表(任务1第一中间结果R1-1)、在数据中找到的唯一词的列表(任务1第二中间结果R1-2)、由于非词而造成的翻译差错的列表(任务1第六中间结果R1-6)、以及正确翻译的词和/或短语的列表(任务1第七中间结果R1-7)。任务分布模块将结果信息提供给进行请求的DST客户端模块作为结果104。
图40是分布式计算系统的另一实施例的示意框图,该分布式计算系统包括分布式存储(DS)模块382以及分布式存储和任务(DST)执行单元超集384。DS模块382可以被实现在计算设备、DST执行单元36和DST处理单元中的一个或多个内。DST执行单元超集384包括多个DST执行单元36。该多个DST执行单元36的部分包括DST执行单元集合386。DS模块382可以由计算设备、DST客户端模块、分布式任务(DT)执行模块、处理模块、控制器、用户设备、DST处理单元、DST执行单元36、分布式存储和任务网络(DSTN)管理单元和DST完整性处理单元中的一个或多个实现。DS模块382包括选择模块388、编码模块390、任务模块392和输出模块394。
系统可操作以促进对数据396的任务398(例如,计算任务)的分布式计算。选择模块388选择DST执行单元集合386以产生DST执行单元集合选择,其用于基于任务398和DST执行单元能力信息400(例如,任务执行能力水平、加密能力水平、可用性水平)中的至少一个来对数据396执行任务398。选择模块388通过一系列步骤来选择DST执行单元集合386。第一步骤包括:确定任务398的执行要求。第二步骤包括:按照执行要求来分析该多个DST执行单元36的DST执行能力信息400。例如,选择模块388从该多个DST执行单元36中的至少一些接收DST执行能力信息400。第三步骤包括:识别该多个DST执行单元36中的具有与执行要求相对应的能力的DST执行单元36。第四步骤包括:从所识别的DST执行单元中选择DST执行单元集合386。
编码模块390基于关于DST执行单元集合的信息402(例如,该集合中的DST执行单元的数目、DST执行单元的集合的存储能力、DST执行单元的集合的任务处理能力、DST执行单元集合选择)来确定数据396的分散存储差错编码参数。编码模块390进一步工作,以根据分散存储差错编码参数来对数据396进行分散存储差错编码,以便产生多个编码数据块。该编码可以包括将编码矩阵与数据396的部分进行矩阵乘法以产生该多个编码数据块。编码矩阵可以包括单位范德蒙(Vandermonde)矩阵,使得第一解码阈值数目的编码数据块基本上与数据396相同。编码还可以包括在线编码或其他形式的差错编码。编码数据块可以包括一个或多个切片、在线编码块或另一擦除编码数据块。
编码模块390进一步工作,以根据分散存储差错编码将该多个编码数据块成组为多个编码数据块成组404。编码模块390进一步通过基于DST执行单元能力信息400和关于DST执行单元集合的信息402中的至少一个将该多个编码数据块成组为该多个编码数据块成组404,来对该多个编码数据块进行成组。该多个编码数据块成组404中的第一编码数据块成组可以包括比该多个编码数据块成组404中的第二编码数据块成组更少的编码数据块。
任务模块392基于DST执行单元能力信息400和关于DST执行单元集合的信息402中的至少一个将任务398分区为部分任务406的集合。任务模块392通过多个方法之一将任务398分区为部分任务406的集合。第一方法包括:针对DST执行单元集合386中的每一个DST执行单元复制任务398以产生部分任务406的集合。第二方法包括:识别任务398的子任务并基于所识别的子任务来产生部分任务406的集合。例如,第一DST执行单元被指派有与第一DST执行单元的唯一能力有利地比较的唯一子任务。第三方法包括:识别任务398的子任务并针对DST执行单元集合386中的每一个DST执行单元复制所识别的子任务以产生部分任务406的集合。
输出模块394将多个编码数据块成组408中的至少一些输出至DST执行单元集合386。例如,输出模块394将第一解码阈值数目的编码数据块成组408输出至DST执行单元集合386。输出模块394可以对编码数据块成组408中的至少一些进行加密以提供改进的安全性。当加密时,输出模块394通过一系列步骤来输出该多个编码数据块成组408中的该至少一些。第一步骤包括:基于对应的DST执行单元标识符(ID)、与所选DST执行单元的迪菲-赫尔曼(Diffie Hellman)交换、与数据相关联的数据标识符以及所获取的密钥中的一个或多个,针对该多个编码数据块成组408中的该至少一些中的与DST执行单元集合386中的所选DST执行单元相关联的编码数据块成组生成加密密钥。例如,输出模块394将所获取的基本密钥以及第二DST执行单元的DST执行单元ID进行组合,以产生用于对与第二DST执行单元相关联的编码数据块成组进行加密的第二加密密钥。第二步骤包括:使用该加密密钥来对该编码数据块成组进行加密,以产生加密后的编码数据块成组。第三步骤包括:将加密后的编码数据块成组输出至所选DST执行单元。输出模块394进一步工作,以将部分任务406的集合输出至DST执行单元集合386,以对多个编码数据块成组408中的至少一些执行部分任务406的集合。
选择模块388进一步工作,以识别用于存储该多个编码数据块成组404的DST执行单元超集384,其中,DST执行单元超集384包括DST执行单元集合386。输出模块394进一步工作,以将该多个编码数据块成组404中的其他编码数据块成组410输出至DST执行单元超集384中的其他DST执行单元。DST执行单元超集384存储该多个编码数据块成组404。
图41是图示了对数据的任务的分布式计算的示例的流程图。该方法开始于步骤412处,其中,(例如,分布式存储和任务处理单元的)处理模块基于任务和DST执行单元能力信息中的至少一个来选择用于执行任务的分布式存储和任务(DST)执行单元集合。选择DST执行单元集合包括一系列步骤。第一步骤包括:确定任务的执行要求。第二步骤包括:按照执行要求来分析多个DST执行单元的DST执行能力信息。第三步骤包括:识别该多个DST执行单元中的具有与执行要求相对应的能力的DST执行单元。第四步骤包括:从所识别的DST执行单元中选择DST执行单元集合。
该方法继续在步骤414处,其中,处理模块基于关于DST执行单元集合的信息来确定数据的分散存储差错编码参数。例如,处理模块将柱宽度确立为基本上与DST执行单元集合中的DST执行单元的数目相同。该方法继续在步骤416处,其中,处理模块根据分散存储差错编码参数来对数据进行分散存储差错编码,以产生多个编码数据块。该方法继续在步骤418处,其中,处理模块根据分散存储差错编码将该多个编码数据块成组为多个编码数据块成组。该多个编码数据块的成组可以包括:基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将该多个编码数据块成组为该多个编码数据块成组。该多个编码数据块成组中的第一编码数据块成组可以包括比该多个编码数据块成组中的第二编码数据块成组更少的编码数据块。
该方法继续在步骤420处,其中,处理模块基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将任务分区为部分任务的集合。将任务分区为部分任务的集合包括多个方法之一。第一方法包括:针对DST执行单元集合中的每一个DST执行单元复制任务以产生部分任务的集合。第二方法包括:识别任务的子任务并基于所识别的子任务来产生部分任务的集合。第三方法包括:识别任务的子任务并针对DST执行单元集合中的每一个DST执行单元复制所识别的子任务以产生部分任务的集合。
该方法继续在步骤422处,其中,处理模块将该多个编码数据块成组中的至少一些输出至DST执行单元集合。输出该多个编码数据块成组中的该至少一些包括一系列步骤。第一步骤包括:基于对应的DST执行单元标识符、与所选DST执行单元的迪菲-赫尔曼交换、与数据相关联的数据标识符以及所获取的密钥中的一个或多个,针对该多个编码数据块成组中的该至少一些中的与DST执行单元集合中的所选DST执行单元相关联的编码数据块成组生成加密密钥。第二步骤包括:使用该加密密钥来对该编码数据块成组进行加密,以产生加密后的编码数据块成组。第三步骤包括:将加密后的编码数据块成组输出至所选DST执行单元。
该方法继续在步骤424处,其中,处理模块将部分任务的集合输出至DST执行单元集合,以对多个编码数据块成组中的至少一些执行部分任务的集合。该方法继续在步骤426处,其中,处理模块识别用于存储该多个编码数据块成组的DST执行单元超集,其中,DST执行单元超集包括DST执行单元集合。该方法继续在步骤428处,其中,处理模块将该多个编码数据块成组中的其他编码数据块成组输出至DST执行单元超集中的其他DST执行单元,其中,DST执行单元超集存储该多个编码数据块成组。
图42是分布式计算系统的另一实施例的示意框图,该分布式计算系统包括分布式存储(DS)模块430以及分布式存储和任务(DST)执行单元超集384。DS模块430可以被实现在计算设备、DST执行单元36和DST处理单元中的一个或多个内。DST执行单元超集384包括多个DST执行单元36。该多个DST执行单元36的部分包括DST执行单元集合386。DS模块430可以由计算设备、DST客户端模块、分布式任务(DT)执行模块、处理模块、控制器、用户设备、DST处理单元、DST执行单元、分布式存储和任务网络(DSTN)管理单元和DST完整性处理单元中的一个或多个实现。DS模块430包括识别模块432、任务模块434和输出模块436。
系统可操作以促进对所存储的数据的任务398(例如,计算任务)的分布式计算。识别模块432识别DST执行单元超集384的DST执行单元集合386。识别模块432输出包括DST执行单元集合386的标识的DST执行单元集合信息402。DST执行单元超集384将所存储的数据存储为多个编码数据块成组。根据分散存储差错编码参数来对数据进行分散存储差错编码,以产生被布置到多个编码数据块成组中的多个编码数据块。识别模块432通过多种方法中的至少一种来识别DST执行单元集合386。第一方法包括:基于分散存储差错编码参数来确定数据的恢复阈值(例如,解码阈值);以及基于恢复阈值来选择DST执行单元超集384中的多个DST执行单元。第二方法包括:将DST执行单元集合386识别为DST执行单元超集384中的存储多个编码数据切片中的数据切片的DST执行单元。第三方法包括:将DST执行单元集合386识别为DST执行单元超集384中的下述DST执行单元:其中,DST执行单元集合386中的DST执行单元存储该多个编码数据块成组中的编码数据块成组,并且该DST执行单元从该编码数据块组恢复数据的部分。
任务模块434基于DST执行单元能力信息400和关于DST执行单元集合的信息402中的至少一个将所存储的数据上的分布式计算的任务398分区为部分任务406的集合。任务模块434工作以通过多种方法之一将任务398分区为部分任务406的集合。第一方法包括:针对DST执行单元集合386中的每一个DST执行单元复制任务398以产生部分任务406的集合。第二方法包括:识别任务398的子任务并基于所识别的子任务来产生部分任务406的集合(例如,每个DST执行单元将接收唯一子任务)。第三方法包括:识别任务398的子任务并针对DST执行单元集合386中的每一个DST执行单元复制所识别的子任务以产生部分任务406的集合。
输出模块436将部分任务406的集合输出至DST执行单元集合386,以对由DST执行单元集合存储的多个编码数据块成组的集合执行部分任务406的集合。数据可从该多个编码数据块成组的集合恢复,并且该多个编码数据块成组中的其他编码数据块成组用于差错编码冗余。
图43是图示了对所存储的数据的任务的分布式计算的示例的流程图。该方法开始于步骤438处,其中,(例如,分布式存储和任务(DST)处理单元的)处理模块识别DST执行单元超集中的DST执行单元集合,其中,DST执行单元超集存储多个编码数据块成组。根据分散存储差错编码参数来对数据进行分散存储差错编码,以产生被布置到多个编码数据块成组中的多个编码数据块。识别DST执行单元集合包括多种方法中的至少一种。第一方法包括:基于分散存储差错编码参数来确定数据的恢复阈值;以及基于恢复阈值来选择DST执行单元超集中的多个DST执行单元。第二方法包括:将DST执行单元集合识别为DST执行单元超集中的存储多个编码数据切片中的数据切片的DST执行单元。第三方法包括:将DST执行单元集合识别为DST执行单元超集中的DST执行单元,其中,DST执行单元集合中的DST执行单元存储该多个编码数据块成组中的编码数据块成组,并且其中,该DST执行单元从该编码数据块组恢复数据的部分。
该方法继续在步骤440处,其中,处理模块基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将任务分区为部分任务的集合。将任务分区为部分任务的集合包括多种方法之一。第一方法包括:针对DST执行单元集合中的每一个DST执行单元复制任务以产生部分任务的集合。第二方法包括:识别任务的子任务并基于所识别的子任务来产生部分任务的集合。第三方法包括:识别任务的子任务并针对DST执行单元集合中的每一个DST执行单元复制所识别的子任务以产生部分任务的集合。
该方法继续在步骤442处,其中,处理模块将部分任务的集合输出至DST执行单元集合,以对由DST执行单元集合存储的多个编码数据块成组的集合执行部分任务的集合。数据可从该多个编码数据块成组的集合恢复,并且该多个编码数据块成组中的其他编码数据块成组用于差错编码冗余。
图44是图示了包括被组织为多个组块集合1至N(例如,数据分区或其部分)的数据734在内的数据734、包括每个组块的行的该多个组块集合1至N中的每一个的组块集合数据矩阵736、用于经由作为数据选择740的列选择器746逐列对每个组块集合进行编码以产生对应的组块集合切片矩阵742的生成矩阵738、以及用于将每个组块集合的切片路由至对应的分布式存储和任务执行(DST EX)单元以用于任务处理的柱选择器744的编码的图。
每组块集合的组块的数目被确定为对并行任务处理进行处理以在期望的任务执行时间段内完成总体任务所需的并行DST执行单元的数目。信息分散算法(IDA)的解码阈值被确定为组块的数目。基于解码阈值、可用DST EX单元的数目、可用性要求和可靠性要求中的一个或多个来确定IDA的柱宽度数目。例如,当组块的数目是5时,将解码阈值设置为5,并且根据可靠性要求,将柱宽度设置为8。
每个组块集合的组块大小被确定为与任务处理的组块大小要求相匹配。例如,当DST EX单元指示任务处理数据大小限制是20k字节时,将组块大小确定为20k字节。组块集合大小是组块的数目乘以组块大小。例如,当组块大小是20k字节且组块的数目是5时,组块集合是100k字节。组块集合的数目N被确定为数据的大小除以组块集合的大小。
生成矩阵738是根据IDA来确定的,并包括解码阈值数目的列和柱宽度数目的行。单位矩阵被用作顶方阵,以促进与组块的邻接数据相匹配的邻接切片的生成。编码矩阵的其他行促进针对组块集合切片矩阵的其余行生成差错编码的切片。
对于每个组块集合,将生成矩阵738与对应组块集合数据矩阵736的列进行矩阵乘法(例如,如列选择器746所选择的数据选择740),以生成对应组块集合的组块集合切片矩阵742的列。例如,将生成矩阵738的行1与组块集合数据矩阵736的列1进行矩阵乘法以产生组块集合切片矩阵742的列1的行1字节,将生成矩阵738的行2与组块集合数据矩阵736的列1进行矩阵乘法以产生组块集合切片矩阵742的列1的行2字节,等等。作为另一示例,将生成矩阵738的行1与组块集合数据矩阵的列2进行矩阵乘法以产生组块集合切片矩阵的列2的行1字节,将生成矩阵的行2与组块集合数据矩阵736的列2进行矩阵乘法以产生组块集合切片矩阵742的列2的行2字节,等等。
段可以被视为组块集合数据矩阵736的一个或多个列,并且,与该段相对应的切片是组块集合切片矩阵742的与组块集合数据矩阵736的该一个或多个列相对应的行。例如,当组块集合数据矩阵736的列1和2被视为对应的段时,组块集合切片矩阵742的行1列1和2形成切片1。组块集合切片矩阵742的公共行的切片属于数据734的邻接数据的组块,并共享公共柱号,并应当被存储在公共DST EX单元中以促进分布式任务。
柱选择器744根据柱选择方案将每个柱的切片路由至DST EX单元。例如,对于第一组块集合,当柱选择方案将柱1至5(例如,与邻接数据的切片相关联)映射至DST EX单元1至5并将柱6至8(例如,与差错编码的切片相关联)映射至DST EX单元6至8时,将组块集合切片矩阵742的行1的两个切片(例如,包括来自列1至10k的字节的切片和包括来自列10k+1至20k的字节的切片2)作为包括20k字节的数据的邻接组块发送至DST EX单元1。
为了促进由DST EX单元执行的任务的负载均衡,柱选择方案可以包括针对每个组块集合将柱的指派旋转到不同DST EX单元。例如,例如,对于另一组块集合,当柱选择方案将柱8(例如,与差错编码的切片相关联)映射至DST EX单元1并将柱1(例如,与邻接数据的切片相关联)映射至DST EX单元8时,将组块集合切片矩阵742的行8的两个切片(例如,包括来自列1至10k的字节的切片和包括来自列10k+1至20k的字节的切片2)作为包括20k字节的差错编码数据切片发送至DST EX单元1。
图45是图示了包括与图5类似的步骤的生成切片成组的示例的流程图。该方法开始于图5的步骤126,其中,(例如,分布式存储和任务(DST)客户端模块的)处理模块接收数据和对应的任务。该方法继续在步骤748处,其中,处理模块选择多个DST执行单元以有利地执行对应任务的部分任务。该选择包括:基于DST执行单元能力来确定多个同时计算资源以在有利的时间框架中完成任务。该方法继续在步骤750处,其中,处理模块基于所选DST执行单元的分布式计算能力中的一个或多个来确定任务分区。该确定包括下述至少一项:将任务分区与DST执行单元能力对齐;以及将后续计算任务(例如,基于部分结果)与DST执行单元能力对齐。
该方法继续在步骤752处,其中,处理模块基于任务分区来确定数据的处理参数。该确定包括:基于DST EX单元的数目来确定数据向组块和组块集合中的分区,以有利地执行部分任务。该方法继续至图5的步骤136和134,其中,处理模块基于任务分区来对任务进行分区以产生部分任务,并根据处理参数来处理数据以产生切片成组。该方法继续在步骤754处,其中,处理模块根据柱映射将对应部分任务中的切片成组发送至DST执行单元。处理模块可以基于接收映射、查询以及基于数据处理负载均衡要求生成映射中的一个或多个来获得柱映射。柱映射可以包括:将由柱对切片成组的指派旋转到不同DST执行单元(例如,用于促进负载均衡的轮叫方法)。
图46是图示了包括与图48类似的步骤的获取分布式计算的数据的示例的流程图。该方法开始于步骤764处,其中,(例如,分布式存储和任务(DST)客户端模块的)处理模块接收获取数据请求(例如,从用户设备),其中,数据优于至少一个所执行的部分任务而被存储在分布式存储和任务网络(DSTN)中。例如,数据表示先前执行的任务的部分结果。作为另一示例,数据表示先前执行的任务的修改数据。该方法继续在步骤766处,其中,处理模块识别与数据相关联的DSTN的DST执行单元。该关联包括下述一项或多项:初始数据被发送到何处以存储和/或处理任务;部分任务被发送到何处以存储和/或处理;部分结果(例如,中间结果)被发送到何处以存储和/或进一步处理;后续部分任务被发送到何处以存储和/或处理;响应于DST分配信息的查询而接收的位置;以及从位置表查找提取的位置。该方法继续至步骤660和662,其中,处理模块从DST执行单元获取一个或多个任务响应切片成组的至少解码阈值数目的任务响应切片,并对该任务响应切片进行解码,以再现一个或多个任务响应。
该方法继续在步骤768处,其中,处理模块基于该一个或多个任务响应来确定与部分结果相关联的第二DST执行单元。该确定可以基于下述一项或多项:从该一个或多个任务响应提取第二DST执行单元标识符信息;以及执行查找以提取第二DST执行单元标识符。例如,处理模块访问DST分配信息以获取第二DST执行单元的标识符。
该方法继续在步骤770处,其中,处理模块从第二DST执行单元获取一个或多个部分结果切片成组的至少解码阈值数目的部分结果切片。该获取包括下述一项或多项:选择与该一个或多个部分结果切片成组(例如,其包含结果且不包含差错编码的数据)相关联的DST执行单元;生成切片获取请求;发送切片获取请求以识别DST执行单元;以及获取至少解码阈值数目的部分结果切片。该方法继续至步骤666和668,其中,处理模块对部分结果切片进行解码以再现一个或多个部分结果,并处理该一个或多个部分结果以产生结果。
图47是图示了对分布式计算资源进行负载平衡的示例的流程图,其开始于步骤126处,其中,(例如,分布式存储和任务(DST)客户端模块的)处理模块接收数据和对应的任务,并且,其继续至步骤756、758、760和762,其中,处理模块识别用于执行对应任务的部分任务的候选DST执行单元,获得候选DST执行单元的分布式计算能力,选择候选DST执行单元中的多个DST执行单元以有利地执行对应任务的部分任务,并基于所选DST执行单元的分布式计算能力、处理参数和所估计的下一数据处理目的地中的一个或多个来确定任务分区。该方法继续至步骤752,其中,处理模块基于任务分区来确定数据的处理参数,并且该方法继续至步骤136和134,其中,处理模块基于任务分区来对任务进行任务以产生部分任务,并根据处理参数来处理数据以产生切片成组。
该方法继续在步骤772处,其中,处理模块确定切片成组中的至少一些的柱映射。该确定包括:基于关于DST执行资源的当前信息和任务执行的要求来识别DST执行资源向任务的有利指派。例如,处理模块可以确定轮叫柱映射方法,以均匀地加载解码阈值数目的DST执行单元。该方法继续在步骤774处,其中,处理模块根据柱映射将切片成组和对应的部分任务中的至少一些发送至DST执行单元。
该方法继续在步骤776处,其中,处理模块获得关于执行部分任务的DST执行单元状态信息。该获得包括下述至少一项:发起查询;接收状态信息;以及执行查找以提取状态信息。该方法继续在步骤778处,其中,处理模块基于DST执行单元状态信息来更新柱映射。例如,处理模块确定更新后的柱映射,以将DST执行资源加载从最忙的资源转移至具有更有利的可用任务执行容量的资源。该方法继续在步骤780处,其中,处理模块根据更新后的柱映射将其他切片成组和对应的部分任务发送至DST执行单元。例如,处理模块将该其他切片成组和对应的部分任务发送至DST执行单元,以利用改进的任务执行能力来执行将接续的步骤。该过程可以继续调整柱映射,直到与任务相对应的所有部分任务已经被执行。
图48是图示了变换所存储的数据的另一示例的流程图。该方法开始于步骤890处,其中,(例如,分布式存储和任务(DST)客户端模块的)处理模块确定以将被存储以促进分散存储任务的数据转换为被存储以促进分布式计算任务的数据。该确定可以包括下述至少一项:接收转换请求;基于分布式计算任务请求指示符、数据获取频率指示符、优先级水平指示符和安全性水平指示符中的一个或多个来确定转换。例如,处理模块检测任务的一系列步骤已经被排队以利用分布式计算方法处理数据,并确定将分散存储格式数据转换为分布式计算格式数据,以促进分布式计算任务执行效率改进。
该方法继续在步骤892处,其中,处理模块识别被用于存储数据(例如,查找)的DST执行单元。该方法继续在步骤894处,其中,处理模块获得数据的分散存储任务处理参数。该获得包括下述一项或多项:执行查找;接收参数;访问DST分配信息以提取参数;访问分散存储保险库;以及执行查询。
该方法继续在步骤896处,其中,处理模块确定数据的分布式计算任务处理参数。该确定包括下述一项或多项:执行查找;接收参数;访问DST分配信息以提取参数;执行查询;以及基于分布式计算要求和性能要求中的一个或多个来确定参数。
该方法继续在步骤898处,其中,处理模块获得与数据相对应的分散存储任务柱映射。该确定包括下述一项或多项:执行查找;接收映射;访问DST分配信息以提取映射;执行查询;以及基于分散存储要求和存储性能要求中的一个或多个来确定映射。
该方法继续在步骤900处,其中,处理模块确定与数据相对应的分布式计算任务柱映射。该确定可以基于下述一项或多项:网络拓扑、分布式计算性能要求、网络带宽利用率最大值和包括最小化切片传送在内的一个或多个存储目标;以及高效地利用存储容量。例如,处理模块确定利用可能与可能分布式计算任务的步骤相匹配的DST执行单元。作为另一示例,处理模块确定不从DST执行单元中的至少一些传送切片以最小化网络带宽利用率。作为又一示例,处理模块确定当DST执行单元处于如网络拓扑所指示的相同站点处时离开不同DST执行单元中的相同柱号切片。
该方法继续在步骤902处,其中,处理模块基于分布式计算任务柱映射和分散存储任务柱映射来识别要传送的切片成组。该方法继续在步骤904处,其中,处理模块促进切片成组的传送以在DST执行单元中的两个或更多个之间传送。该方法继续在步骤906处,其中,处理模块更新目录和/或DST分配信息以指示每个切片成组被存储在何处。数据的后续利用可以支持每个DST执行单元对任务的执行,从而提供系统级分布式计算性能改进。可替换地,处理模块可以获取解码阈值数目的切片成组,对解码阈值数目的切片成组进行解码以再现数据,根据柱映射来生成新切片成组,并根据柱映射来促进新切片成组的存储。
如本文中可使用的,术语“基本上”和“大体上”提供了对其对应术语和/或项目之间的相对性的行业接受的容限。这种行业接受的容限在从小于百分之一到百分之五十的范围内变化,并对应于但不限于部件值、集成电路过程变化、温度变化、上升和下降时间和/或热噪声。项目之间的这种相对性在从几个百分点的差别到巨大差别的范围内变化。如本文中还可以使用的,术语“可操作地耦合至”、“耦合至”和/或“耦合”包括项目之间的直接耦合和/或项目之间经由介入项目(例如,项目包括但不限于部件、元件、电路和/或模块)的间接耦合,其中,对于间接耦合,介入项目不修改信号的信息,但可以调整其当前视频、电压水平和/或功率水平。如本文中可以进一步使用的,所推定的耦合(即,其中,根据推定,一个元件耦合至另一元件)包括两个项目之间的以与“耦合至”相同的方式的直接和间接耦合。如本文中可以甚至进一步使用的,术语“可操作以”或“可操作地耦合至”指示项目包括功率连接、输入、输出等中的一个或多个,在被激活时执行其对应功能中的一个或多个,并可以进一步包括到一个或多个其他项目的推定耦合。如本文中可以仍进一步使用的,术语“关联于”包括分离项目的直接和/或间接耦合和/或一个项目嵌入到另一项目内。如本文中可以使用的,术语“有利地比较”指示两个或更多个项目、信号等之间的比较提供了期望的关系。例如,当期望的关系是信号1具有比信号2更大的量值时,可以在信号1的量值大于信号2的量值时或在信号2的量值小于信号1的量值时实现有利的比较。
如本文中还可以使用的,术语“处理模块”、“处理电路”和/或“处理单元”可以是单个处理设备或多个处理设备。这种处理设备可以是微处理器、微控制器、数字信号处理器、微型计算机、中央处理单元、现场可编程门阵列、可编程逻辑器件、状态机、逻辑电路、模拟电路、数字电路、和/或 基于电路和/或操作指令的硬编码对信号(模拟和/或数字)进行操控的任何设备。处理模块、模块、处理电路和/或处理单元可以是或进一步包括存储器和/或集成存储元件,其可以是单个存储设备、多个存储设备、和/或另一处理模块、模块、处理电路和/或处理单元的嵌入式电路。这种存储设备可以是只读存储器、随机存取存储器、易失性存储器、非易失性存储器、静态存储器、动态存储器、闪存、高速缓冲存储器和/或存储数字信息的任何设备,注意,如果处理模块、模块、处理电路和/或处理单元包括多于一个处理设备,则该处理设备可以被集中式定位(例如,经由有线和/或无线总线结构直接耦合在一起)或可以被分布式定位(例如,通过经由局域网和/或广域网的间接耦合的云计算)。进一步注意,如果处理模块、模块、处理电路和/或处理单元经由状态机、模拟电路、数字电路和/或逻辑电路来实现其功能中的一个或多个,则存储对应操作指令的存储器和/或存储元件可以嵌入到包括该状态机、模拟电路、数字电路和/或逻辑电路的电路内或处于该电路外部。仍进一步注意,存储元件可以存储与一个或多个附图中图示的至少一些步骤和/或功能相对应的硬编码指令和/或操作指令,并且处理模块、模块、处理电路和/或处理单元执行该硬编码指令和/或操作指令。这种存储设备或存储元件可以被包括在制品中。
上面已经借助于说明指定功能的性能及其关系的方法步骤描述了本发明。为了方便描述,本文中任意地定义了这些功能构建块和方法步骤的边界和顺序。可以定义可替换的边界和顺序,只要指定功能和关系被适当地执行即可。因此,任何这种可替换边界或顺序处于要求保护的发明的范围和精神内。此外,为了方便描述,任意地定义了这些功能构建块的边界。可以定义可替换的边界,只要特定显著功能被适当地执行即可。类似地,本文中还可能任意地定义了流程图块,以图示特定显著功能。在使用的范围内,流程图块边界和顺序可能已经被以其他方式定义,且仍执行特定显著功能。因此,功能构建块和流程图块二者以及顺序的这种可替换的定义处于要求保护的发明的范围和精神内。本领域技术人员还将认识到,本文中的功能构件块以及其他说明性块、模块和部件可以如所图示的那样实现,或由分立的部件、专用集成电路、执行适当软件的处理器等或其任何组合实现。
还可能至少部分地根据一个或多个实施例描述了本发明。本文中使用本发明的实施例来说明本发明、其方面、其特征、其构思和/或其示例。装置、制品、机器和/或体现本发明的过程的物理实施例可以包括参照本文中讨论的一个或多个实施例描述的方面、特征、构思、示例等中的一个或多个。此外,从图到图,实施例可以并入有可使用相同或不同附图标记的相同的或类似命名的功能、步骤、模块等,并且由此,该功能、步骤、模块等可以是相同或类似的功能、步骤、模块等或者不同的功能、步骤、模块等。
尽管上述附图中的晶体管被示为场效应晶体管(FET),但是如本领域技术人员将意识到的那样,可以使用包括但不限于下述各项的任何类型的晶体管结构来实现晶体管:双极型、金属氧化物半导体场效应晶体管(MOSFET)、N阱晶体管、P阱晶体管、增强模式、耗尽模式、以及零电压阈值(VT)晶体管。
除具体地相反声明外,去往本文中呈现的任何附图的图中的元件、来自该元件和/或处于该元件之间的信号可以是模拟的或数字的、连续时间的或离散时间的、以及单端的或差分的。例如,如果信号路径被示为单端路径,其也表示差分信号路径。类似地,如果信号路径被示为差分路径,其也表示单端信号路径。尽管本文中描述了一个或多个特定架构,但是可能实现使用未明确示出的一个或多个数据总线、元件之间的直接连接和/或其他元件之间的间接耦合的其他架构,如本领域技术人员所认识到的那样。
在本发明的各个实施例的描述中使用术语“模块”。模块包括在存储器上存储以执行如本文中可描述的一个或多个功能的处理模块、功能块、硬件和/或软件。注意,如果经由硬件实现模块,则该硬件可以独立地和/或结合软件和/或固件进行操作。如本文中使用的,模块可以包含一个或多个子模块,其中每一个可以是一个或多个模块。
尽管本文中明确地描述了本发明的各种功能和特征的特定组合,但是这些特征和功能的其他组合也是可能的。本发明不受本文公开的特定示例限制且明确地并入有这些其他组合。
Claims (18)
1.一种用于对数据的任务的分布式计算的方法,所述方法包括:
基于任务和分布式存储和任务(DST)执行单元能力信息中的至少一个来选择用于执行任务的DST执行单元集合;
基于关于DST执行单元集合的信息来确定数据的分散存储差错编码参数;
根据分散存储差错编码参数来对数据进行分散存储差错编码,以产生多个编码数据块;
根据分散存储差错编码将所述多个编码数据块成组为多个编码数据块成组;
基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将任务分区为部分任务的集合;
将所述多个编码数据块成组中的至少一些输出至DST执行单元集合;以及
将部分任务的集合输出至DST执行单元集合以对所述多个编码数据块成组中的所述至少一些执行部分任务的集合。
2.根据权利要求1所述的方法,进一步包括:
识别用于存储所述多个编码数据块成组的DST执行单元超集,其中,DST执行单元超集包括DST执行单元集合;以及
将所述多个编码数据块成组中的其他编码数据块成组输出至DST执行单元超集中的其他DST执行单元,其中,DST执行单元超集存储所述多个编码数据块成组。
3.根据权利要求1所述的方法,其中,选择DST执行单元集合包括:
确定任务的执行要求;
按照执行要求来分析多个DST执行单元的DST执行能力信息;
识别所述多个DST执行单元中的具有与执行要求相对应的能力的DST执行单元;以及
从所识别的DST执行单元中选择DST执行单元集合。
4.根据权利要求1所述的方法,其中,对所述多个编码数据块进行成组进一步包括:
基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将所述多个编码数据块成组为所述多个编码数据块成组,其中,所述多个编码数据块成组中的第一编码数据块成组包括比所述多个编码数据块成组中的第二编码数据块成组更少的编码数据块。
5.根据权利要求1所述的方法,其中,将任务分区为部分任务的集合包括下述各项之一:
针对DST执行单元集合中的每一个DST执行单元复制任务以产生部分任务的集合;
识别任务的子任务并基于所识别的子任务来产生部分任务的集合;以及
识别任务的子任务并针对DST执行单元集合中的每一个DST执行单元复制所识别的子任务以产生部分任务的集合。
6.根据权利要求1所述的方法,其中,输出所述多个编码数据块成组中的所述至少一些包括:
基于对应的DST执行单元标识符、与所选DST执行单元的迪菲-赫尔曼交换、与数据相关联的数据标识符以及所获取的密钥中的一个或多个,针对所述多个编码数据块成组中的所述至少一些中的与DST执行单元集合中的所选DST执行单元相关联的编码数据块成组生成加密密钥;
使用所述加密密钥来对该编码数据块成组进行加密,以产生加密后的编码数据块成组;以及
将加密后的编码数据块成组输出至所选DST执行单元。
7.一种用于对所存储的数据的任务的分布式计算的方法,所述方法包括:
识别分布式存储和任务(DST)执行单元超集中的DST执行单元集合,其中,DST执行单元超集存储多个编码数据块成组,其中,根据分散存储差错编码参数来对数据进行分散存储差错编码,以产生被布置到所述多个编码数据块成组中的多个编码数据块;
基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将任务分区为部分任务的集合;以及
将部分任务的集合输出至DST执行单元集合,以对由DST执行单元集合存储的多个编码数据块成组的集合执行部分任务的集合,其中,数据能够从所述多个编码数据块成组的集合恢复,并且所述多个编码数据块成组中的其他编码数据块成组用于差错编码冗余。
8.根据权利要求7所述的方法,其中,将任务分区为部分任务的集合包括下述各项之一:
针对DST执行单元集合中的每一个DST执行单元复制任务以产生部分任务的集合;
识别任务的子任务并基于所识别的子任务来产生部分任务的集合;以及
识别任务的子任务并针对DST执行单元集合中的每一个DST执行单元复制所识别的子任务以产生部分任务的集合。
9.根据权利要求7所述的方法,其中,识别DST执行单元集合包括下述至少一项:
基于分散存储差错编码参数来确定数据的恢复阈值,并基于恢复阈值来选择DST执行单元超集中的多个DST执行单元;
将DST执行单元集合识别为DST执行单元超集中的存储多个编码数据切片中的数据切片的DST执行单元;以及
将DST执行单元集合识别为DST执行单元超集中的DST执行单元,其中,DST执行单元集合中的DST执行单元存储所述多个编码数据块成组中的编码数据块成组,并且其中,所述DST执行单元从该编码数据块成组恢复数据的部分。
10.一种分散存储(DS)模块,包括:
第一模块,当能够在计算设备内操作时,使所述计算设备执行:
基于任务和分布式存储和任务(DST)执行单元能力信息中的至少一个来选择用于对数据执行任务的DST执行单元集合;
第二模块,当能够在所述计算设备内操作时,使所述计算设备执行:
基于关于DST执行单元集合的信息来确定数据的分散存储差错编码参数;
根据分散存储差错编码参数来对数据进行分散存储差错编码,以产生多个编码数据块;以及
根据分散存储差错编码将所述多个编码数据块成组为多个编码数据块成组;
第三模块,当能够在所述计算设备内操作时,使所述计算设备执行:
基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将任务分区为部分任务的集合;以及
第四模块,当能够在所述计算设备内操作时,使所述计算设备执行:
将所述多个编码数据块成组中的至少一些输出至DST执行单元集合;以及
将部分任务的集合输出至DST执行单元集合以对所述多个编码数据块成组中的所述至少一些执行部分任务的集合。
11.根据权利要求10所述的DS模块,进一步包括:
所述第一模块进一步工作,以识别用于存储所述多个编码数据块成组的DST执行单元超集,其中,DST执行单元超集包括DST执行单元集合;以及
所述第四模块进一步工作,以将所述多个编码数据块成组中的其他编码数据块成组输出至DST执行单元超集中的其他DST执行单元,其中,DST执行单元超集存储所述多个编码数据块成组。
12.根据权利要求10所述的DS模块,其中,所述第一模块工作以通过执行下述操作来选择DST执行单元集合:
确定任务的执行要求;
按照执行要求来分析多个DST执行单元的DST执行能力信息;
识别所述多个DST执行单元中的具有与执行要求相对应的能力的DST执行单元;以及
从所识别的DST执行单元中选择DST执行单元集合。
13.根据权利要求10所述的DS模块,其中,所述第二模块工作以进一步通过执行下述操作来对所述多个编码数据块进行成组:
基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将所述多个编码数据块成组为所述多个编码数据块成组,其中,所述多个编码数据块成组中的第一编码数据块成组包括比所述多个编码数据块成组中的第二编码数据块成组更少的编码数据块。
14.根据权利要求10所述的DS模块,其中,所述第三模块工作以通过下述各项之一将任务分区为部分任务的集合:
针对DST执行单元集合中的每一个DST执行单元复制任务以产生部分任务的集合;
识别任务的子任务并基于所识别的子任务来产生部分任务的集合;以及
识别任务的子任务并针对DST执行单元集合中的每一个DST执行单元复制所识别的子任务以产生部分任务的集合。
15.根据权利要求10所述的DS模块,其中,所述第四模块工作以通过执行下述操作来输出所述多个编码数据块成组中的所述至少一些:
基于对应的DST执行单元标识符、与所选DST执行单元的迪菲-赫尔曼交换、与数据相关联的数据标识符以及所获取的密钥中的一个或多个,针对所述多个编码数据块成组中的所述至少一些中的与DST执行单元集合中的所选DST执行单元相关联的编码数据块成组生成加密密钥;
使用所述加密密钥来对该编码数据块成组进行加密,以产生加密后的编码数据块成组;以及
将加密后的编码数据块成组输出至所选DST执行单元。
16.一种分散存储(DS)模块,包括:
第一模块,当能够在计算设备内操作时,使所述计算设备执行:
识别分布式存储和任务(DST)执行单元超集中的DST执行单元集合,其中,DST执行单元超集将所存储的数据存储为多个编码数据块成组,其中,根据分散存储差错编码参数来对数据进行分散存储差错编码,以产生被布置到所述多个编码数据块成组中的多个编码数据块;
第二模块,当能够在所述计算设备内操作时,使所述计算设备执行:
基于DST执行单元能力信息和关于DST执行单元集合的信息中的至少一个将所存储的数据上的分布式计算的任务分区为部分任务的集合;以及
第三模块,当能够在所述计算设备内操作时,使所述计算设备执行:
将部分任务的集合输出至DST执行单元集合,以对由DST执行单元集合存储的多个编码数据块成组的集合执行部分任务的集合,其中,数据能够从所述多个编码数据块成组的集合恢复,并且所述多个编码数据块成组中的其他编码数据块成组用于差错编码冗余。
17.根据权利要求16所述的DS模块,其中,所述第二模块工作以通过下述各项之一将任务分区为部分任务的集合:
针对DST执行单元集合中的每一个DST执行单元复制任务以产生部分任务的集合;
识别任务的子任务并基于所识别的子任务来产生部分任务的集合;以及
识别任务的子任务并针对DST执行单元集合中的每一个DST执行单元复制所识别的子任务以产生部分任务的集合。
18.根据权利要求16所述的DS模块,其中,所述第一模块工作以通过下述至少一项来识别DST执行单元集合:
基于分散存储差错编码参数来确定数据的恢复阈值,并基于恢复阈值来选择DST执行单元超集中的多个DST执行单元;
将DST执行单元集合识别为DST执行单元超集中的存储多个编码数据切片中的数据切片的DST执行单元;以及
将DST执行单元集合识别为DST执行单元超集中的DST执行单元,其中,DST执行单元集合中的DST执行单元存储所述多个编码数据块成组中的编码数据块成组,并且其中,所述DST执行单元从该编码数据块成组恢复数据的部分。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161569387P | 2011-12-12 | 2011-12-12 | |
US61/569387 | 2011-12-12 | ||
US13/707428 | 2012-12-06 | ||
US13/707,428 US9298548B2 (en) | 2011-12-12 | 2012-12-06 | Distributed computing in a distributed storage and task network |
PCT/US2012/068883 WO2013090233A1 (en) | 2011-12-12 | 2012-12-11 | Distributed computing in a distributed storage and task network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104106055A true CN104106055A (zh) | 2014-10-15 |
CN104106055B CN104106055B (zh) | 2016-12-28 |
Family
ID=48573010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280061203.0A Expired - Fee Related CN104106055B (zh) | 2011-12-12 | 2012-12-11 | 数据任务的分布式计算方法和分散存储模块 |
Country Status (4)
Country | Link |
---|---|
US (8) | US9009564B2 (zh) |
EP (1) | EP2791805B1 (zh) |
CN (1) | CN104106055B (zh) |
WO (1) | WO2013090233A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426493A (zh) * | 2015-11-24 | 2016-03-23 | 北京中电普华信息技术有限公司 | 一种应用于分布式存储系统的数据处理系统及方法 |
TWI655549B (zh) * | 2017-12-28 | 2019-04-01 | 李耀庭 | 分散式運算系統 |
CN109976899A (zh) * | 2017-12-28 | 2019-07-05 | 李耀庭 | 一种分布式运算系统 |
US11256539B2 (en) | 2016-02-29 | 2022-02-22 | Alibaba Group Holding Limited | Task processing method, apparatus, and system based on distributed system |
CN114647539A (zh) * | 2022-03-17 | 2022-06-21 | 北京涵鑫盛科技有限公司 | 一种分布式存储系统的数据自动恢复方法 |
Families Citing this family (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9240883B2 (en) | 2008-09-04 | 2016-01-19 | Intel Corporation | Multi-key cryptography for encrypting file system acceleration |
US8880879B2 (en) * | 2008-09-04 | 2014-11-04 | Intel Corporation | Accelerated cryptography with an encryption attribute |
US8473677B2 (en) * | 2009-09-29 | 2013-06-25 | Cleversafe, Inc. | Distributed storage network memory access based on memory state |
US11615115B2 (en) | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US11544288B2 (en) | 2010-12-23 | 2023-01-03 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10346430B2 (en) | 2010-12-23 | 2019-07-09 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10740353B2 (en) | 2010-12-23 | 2020-08-11 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US10262050B2 (en) | 2015-09-25 | 2019-04-16 | Mongodb, Inc. | Distributed database systems and methods with pluggable storage engines |
US10977277B2 (en) * | 2010-12-23 | 2021-04-13 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US10713280B2 (en) | 2010-12-23 | 2020-07-14 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10997211B2 (en) * | 2010-12-23 | 2021-05-04 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US9805108B2 (en) | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US20180074858A1 (en) * | 2011-12-12 | 2018-03-15 | International Business Machines Corporation | Multi-layer distribution of a computing task in a dispersed storage network |
US9817701B2 (en) * | 2011-12-12 | 2017-11-14 | International Business Machines Corporation | Threshold computing in a distributed computing system |
US10146621B2 (en) * | 2011-12-12 | 2018-12-04 | International Business Machines Corporation | Chaining computes in a distributed computing system |
US9584359B2 (en) * | 2011-12-12 | 2017-02-28 | International Business Machines Corporation | Distributed storage and computing of interim data |
US10671585B2 (en) * | 2012-01-31 | 2020-06-02 | Pure Storage, Inc. | Storing indexed data to a dispersed storage network |
CN102638567B (zh) * | 2012-03-02 | 2015-05-20 | 深圳市朗科科技股份有限公司 | 多应用云存储平台和云存储终端 |
US11093327B1 (en) | 2012-06-25 | 2021-08-17 | Pure Storage, Inc. | Failure abatement approach for failed storage units common to multiple vaults |
US10114697B2 (en) * | 2012-06-25 | 2018-10-30 | International Business Machines Corporation | Large object parallel writing |
US11544284B2 (en) | 2012-07-26 | 2023-01-03 | Mongodb, Inc. | Aggregation framework system architecture and method |
US11403317B2 (en) | 2012-07-26 | 2022-08-02 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10872095B2 (en) | 2012-07-26 | 2020-12-22 | Mongodb, Inc. | Aggregation framework system architecture and method |
US9537609B2 (en) * | 2012-08-02 | 2017-01-03 | International Business Machines Corporation | Storing a stream of data in a dispersed storage network |
US9128825B1 (en) * | 2013-05-17 | 2015-09-08 | Google Inc. | Optimizing allocation of flash memory to file groups |
US20180060174A1 (en) * | 2013-05-30 | 2018-03-01 | International Business Machines Corporation | Multiplying width and threshold for improved performance and efficiency |
US9501360B2 (en) * | 2013-07-01 | 2016-11-22 | International Business Machines Corporation | Rebuilding data while reading data in a dispersed storage network |
US10133635B2 (en) | 2013-07-01 | 2018-11-20 | International Business Machines Corporation | Low-width vault in distributed storage system |
JP6069503B2 (ja) * | 2013-07-01 | 2017-02-01 | 株式会社日立製作所 | 系列データ並列分析基盤およびその並列分散処理方法 |
US9262450B1 (en) * | 2013-09-27 | 2016-02-16 | Emc Corporation | Using distinguished names and relative distinguished names for merging data in an XML schema |
US10108692B1 (en) * | 2013-10-15 | 2018-10-23 | Amazon Technologies, Inc. | Data set distribution |
US9544373B2 (en) | 2013-12-24 | 2017-01-10 | Dropbox, Inc. | Systems and methods for maintaining local virtual states pending server-side storage across multiple devices and users and intermittent network connections |
US20150180980A1 (en) | 2013-12-24 | 2015-06-25 | Dropbox, Inc. | Systems and methods for preserving shared virtual spaces on a content management system |
US10067652B2 (en) | 2013-12-24 | 2018-09-04 | Dropbox, Inc. | Providing access to a cloud based content management system on a mobile device |
US10922181B2 (en) * | 2014-01-06 | 2021-02-16 | Pure Storage, Inc. | Using storage locations greater than an IDA width in a dispersed storage network |
WO2015180038A1 (zh) * | 2014-05-27 | 2015-12-03 | 北京大学深圳研究生院 | 部分复制码的构建方法、装置及其数据修复的方法 |
US10715833B2 (en) * | 2014-05-28 | 2020-07-14 | Apple Inc. | Adaptive syntax grouping and compression in video data using a default value and an exception value |
US9923838B2 (en) | 2014-06-30 | 2018-03-20 | International Business Machines Corporation | Accessing a dispersed storage network |
US11398988B1 (en) | 2014-06-30 | 2022-07-26 | Pure Storage, Inc. | Selection of access resources in a distributed storage network |
US10673946B2 (en) | 2014-06-30 | 2020-06-02 | Pure Storage, Inc. | Using separate weighting scores for different types of data in a decentralized agreement protocol |
US11606431B2 (en) | 2014-06-30 | 2023-03-14 | Pure Storage, Inc. | Maintaining failure independence for storage of a set of encoded data slices |
US9734007B2 (en) * | 2014-07-09 | 2017-08-15 | Qualcomm Incorporated | Systems and methods for reliably storing data using liquid distributed storage |
US9582355B2 (en) | 2014-07-09 | 2017-02-28 | Qualcomm Incorporated | Systems and methods for reliably storing data using liquid distributed storage |
US9594632B2 (en) | 2014-07-09 | 2017-03-14 | Qualcomm Incorporated | Systems and methods for reliably storing data using liquid distributed storage |
US11728964B2 (en) | 2014-07-31 | 2023-08-15 | Pure Storage, Inc. | Performance aided data migration in a distributed storage network |
US10089036B2 (en) | 2014-07-31 | 2018-10-02 | International Business Machines Corporation | Migrating data in a distributed storage network |
US10613936B2 (en) | 2014-07-31 | 2020-04-07 | Pure Storage, Inc. | Fractional slices in a distributed storage system |
US10644874B2 (en) | 2014-07-31 | 2020-05-05 | Pure Storage, Inc. | Limiting brute force attacks against dispersed credentials in a distributed storage system |
US10572863B2 (en) * | 2015-01-30 | 2020-02-25 | Splunk Inc. | Systems and methods for managing allocation of machine data storage |
US9922114B2 (en) | 2015-01-30 | 2018-03-20 | Splunk Inc. | Systems and methods for distributing indexer configurations |
US20180113762A1 (en) * | 2015-03-31 | 2018-04-26 | International Business Machines Corporation | Selecting an alternative rebuilding method in a dispersed storage network |
US10496669B2 (en) | 2015-07-02 | 2019-12-03 | Mongodb, Inc. | System and method for augmenting consensus election in a distributed database |
CN105187498B (zh) * | 2015-08-10 | 2018-05-08 | 携程计算机技术(上海)有限公司 | HBase表的Region分配方法及系统 |
US9524193B1 (en) * | 2015-09-09 | 2016-12-20 | Ca, Inc. | Transparent virtualized operating system |
US10846411B2 (en) | 2015-09-25 | 2020-11-24 | Mongodb, Inc. | Distributed database systems and methods with encrypted storage engines |
US10673623B2 (en) | 2015-09-25 | 2020-06-02 | Mongodb, Inc. | Systems and methods for hierarchical key management in encrypted distributed databases |
CN106681855B (zh) * | 2015-11-10 | 2019-07-05 | 澜起科技股份有限公司 | 一次性可编程存储装置以及对其进行数据校验的方法 |
US10409514B2 (en) * | 2015-11-30 | 2019-09-10 | International Business Machines Corporation | IP multicast message transmission for event notifications |
US10423362B2 (en) * | 2015-11-30 | 2019-09-24 | International Business Machines Corporation | Utilizing multiple dispersal algorithms to encode data for storage in a dispersed storage network |
US20170192688A1 (en) * | 2015-12-30 | 2017-07-06 | International Business Machines Corporation | Lazy deletion of vaults in packed slice storage (pss) and zone slice storage (zss) |
US10523755B1 (en) * | 2016-02-17 | 2019-12-31 | Amazon Technologies, Inc. | Peer-based cloud storage for media broadcasts |
US10089178B2 (en) * | 2016-02-29 | 2018-10-02 | International Business Machines Corporation | Developing an accurate dispersed storage network memory performance model through training |
US10007444B2 (en) * | 2016-04-29 | 2018-06-26 | International Business Machines Corporation | Batching access requests in a dispersed storage network |
US10671496B2 (en) | 2016-05-31 | 2020-06-02 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US10776220B2 (en) | 2016-06-27 | 2020-09-15 | Mongodb, Inc. | Systems and methods for monitoring distributed database deployments |
US10157021B2 (en) * | 2016-06-29 | 2018-12-18 | International Business Machines Corporation | Processing incomplete data access transactions |
US10528599B1 (en) | 2016-12-16 | 2020-01-07 | Amazon Technologies, Inc. | Tiered data processing for distributed data |
US11074261B1 (en) * | 2016-12-16 | 2021-07-27 | Amazon Technologies, Inc. | Format independent processing for distributed data |
US11803420B1 (en) * | 2016-12-20 | 2023-10-31 | Amazon Technologies, Inc. | Execution of replicated tasks using redundant resources |
US10866868B2 (en) | 2017-06-20 | 2020-12-15 | Mongodb, Inc. | Systems and methods for optimization of database operations |
US10540111B2 (en) | 2017-06-28 | 2020-01-21 | International Business Machines Corporation | Managing data container instances in a dispersed storage network |
CN107612972A (zh) * | 2017-08-17 | 2018-01-19 | 深圳市优品壹电子有限公司 | 数据存储方法及装置 |
US10936759B1 (en) * | 2017-09-01 | 2021-03-02 | Amzetta Technologies, Llc | Systems, methods and computer-readable media for providing enhanced encryption in a storage system |
US10909150B2 (en) | 2018-01-19 | 2021-02-02 | Hypernet Labs, Inc. | Decentralized latent semantic index using distributed average consensus |
US10878482B2 (en) | 2018-01-19 | 2020-12-29 | Hypernet Labs, Inc. | Decentralized recommendations using distributed average consensus |
US11244243B2 (en) | 2018-01-19 | 2022-02-08 | Hypernet Labs, Inc. | Coordinated learning using distributed average consensus |
US10942783B2 (en) * | 2018-01-19 | 2021-03-09 | Hypernet Labs, Inc. | Distributed computing using distributed average consensus |
US11061880B2 (en) | 2018-01-25 | 2021-07-13 | Hewlett-Packard Development Company, L.P. | Data structure with identifiers |
US11412041B2 (en) | 2018-06-25 | 2022-08-09 | International Business Machines Corporation | Automatic intervention of global coordinator |
US10592351B1 (en) * | 2018-10-16 | 2020-03-17 | EMC IP Holding Company LLC | Data restore process using a probability distribution model for efficient caching of data |
CN111090540B (zh) * | 2019-06-24 | 2022-06-14 | 华为技术有限公司 | 基于纠删码的数据处理方法与装置 |
US11487443B2 (en) | 2020-05-22 | 2022-11-01 | Mastercard International Incorporated | Systems and methods for use in segregating data blocks to distributed storage |
US11562102B2 (en) | 2020-05-22 | 2023-01-24 | Mastercard International Incorporated | Systems and methods for use in segregating data blocks to distributed storage |
US11586608B1 (en) | 2020-06-23 | 2023-02-21 | Amazon Technologies, Inc. | Handling requests to access separately stored items in a non-relational database |
US11966343B2 (en) | 2021-07-19 | 2024-04-23 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050543A1 (en) * | 2005-08-31 | 2007-03-01 | Ori Pomerantz | Storage of computer data on data storage devices of differing reliabilities |
CN101276364A (zh) * | 2007-03-30 | 2008-10-01 | 阿里巴巴公司 | 一种分布式计算数据合并方法、系统及其装置 |
US7480909B2 (en) * | 2002-02-25 | 2009-01-20 | International Business Machines Corporation | Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking |
US20110029524A1 (en) * | 2009-07-30 | 2011-02-03 | Cleversafe, Inc. | Dispersed storage network virtual address fields |
US20110264717A1 (en) * | 2010-04-26 | 2011-10-27 | Cleversafe, Inc. | Storage and retrieval of required slices in a dispersed storage network |
Family Cites Families (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4092732A (en) | 1977-05-31 | 1978-05-30 | International Business Machines Corporation | System for recovering data stored in failed memory unit |
US4825438A (en) * | 1982-03-08 | 1989-04-25 | Unisys Corporation | Bus error detection employing parity verification |
US5485474A (en) | 1988-02-25 | 1996-01-16 | The President And Fellows Of Harvard College | Scheme for information dispersal and reconstruction |
US5454101A (en) | 1992-09-15 | 1995-09-26 | Universal Firmware Industries, Ltd. | Data storage system with set lists which contain elements associated with parents for defining a logical hierarchy and general record pointers identifying specific data sets |
US5987622A (en) | 1993-12-10 | 1999-11-16 | Tm Patents, Lp | Parallel computer system including parallel storage subsystem including facility for correction of data in the event of failure of a storage device in parallel storage subsystem |
JPH07182182A (ja) * | 1993-12-21 | 1995-07-21 | Mitsubishi Electric Corp | システムコール情報採取装置 |
US6175571B1 (en) | 1994-07-22 | 2001-01-16 | Network Peripherals, Inc. | Distributed memory switching hub |
US5848230A (en) | 1995-05-25 | 1998-12-08 | Tandem Computers Incorporated | Continuously available computer memory systems |
US5961652A (en) * | 1995-10-13 | 1999-10-05 | Compaq Computer Corporation | Read checking for drive rebuild |
US5774643A (en) | 1995-10-13 | 1998-06-30 | Digital Equipment Corporation | Enhanced raid write hole protection and recovery |
US5809285A (en) | 1995-12-21 | 1998-09-15 | Compaq Computer Corporation | Computer system having a virtual drive array controller |
US6012159A (en) | 1996-01-17 | 2000-01-04 | Kencast, Inc. | Method and system for error-free data transfer |
US5802364A (en) | 1996-04-15 | 1998-09-01 | Sun Microsystems, Inc. | Metadevice driver rename/exchange technique for a computer system incorporating a plurality of independent device drivers |
US5890156A (en) | 1996-05-02 | 1999-03-30 | Alcatel Usa, Inc. | Distributed redundant database |
US6058454A (en) | 1997-06-09 | 2000-05-02 | International Business Machines Corporation | Method and system for automatically configuring redundant arrays of disk memory devices |
US6088330A (en) | 1997-09-09 | 2000-07-11 | Bruck; Joshua | Reliable array of distributed computing nodes |
US5991414A (en) | 1997-09-12 | 1999-11-23 | International Business Machines Corporation | Method and apparatus for the secure distributed storage and retrieval of information |
US6272658B1 (en) | 1997-10-27 | 2001-08-07 | Kencast, Inc. | Method and system for reliable broadcasting of data files and streams |
JPH11161505A (ja) | 1997-12-01 | 1999-06-18 | Matsushita Electric Ind Co Ltd | メディア送出装置 |
JPH11167443A (ja) | 1997-12-02 | 1999-06-22 | Casio Comput Co Ltd | インターフェイス装置 |
US6374336B1 (en) | 1997-12-24 | 2002-04-16 | Avid Technology, Inc. | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
US6415373B1 (en) | 1997-12-24 | 2002-07-02 | Avid Technology, Inc. | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
CA2341014A1 (en) | 1998-08-19 | 2000-03-02 | Alexander Roger Deas | A system and method for defining transforms of memory device addresses |
US6356949B1 (en) | 1999-01-29 | 2002-03-12 | Intermec Ip Corp. | Automatic data collection device that receives data output instruction from data consumer |
US6609223B1 (en) | 1999-04-06 | 2003-08-19 | Kencast, Inc. | Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter |
US6339832B1 (en) * | 1999-08-31 | 2002-01-15 | Accenture Llp | Exception response table in environment services patterns |
US6571282B1 (en) | 1999-08-31 | 2003-05-27 | Accenture Llp | Block-based communication in a communication services patterns environment |
US6680986B1 (en) * | 1999-11-22 | 2004-01-20 | Intelsat Global Service Corporation | Method for implementing shared channel decoder for onboard processing satellites |
US20010033296A1 (en) * | 2000-01-21 | 2001-10-25 | Fullerton Nathan W. | Method and apparatus for delivery and presentation of data |
US6826711B2 (en) | 2000-02-18 | 2004-11-30 | Avamar Technologies, Inc. | System and method for data protection with multidimensional parity |
US6718361B1 (en) | 2000-04-07 | 2004-04-06 | Network Appliance Inc. | Method and apparatus for reliable and scalable distribution of data files in distributed networks |
WO2002035359A2 (en) | 2000-10-26 | 2002-05-02 | Prismedia Networks, Inc. | Method and system for managing distributed content and related metadata |
US7140044B2 (en) | 2000-11-13 | 2006-11-21 | Digital Doors, Inc. | Data security system and method for separation of user communities |
US7146644B2 (en) | 2000-11-13 | 2006-12-05 | Digital Doors, Inc. | Data security system and method responsive to electronic attacks |
US8176563B2 (en) | 2000-11-13 | 2012-05-08 | DigitalDoors, Inc. | Data security system and method with editor |
US7103915B2 (en) | 2000-11-13 | 2006-09-05 | Digital Doors, Inc. | Data security system and method |
GB2369206B (en) | 2000-11-18 | 2004-11-03 | Ibm | Method for rebuilding meta-data in a data storage system and a data storage system |
US6785783B2 (en) | 2000-11-30 | 2004-08-31 | International Business Machines Corporation | NUMA system with redundant main memory architecture |
US7080101B1 (en) | 2000-12-01 | 2006-07-18 | Ncr Corp. | Method and apparatus for partitioning data for storage in a database |
US20020080888A1 (en) | 2000-12-22 | 2002-06-27 | Li Shu | Message splitting and spatially diversified message routing for increasing transmission assurance and data security over distributed networks |
US6857059B2 (en) | 2001-01-11 | 2005-02-15 | Yottayotta, Inc. | Storage virtualization system and methods |
US20020156974A1 (en) | 2001-01-29 | 2002-10-24 | Ulrich Thomas R. | Redundant dynamically distributed file system |
US20030037261A1 (en) | 2001-03-26 | 2003-02-20 | Ilumin Corporation | Secured content delivery system and method |
US6879596B1 (en) | 2001-04-11 | 2005-04-12 | Applied Micro Circuits Corporation | System and method for systolic array sorting of information segments |
US7024609B2 (en) | 2001-04-20 | 2006-04-04 | Kencast, Inc. | System for protecting the transmission of live data streams, and upon reception, for reconstructing the live data streams and recording them into files |
GB2377049A (en) | 2001-06-30 | 2002-12-31 | Hewlett Packard Co | Billing for utilisation of a data storage array |
US6944785B2 (en) | 2001-07-23 | 2005-09-13 | Network Appliance, Inc. | High-availability cluster virtual server system |
US7636724B2 (en) | 2001-08-31 | 2009-12-22 | Peerify Technologies LLC | Data storage system and method by shredding and deshredding |
US7024451B2 (en) | 2001-11-05 | 2006-04-04 | Hewlett-Packard Development Company, L.P. | System and method for maintaining consistent independent server-side state among collaborating servers |
US7003688B1 (en) | 2001-11-15 | 2006-02-21 | Xiotech Corporation | System and method for a reserved memory area shared by all redundant storage controllers |
US7171493B2 (en) | 2001-12-19 | 2007-01-30 | The Charles Stark Draper Laboratory | Camouflage of network traffic to resist attack |
US20030163507A1 (en) * | 2002-02-26 | 2003-08-28 | Zarlink Semiconductor V.N. Inc. | Task-based hardware architecture for maximization of intellectual property reuse |
CA2493610C (en) | 2002-07-29 | 2014-01-14 | Robert Halford | Multi-dimensional data protection and mirroring method for micro level data |
US7051155B2 (en) | 2002-08-05 | 2006-05-23 | Sun Microsystems, Inc. | Method and system for striping data to accommodate integrity metadata |
US20040122917A1 (en) | 2002-12-18 | 2004-06-24 | Menon Jaishankar Moothedath | Distributed storage system for data-sharing among client computers running defferent operating system types |
CA2519116C (en) | 2003-03-13 | 2012-11-13 | Drm Technologies, Llc | Secure streaming container |
US7185144B2 (en) | 2003-11-24 | 2007-02-27 | Network Appliance, Inc. | Semi-static distribution technique |
GB0308264D0 (en) | 2003-04-10 | 2003-05-14 | Ibm | Recovery from failures within data processing systems |
GB0308262D0 (en) | 2003-04-10 | 2003-05-14 | Ibm | Recovery from failures within data processing systems |
US7415115B2 (en) | 2003-05-14 | 2008-08-19 | Broadcom Corporation | Method and system for disaster recovery of data from a storage device |
EP1668486A2 (en) | 2003-08-14 | 2006-06-14 | Compellent Technologies | Virtual disk drive system and method |
US7899059B2 (en) | 2003-11-12 | 2011-03-01 | Agere Systems Inc. | Media delivery using quality of service differentiation within a media stream |
US8332483B2 (en) | 2003-12-15 | 2012-12-11 | International Business Machines Corporation | Apparatus, system, and method for autonomic control of grid system resources |
US7206899B2 (en) | 2003-12-29 | 2007-04-17 | Intel Corporation | Method, system, and program for managing data transfer and construction |
US7222133B1 (en) | 2004-02-05 | 2007-05-22 | Unisys Corporation | Method for reducing database recovery time |
US7240236B2 (en) | 2004-03-23 | 2007-07-03 | Archivas, Inc. | Fixed content distributed data storage using permutation ring encoding |
US7231578B2 (en) | 2004-04-02 | 2007-06-12 | Hitachi Global Storage Technologies Netherlands B.V. | Techniques for detecting and correcting errors using multiple interleave erasure pointers |
JP4446839B2 (ja) | 2004-08-30 | 2010-04-07 | 株式会社日立製作所 | ストレージ装置及びストレージ管理装置 |
US20060080389A1 (en) * | 2004-10-06 | 2006-04-13 | Digipede Technologies, Llc | Distributed processing system |
US7680771B2 (en) | 2004-12-20 | 2010-03-16 | International Business Machines Corporation | Apparatus, system, and method for database provisioning |
US7386758B2 (en) | 2005-01-13 | 2008-06-10 | Hitachi, Ltd. | Method and apparatus for reconstructing data in object-based storage arrays |
US7672930B2 (en) | 2005-04-05 | 2010-03-02 | Wal-Mart Stores, Inc. | System and methods for facilitating a linear grid database with data organization by dimension |
US8555109B2 (en) * | 2009-07-30 | 2013-10-08 | Cleversafe, Inc. | Method and apparatus for distributed storage integrity processing |
US7546427B2 (en) | 2005-09-30 | 2009-06-09 | Cleversafe, Inc. | System for rebuilding dispersed data |
US7574579B2 (en) | 2005-09-30 | 2009-08-11 | Cleversafe, Inc. | Metadata management system for an information dispersed storage system |
US8880799B2 (en) * | 2005-09-30 | 2014-11-04 | Cleversafe, Inc. | Rebuilding data on a dispersed storage network |
US8285878B2 (en) | 2007-10-09 | 2012-10-09 | Cleversafe, Inc. | Block based access to a dispersed data storage network |
US7574570B2 (en) | 2005-09-30 | 2009-08-11 | Cleversafe Inc | Billing system for information dispersal system |
US8171101B2 (en) * | 2005-09-30 | 2012-05-01 | Cleversafe, Inc. | Smart access to a dispersed data storage network |
US7953937B2 (en) * | 2005-09-30 | 2011-05-31 | Cleversafe, Inc. | Systems, methods, and apparatus for subdividing data for storage in a dispersed data storage grid |
US7904475B2 (en) | 2007-10-09 | 2011-03-08 | Cleversafe, Inc. | Virtualized data storage vaults on a dispersed data storage network |
US8352782B2 (en) * | 2005-09-30 | 2013-01-08 | Cleversafe, Inc. | Range based rebuilder for use with a dispersed data storage network |
US20070214285A1 (en) | 2006-03-08 | 2007-09-13 | Omneon Video Networks | Gateway server |
JP2008077428A (ja) * | 2006-09-21 | 2008-04-03 | Fujitsu Ltd | 負荷分散装置、負荷分散方法及び負荷分散プログラム |
US8151082B2 (en) * | 2007-12-06 | 2012-04-03 | Fusion-Io, Inc. | Apparatus, system, and method for converting a storage request into an append data storage command |
WO2008070814A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a scalable, composite, reconfigurable backplane |
KR101221913B1 (ko) * | 2006-12-20 | 2013-01-15 | 엘지전자 주식회사 | 디지털 방송 시스템 및 데이터 처리 방법 |
US8572429B2 (en) | 2007-10-09 | 2013-10-29 | Cleversafe, Inc. | Optimistic data writing in a dispersed storage network |
US8819179B2 (en) | 2007-10-09 | 2014-08-26 | Cleversafe, Inc. | Data revision synchronization in a dispersed storage network |
US20090204593A1 (en) * | 2008-02-11 | 2009-08-13 | Yahoo! Inc. | System and method for parallel retrieval of data from a distributed database |
US8819011B2 (en) * | 2008-07-16 | 2014-08-26 | Cleversafe, Inc. | Command line interpreter for accessing a data object stored in a distributed storage network |
US10230692B2 (en) * | 2009-06-30 | 2019-03-12 | International Business Machines Corporation | Distributed storage processing module |
US8438456B2 (en) * | 2009-10-05 | 2013-05-07 | Cleversafe, Inc. | Method and apparatus for dispersed storage of streaming data |
US8468368B2 (en) * | 2009-12-29 | 2013-06-18 | Cleversafe, Inc. | Data encryption parameter dispersal |
US8959366B2 (en) * | 2010-01-28 | 2015-02-17 | Cleversafe, Inc. | De-sequencing encoded data slices |
US8918674B2 (en) * | 2010-01-28 | 2014-12-23 | Cleversafe, Inc. | Directory file system in a dispersed storage network |
US20110184997A1 (en) | 2010-01-28 | 2011-07-28 | Cleversafe, Inc. | Selecting storage facilities in a plurality of dispersed storage networks |
US8352707B2 (en) * | 2010-06-10 | 2013-01-08 | HGST Netherlands B.V. | Implementing enhanced host to physical storage mapping using numerical compositions for persistent media |
US8892598B2 (en) * | 2010-06-22 | 2014-11-18 | Cleversafe, Inc. | Coordinated retrieval of data from a dispersed storage network |
US8832234B1 (en) * | 2012-03-29 | 2014-09-09 | Amazon Technologies, Inc. | Distributed data storage controller |
US9537609B2 (en) * | 2012-08-02 | 2017-01-03 | International Business Machines Corporation | Storing a stream of data in a dispersed storage network |
-
2012
- 2012-12-06 US US13/707,471 patent/US9009564B2/en not_active Expired - Fee Related
- 2012-12-06 US US13/707,428 patent/US9298548B2/en active Active
- 2012-12-06 US US13/707,502 patent/US8898542B2/en active Active
- 2012-12-06 US US13/707,490 patent/US9304857B2/en not_active Expired - Fee Related
- 2012-12-06 US US13/707,525 patent/US9304858B2/en not_active Expired - Fee Related
- 2012-12-06 US US13/707,542 patent/US9015556B2/en active Active
- 2012-12-11 EP EP12856963.9A patent/EP2791805B1/en active Active
- 2012-12-11 CN CN201280061203.0A patent/CN104106055B/zh not_active Expired - Fee Related
- 2012-12-11 WO PCT/US2012/068883 patent/WO2013090233A1/en unknown
-
2014
- 2014-09-22 US US14/492,602 patent/US9268639B2/en active Active
-
2015
- 2015-03-02 US US14/635,178 patent/US9292385B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480909B2 (en) * | 2002-02-25 | 2009-01-20 | International Business Machines Corporation | Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking |
US20070050543A1 (en) * | 2005-08-31 | 2007-03-01 | Ori Pomerantz | Storage of computer data on data storage devices of differing reliabilities |
CN101276364A (zh) * | 2007-03-30 | 2008-10-01 | 阿里巴巴公司 | 一种分布式计算数据合并方法、系统及其装置 |
US20110029524A1 (en) * | 2009-07-30 | 2011-02-03 | Cleversafe, Inc. | Dispersed storage network virtual address fields |
US20110264717A1 (en) * | 2010-04-26 | 2011-10-27 | Cleversafe, Inc. | Storage and retrieval of required slices in a dispersed storage network |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426493A (zh) * | 2015-11-24 | 2016-03-23 | 北京中电普华信息技术有限公司 | 一种应用于分布式存储系统的数据处理系统及方法 |
CN105426493B (zh) * | 2015-11-24 | 2019-11-19 | 北京中电普华信息技术有限公司 | 一种应用于分布式存储系统的数据处理系统及方法 |
US11256539B2 (en) | 2016-02-29 | 2022-02-22 | Alibaba Group Holding Limited | Task processing method, apparatus, and system based on distributed system |
TWI655549B (zh) * | 2017-12-28 | 2019-04-01 | 李耀庭 | 分散式運算系統 |
CN109976899A (zh) * | 2017-12-28 | 2019-07-05 | 李耀庭 | 一种分布式运算系统 |
CN114647539A (zh) * | 2022-03-17 | 2022-06-21 | 北京涵鑫盛科技有限公司 | 一种分布式存储系统的数据自动恢复方法 |
Also Published As
Publication number | Publication date |
---|---|
US9292385B2 (en) | 2016-03-22 |
US9304857B2 (en) | 2016-04-05 |
EP2791805B1 (en) | 2018-05-23 |
CN104106055B (zh) | 2016-12-28 |
US20130151928A1 (en) | 2013-06-13 |
WO2013090233A8 (en) | 2014-06-12 |
US9009564B2 (en) | 2015-04-14 |
US8898542B2 (en) | 2014-11-25 |
US20150012797A1 (en) | 2015-01-08 |
US9304858B2 (en) | 2016-04-05 |
US20150178160A1 (en) | 2015-06-25 |
US20130151926A1 (en) | 2013-06-13 |
US20130151925A1 (en) | 2013-06-13 |
US9298548B2 (en) | 2016-03-29 |
WO2013090233A1 (en) | 2013-06-20 |
US20130151581A1 (en) | 2013-06-13 |
EP2791805A4 (en) | 2015-07-22 |
US20130151670A1 (en) | 2013-06-13 |
US20130151927A1 (en) | 2013-06-13 |
EP2791805A1 (en) | 2014-10-22 |
US9015556B2 (en) | 2015-04-21 |
US9268639B2 (en) | 2016-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104106055B (zh) | 数据任务的分布式计算方法和分散存储模块 | |
US10606507B2 (en) | Coordination of connection initiation scheduling in a distributed storage network (DSN) | |
US10621044B2 (en) | Mapping slice groupings in a dispersed storage network | |
US10394613B2 (en) | Transferring task execution in a distributed storage and task network | |
US10303521B2 (en) | Determining task distribution in a distributed computing system | |
US10635536B2 (en) | Dynamic distributed agreement protocols in a dispersed storage network | |
US10205783B2 (en) | Identifying a task execution resource of a dispersed storage network | |
US10346250B2 (en) | Configuring storage resources of a dispersed storage network | |
US9354972B2 (en) | Efficiently storing data in a dispersed storage network | |
US10402122B2 (en) | Transferring encoded data slices in a dispersed storage network | |
US20170250809A1 (en) | Cryptographic key storage in a dispersed storage network | |
US20170168749A1 (en) | Method for generating addresses in a dispersed storage network | |
US20150356305A1 (en) | Secure data access in a dispersed storage network | |
US10169125B2 (en) | Re-encoding data in a dispersed storage network | |
US20140297776A1 (en) | Efficient storage of data in a dispersed storage network | |
CN106233259A (zh) | 在分散存储网络中检索多世代存储数据 | |
US10437673B2 (en) | Internet based shared memory in a distributed computing system | |
US20180336095A1 (en) | Mapping slice groupings in a dispersed storage network | |
US10740180B2 (en) | Storing and retrieving data using proxies | |
US20180089027A1 (en) | Pessimistic reads and other smart-read enhancements with synchronized vaults | |
US20180107551A1 (en) | Rebuilding encoded data slices in a dispersed storage network | |
US20170123719A1 (en) | Reclaiming storage capacity in a dispersed storage network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
C41 | Transfer of patent application or patent right or utility model | ||
GR01 | Patent grant | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20161209 Address after: American New York Applicant after: International Business Machines Corp. Address before: Illinois State Applicant before: CLEVERSAFE INC |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161228 Termination date: 20191211 |
|
CF01 | Termination of patent right due to non-payment of annual fee |