CN105408871A - 用于提供冗余数据访问的方法和装置 - Google Patents
用于提供冗余数据访问的方法和装置 Download PDFInfo
- Publication number
- CN105408871A CN105408871A CN201480041546.XA CN201480041546A CN105408871A CN 105408871 A CN105408871 A CN 105408871A CN 201480041546 A CN201480041546 A CN 201480041546A CN 105408871 A CN105408871 A CN 105408871A
- Authority
- CN
- China
- Prior art keywords
- data
- data segment
- server
- data item
- request
- 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.)
- Pending
Links
Classifications
-
- 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/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- 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
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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
-
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1443—Transmit or communication errors
-
- 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
-
- 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/1011—Clustered RAID, i.e. clustered or de-clustered RAID where data and parity are spread over more disks than blocks in a parity group
-
- 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/105—On the fly coding, e.g. using XOR accumulators
-
- 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/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
-
- 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/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
不同实施例提供了一种用于提供冗余数据访问的方法和装置。详细地来说,对客户端请求数据项的响应包括由对应选择的多个服务器中的每一个服务器选择将被提供给客户端的数据项的数据段。详细地来说,相对于数据项,数据段在尺寸上更小,以及被配置以使得可以使用被发送的数据段的真子集来构建数据项。
Description
技术领域
本发明一般地涉及用于提供冗余数据访问的方法和装置。
背景技术
本节介绍了可有助于促进更好地理解本发明的方面。因此,本节的陈述应当从这个角度来认识,不应被理解为承认什么是现有技术或什么不是现有技术。
在一些已知的冗余数据访问方案中,客户端发送N个请求到不同的服务器,并处理在答复中被接收的第一个响应。
发明内容
在下面的综述中一些简化可能被做出,其只在突出和介绍不同示例性实施例的一些方面,然而这样的简化并非旨在限制本发明的范围。将在后续章节中提供足以允许本领域普通技术人员的技术人员能够制造和使用本发明概念的优选的示例性实施例的详细说明。
不同的实施例提供了一种用于提供冗余数据访问的方法和装置。详细地来说,对客户端请求数据项的响应包括由对应选择的多个服务器中的每一个选择将被提供给客户端的数据项的数据段。详细地来说,相对于所述数据项,所述数据段在尺寸上更小,以及被配置以使得可以使用被发送的数据段的真子集来构建数据项。
在第一实施例中,提供了一种设备,用于提供冗余数据访问的装置。该装置包括数据存储装置和被以通信地方式连接到数据存储装置的处理器。该处理器被编程以:选择数据项;基于该数据项和编码算法确定多个数据段请求;确定与多个数据段请求对应的多个服务器;以及发送多个数据段请求至对应的多个服务器。
在第二实施例中,提供了一种用于提供冗余数据访问的系统。该系统包括多个客户端、多个服务器和被以通信地方式连接到多个客户端和多个服务器的控制器。客户端中的至少一个被配置以请求数据项。选择的多个服务器中的至少每一个被配置以:存储至少一个数据项或与该数据项相关联的数据段。控制器被编程以:基于来自至少一个客户端的数据项请求选择数据项;基于该数据项和编码算法确定多个数据段请求;确定与所述多个数据段请求对应的多个目标服务器,所述多个目标服务器是多个服务器中的子集;以及发送所述多个数据段请求至对应的多个目标服务器。
在第三实施例中,提供了一种用于提供冗余数据访问的方法。该方法包括:选择数据项;基于该数据项和编码算法确定多个数据段请求;确定与所述多个数据段请求对应的多个服务器;以及发送所述多个数据段请求至对应的多个服务器。
在第四实施例中,非暂时性计算机可读存储介质被提供用于存储指令,当由计算机执行时所述指令使得该计算机执行一种方法。该方法包括:选择数据项;基于该数据项和编码算法确定多个数据段请求;确定与所述多个数据段请求对应的多个服务器;以及发送所述多个数据段请求至对应的多个服务器。
一些上述实施例中,多个数据段请求被配置使得响应于所述多个数据段请求从所述多个服务器接收的预期的数据段的集合是这样的,与所述数据项相比,所述预期的数据段的集合的数据段成员在尺寸上更小,以及可使用预期的数据段的集合的真子集构建所述数据项。
一些上述实施例中,编码算法包括将数据项分成若干字面数据段以及与两个或更多的字面数据段逻辑相关的一个或多个数据段。
一些上述实施例中,处理器被进一步编程以选择,或者方法进一步包括选择:基于通过网络发送的比特模式的估计优化来选择编码算法。
一些上述实施例中,处理器被进一步编程以选择,或方法进一步包括基于一个或多个系统特性选择编码算法。
一些上述实施例中,编码算法包括基于一个或多个系统特性的数据段尺寸。
一些上述实施例中,编码算法基于多个服务器中的至少一部分对应的多个工作负载。
一些上述实施例中,处理器被进一步编程以,或者方法进一步包括:基于与多个服务器中的至少一个交换一个或多个消息来选择编码算法。
一些上述实施例中,多个数据段的请求包括编码算法指示。
一些上述实施例中,处理器被进一步编程,或者方法进一步包括:接收来自多个服务器的多个服务器响应;并基于解码算法从多个服务器响应构建多个数据项。其中多个服务器响应是整个预期的服务器响应的集合的真子集。
一些上述实施例中,选择的多个服务器被进一步配置以:接收多个数据段请求中的一个;基于该数据段请求和数据段编码算法确定服务器响应;并发送服务器响应到控制器。
在第五实施例中,提供了一种用于提供冗余数据访问的装置。该装置包括数据存储装置和被以通信地方式连接到该数据存储装置的处理器。处理器被编程以:选择数据项;基于该数据项和编码算法确定多个数据段;确定与多个数据段请求对应的至少一个服务器;以及发送多个数据段到至少一个对应的多个服务器。
一些上述实施例中,处理器被进一步编程,或者方法进一步包括:从至少一个第二服务器接收第二个多个数据段;以及基于该第二个多个数据段和解码算法构建第二数据项。其中第二个多个数据段是与第二数据项相关联的整个数据段的集合的真子集。
附图说明
附图中示出了不同的实施例,其中:
图1示出了用于提供冗余数据访问的冗余数据访问系统100的实施例。
图2描述了示出方法200的实施例的流程图,用于冗余数据访问系统(例如,图1的系统100)提供冗余数据访问。
图3描述了示出方法300的实施例的流程图,用于控制器(例如,图1的控制器140)发送如图2的步骤240中所示出的“N”个已确定的服务器请求。
图4描述了示出方法400的实施例的流程图,用于客户端或控制器(例如,图1的客户端120中的一个或控制器140)如图2的步骤280所示出的重建数据项;以及
图5示意性地示出了不同装置的实施例500,所述装置诸如图1中的客户端120中的一个,服务器130中的一个或控制器140。
为了便于理解,相同的参考标号被用于指定具有基本相同或类似的结构或基本相同或相似的功能的元件。
具体实施方式
说明书和附图仅说明本发明的原理。因此应理解本领域的技术人员将能够设计各种体现了本发明的原理并被包括在其范围之内的布置,尽管其没有被明确地描述或示出。此外,本文列举的所有示例都旨在出于教学目的而表述以帮助读者理解本发明的原理和发明人提供的概念以促进本领域的发展,并且应被解释为不限于这些特定引用的示例和条件。此外,本文描述的不同实施例并不一定是互斥,因为一些实施例可以与一个或多个其他实施例相结合以形成新的实施例。
除非另有说明(例如,“否则”或“或可选择的”),本文所使用的术语“或”是指非排他性的。此外,除非另有说明,本文所使用的用于描述元件之间关系的词语应当被广义地解释为包括直接的关系或存在中间元件。例如,当元件被称为“连接”或“耦合”到另一元件时,该元件可以直接连接或耦合到另一元件,或者可以存在中间元件。相反,当元件被称为被“直接连接”或“直接耦合”到另一元件时,不存在中间元件。同样地,诸如“之间”、“相邻”等词语应被以类似的方式解释。
不同实施例提供了一种用于提供冗余数据访问的方法和装置。详细地说,对客户端请求数据项的响应包括由对应选择的多个服务器中的每一个服务器选择将被提供给客户端的数据项的数据段。详细地来说,相对数据项,数据段在尺寸上更小,以及被配置以使得可以使用被发送的数据段的真子集来构建数据项。
有利的是,通过使用被发送的数据段的真子集重建数据项时,由于数据项可能在接收丢失或时延的数据段之前被构建,响应的鲁棒性和时延特性可能被提高。此外,总传输时间可能会降低,因为数据段可以在它们各自的通信路径上被并行地发送。
图1示出了用于提供冗余数据访问的冗余数据访问系统100的实施例。冗余数据访问系统100包括一个或多个客户端120-1–120-n(统称为客户端120),其通过建立在通信路径上的通信流访问驻留在一个或多个服务器130-1–130-n(服务器130)上的一个或多个数据项(为了清楚起见未示出)。其中,一个或多个数据项的存储或一个或多个数据项的访问由控制器140控制。通信路径包括链路125-1–125-n(统称为链路125)中适当的一个、网络110以及链路135-1–135-n(统称为链路135)中适当的一个。
本文所定义的“数据项”被广泛地解释为可在客户端和服务器之间被传送的任何合适的数据,诸如,例如:文件、网页、数据流或消息。此外,本文所定义的“数据段”被广泛地解释为以正常或编码格式代表数据项的全部或部分的数据。
网络110包括任意数量的访问和边缘节点、网络设备以及任何数量和配置的链路。此外,应理解,网络110可包括任何组合的和任何数量的无线或有线线路网络,包括:LTE、GSM、CDMA、局域网(LAN)、无线局域网(WLAN),广域网(WAN),城域网(MAN)等等。
客户端120可以包括能够经由一个或多个链路125在网络110上发送或接收信息(例如,分组)的任何类型的通信设备。例如,通信设备可以是瘦客户端、智能电话(例如,客户端120-1)、个人或笔记本电脑(例如,客户端110-1)、服务器、网络设备、平板电脑(例如,客户端120-n)、电视机顶盒、媒体播放器等等。通信设备可以依靠示例系统内的其他资源以执行任务的一部分,诸如处理或存储,或者可以能够独立地执行任务。应理解,虽然这里示出了三个客户端,系统100可以包括更少或更多的客户端。此外,在任何一个时间客户端的数量可以是动态的,因为在操作期间客户端可以在不同时间加入系统被或从系统中被减去。
链路125和135支持在一个或多个通信信道上通信,所述通信信道诸如:无线通信(例如,LTE、GSM、CDMA、蓝牙);WLAN通信(例如,WiFi);分组网络通信(例如,IP);存储通信(例如,光纤通道、iSCSI)等等。应理解,虽然被描述为单个连接,通信信道125和135可以是任何数量或组合的通信信道。
服务器130可以包括能够存储数据项或数据段并经由一个或多个链路135在网络110上发送或接收信息(例如,分组)的任何合适的设备。
控制器140可以是能够选择将由对应选择的多个服务器130中的每一个提供给客户端(例如,客户端120-1)的数据项的数据段的任何合适的设备。详细地来说,与数据项相比,数据段在尺寸上更小,以及被配置以使得可以使用所发送的数据段的真子集来构建数据项。
应理解,虽然这里仅示出了一个控制器,系统100可以包括多个控制器。应进一步理解,虽然被示为被通过网络110连接到客户端120和130,控制器140在系统100内可以以任何合适的配置放置。应进一步理解,虽然被示为单独的设备,控制器可以在客户端120中的一个或多个或在服务器130之中(例如,控制器功能可以被分布在一个或多个客户端、服务器或控制器之间)。
控制器140的一些实施例中,控制器被放置在客户端120和网络110之间。例如,控制器可以是边缘设备或数据中心内的设备。这些实施例之一中,控制器接收客户端请求,基于客户端请求确定若干服务器数据段请求,发送每个服务器数据段请求至所选的服务器,接收来自服务器的响应,并在控制器已经从至少部分应答服务器接收了合适的内容段时装配所请求的数据项。
在控制器140的一些实施例中,控制器在客户端120的一个或多个之中。
在控制器140的一些实施例中,控制器在服务器130的一个或多个之中。
在控制器140的一些实施例中,控制器至少部分地分布在客户端120的一个或多个或服务器130的一个或多个之中。
在一些实施例中,控制器140通过发送信息到每个选择服务器来与提供数据段的服务器通信,所述信息标识所选择的服务器将提供什么数据段。
图2描述了示出方法200的实施例的流程图,方法200用于冗余数据访问系统(例如,图1的系统100)以提供冗余数据访问。该方法开始于步骤205,并且包括:请求数据项(步骤220);基于数据项和编码算法发送“N”个所确定的服务器请求(步骤240);响应于所接收的服务器请求发送“M”个服务器响应(步骤260);从对应于所确定的服务器请求的所接收的服务器响应构建数据项(步骤280);并且该方法结束于步骤395。
在方法200中,步骤220包括请求的数据项(例如,通过图1中的客户端120中的一个)。详细地来说,执行该方法的装置接收到数据项检索触发事件,并发起请求以检索被标识的数据项。数据项检索触发事件可以是标识被检索的数据项的任何合适的事件,诸如:(i)从用户接口接收请求(例如,诸如客户端设备上的网页提示);(ii)确定执行操作所需的数据项(例如,来自确定检索数据项的需求的应用,诸如下载供使用的文件);或(iii)类似事件。检索被标识的数据项的请求可以是用于从源检索数据项的任何合适的方法,所述源例如:(i)在网络上发送请求到服务器或控制器(例如,图1中服务器130或控制器140中的一个或多个在图1的网络110上经由HTTP协议请求网页);(ii)经由内部通信信道发送请求(例如,客户端经由内部通信信道与同一数据中心或设备内的控制器通信);或(iii)类似物。
在方法200中,步骤240包括发送“N”个基于数据项和编码算法所确定的服务器请求(例如,通过图1中的控制器140到图1的服务器130中的“N”个)。详细地来说,算法被用于确定表示被请求的数据项的数据段的集合以及对应服务器的集合,为该对应服务器的集合定向各自的请求以用于被选择的数据段集合中的每一个。例如,由4个字节组成的数据项“0xA5C3”可以由三个数据段A、B和表示。其中A是表示半个数据项的数据段(例如,“0xA5”),B是表示另半个数据项的数据段(例如,“0xC3”),数据段表示数据段A和B的逐位异或(例如,0x66)。此外,由于算法选择三个数据段来表示数据项,“N”可以是三并且请求可被发送到三个不同的服务器,向每个服务器请求相应的数据段。
在方法200中,响应于所接收的在步骤240中发送的服务器请求,步骤260包括发送“M”个服务器响应(例如,由图1中的服务器130中的“M”个服务器)。详细地来说,接收用于数据项的服务器请求的服务器的子集中的每一个服务器通过提供所请求的数据段进行响应。应理解,由于数据项可以通过使用数据段的真子集被构建,“M”可以小于或等于“N”(例如,如果服务器中的一个没有接收到其对应的服务器请求)。
在方法200中,步骤280包括从步骤260中接收到的服务器响应构建数据项(例如,由图1中的控制器140或客户端120中的一个)。详细地来说,当执行该方法步骤的装置接收到足以构建数据项的数据段的真子集时,该装置构建数据项。例如,使用上面的示例,该装置可以在接收集合中的任意两个数据段后构建数据项。
在步骤260的一些实施例中,一个或多个服务器(例如,图1中的服务器130)存储数据项和与该数据项相关的一个或多个数据段。
在步骤260的一些实施例中,一个或多个服务器只存储数据项。应理解,一个或多个服务器可随后在接收到服务器的请求时确定所请求的数据段。这些实施例中的一些中,服务器可以在其已经处理请求之后存储数据段,以在未来请求同样数据段时减少处理成本。在进一步的实施例中,数据段的存储可根据事件被删除,所述事件诸如可用存储低于阈值或自最后一次请求后的寿命。
图3描述了示出方法300的实施例的流程图,该方法用于控制器(例如,图1的控制器140)以发送图2步骤240中所示的“N”个已确定的服务器请求。该方法开始于步骤305,并且包括:选择数据项(步骤310);基于数据项和编码算法确定“N”个数据段请求(步骤320);确定与“N”个数据段的对应“N”个服务器(步骤340);以及在确定了数据段请求应该被发送时(步骤360),发送所选择的“N”个数据段请求中的每一个到对应的服务器(步骤380)。该方法结束于步骤395。
在方法300中,步骤310包括选择数据项。数据项选择可以包括任何合适的方法诸如,例如:(i)从客户端(例如,图1中的客户端120-1)接收指定数据项的请求;(ii)从(例如,诸如客户端设备上的)用户接口接收请求;(iii)确定执行操作所需要的数据项(例如,从确定检索数据项的需求的应用);或(iv)类似方法。
在方法300中,步骤320包括基于数据项和编码算法确定“N”个数据段请求。详细地来说,“N”个数据段请求的集合被确定以使得从数据段请求中得到的数据段的集合提供了与数据项相比在尺寸上较小的数据段的集合,以及被配置以使得可以使用数据段的真子集来构建数据项。
在方法300中,步骤340包括确定与“N”个数据段对应的“N”个服务器。详细地来说,对于“N”个数据段请求中的每一个,服务器被选择以响应对应的数据段。可以基于任何合适的方法选择服务器,包括:(i)随机选择;(ii)轮询选择;(iii)利用服务质量的指标(例如,时延);(iv)使用成本指标;(v)使用路径或资源多样性的考虑(例如,最大限度地减少多个数据段在拥塞或故障链路或组件上丢失的风险);或(vi)类似方法。应理解,一个服务器可以被选择以服务一个以上的数据段。
在方法300中,步骤360包括确定是否有任何数据段请求将传送。如果执行该方法的装置具有数据段请求将传送,则该方法前进到步骤380,否则该方法在步骤395结束。该确定可以包括任何合适的方法诸如:(i)确定所有数据段请求已被发送;(ii)确定已经接收足够的数据段来构建数据项;或(iii)类似方法。
在方法300中,步骤380包括使用传统传输技术发送在步骤320中确定的数据段请求到步骤340中确定的对应服务器。
在步骤320的一些实施例中,确定包括检索关于数据项的信息。可以通过任何合适的方法检索关于数据项的信息,诸如:(i)与承载数据项的服务器的消息交换;(ii)与负责数据项的管理系统的消息交换;或(iii)类似方法。
在步骤320的一些实施例中,确定包括检索关于系统的信息。关于系统信息可以是任何合适的信息,诸如:(i)服务质量参数,诸如网络中的通信路径时延;(ii)成本参数,诸如存储成本、网络成本或系统组件的处理成本;(iii)传输参数,诸如传输协议;或(iv)类似信息。
在步骤320的一些实施例中,编码算法包括将数据项分成若干字面数据段和与两个或更多的字面数据段逻辑相关的一个或多个数据段。在这些实施例中的一些中,数据项被划分成“X”个字面数据段和与“Y”个逻辑相关的数据段。这些实施例中的一些中,X=2并且Y=1。在一些其它实施例中,X=3并且Y=2。逻辑相关的数据段可以使用任何合适的算法从字面数据段中确定,所述算法诸如:(i)逐字节运算,诸如字面数据段的加法或减法;(ii)逐比特运算,诸如字面数据段的减或异或;或(iii)类似算法。
在步骤320的一些实施例中,编码算法包括:基于通过网络发送的比特模式的估计优化来选择编码算法。例如,如果发送大部分为0比特是有利的,可以在若干编码算法之间进行比较并选择在结果模式中具有计算出的较高0比特百分比的算法。
在步骤320的一些实施例,编码算法包括选择基于一个或多个系统特性选择编码算法,所述系统特性诸如传输单元特性。在这些实施例中的一些中,数据段的尺寸可以基于系统参数以便减少网络上的分组碎片开销。例如,一些以太网使用的1500字节的标准MTU(最大传输单元)。通过将5000个字节的内容编码为4个每1500个字节一个的数据段,相同总量的4个数据段被发送(5000/1500向上取整(roundedup)),减轻了带宽开销。作为另一示例,一些路由器中交换结构被设计用于特定的最佳的单元(cell)尺寸(例如128字节)。通过编码为这样的单元尺寸的多倍,路由器中通过网络的转发开销可以被降低。作为第三个示例,存储设备(例如磁盘驱动器)可以使用特定的块尺寸用于存储(例如4096字节);通过为这样的块尺寸编码,这些磁盘的读出效率可以被提升。类似的,可以基于客户端的高速缓存尺寸和网络元件的中间缓冲器尺寸确定数据段的尺寸。
在步骤320的一些实施例中,编码算法包括:基于服务器工作负载选择编码算法。在这些实施例中的一些中,该选择基于基于成本选择服务器。例如,可以选择具有较便宜的CPU、存储装置或网络带宽的服务器。在本示例中,如果被选择的服务器的配置能够以1Gbps传送数据,并且给定的应用使用必须在5秒内传送的10Gb的大文件,可以选择编码算法以使得该数据项被编码成3个数据段,重建数据项需要其中的2个。应理解,这两个响应服务器随后可以满足给定的服务质量期限(即,每服务器传送5Gb/1Gbps服务器传送速度=5秒)。
在步骤320的一些实施例中,数据段请求只包括数据项标识符(例如,标识数据项的名字,诸如URL或文件名)。在这些实施例中的一些中,服务器被配置有使得服务器只存储数据项的一个数据段。例如,向服务器只存储数据项的“B”数据段的检索{http://www.alcatel-lucent.com/}的数据段请求从该服务器请求“B”数据段。
在步骤320的一些实施例中,数据段请求包括数据项标识符(例如,标识数据项的名字,诸如URL或文件名)和编码算法指示。编码算法指示可以是任何合适的指示,其提供关于如何编码数据项以提供特定的数据段的信息到服务器。在一些实施例中,编码算法指示可以是已知数据段的索引。例如,编码算法被设定使用{A,B,A+B}的检索{http://www.alcatel-lucent.com/,“2”}的数据段请求指定服务器返回数据项的“B”数据段。在一些其他实施例中,编码算法指示可以是到数据段编码算法的表的索引,诸如{N/2(1)、N/2(2)、N/2(1+2)},其中“2“的选择指定了数据段算法N/2(2),其可以等同于上述的数据项中的“B”数据段编码。在步骤320的一些实施例中,编码算法指示指定用于服务器的编码算法以确定数据段。例如,检索{http://www.alcatel-lucent.com,“N/2(1+2)”}的数据段请求可指定服务器返回数据项的前半部分和后半部分的逐字节相加。应理解,任何合适的协议可以被用于指定一个特定数据段编码算法来应用在数据项上。
在步骤320的一些实施例中,数据段请求包括以重复块为基础编码数据项的指令。详细地来说,编码算法被应用于数据项的一部分上而不是整个数据项。例如,对于具有2M字节的数据项(例如,视频),{A,B,A+B}编码算法可以应用在每1000个字节上。有利的是,流式数据项可以通过以重复块为基础编码数据项实现提高的时延和鲁棒性。
在步骤360和380的一些实施例中,数据段请求被并行发送。
在步骤360和380的一些实施例中,一个或多个数据段请求被重发。这些实施例中的一些中,数据段的请求被重发到不同的服务器(即,执行该方法的装置返回到步骤340以确定与重发数据段请求对应的至少一个服务器)。这些实施例中的一些中,重发的数据段请求被发送到服务器——先前已从该服务器成功的接收到服务器响应。有利的,向从其成功接收到响应的服务器重试失败的请求可以提高性能。
在进一步的实施例中,数据段请求的重新发送是基于确定数据段请求之一是失败的请求。这些实施例中的一些中,数据段请求重试是基于超过与第一个成功的服务器响应的接收相关联的时间阈值。在一个这样的实施例中,在发送数据段请求时确定时间戳T1(例如,步骤360的开始或在步骤380中发送第一个或最后一个数据段请求时)。在完全接收到来自任何服务器的第一个服务器响应后确定第二个时间戳T2。数据段请求重试随后基于确定在基于算法:T1+150%*(T2-T1)的时间段后仍没有接收到一个或多个服务器响应。
在重新发送一个或多个数据段请求的实施例中,传输协议是HTTP,现有的TCP连接被重用。
在重新发送一个或多个数据段请求的实施例中,控制器被配置以接收服务器响应,其中数据段被以不同的顺序发送。在这些实施例中的一些中,所述顺序是以逆序。例如,对于N个字节的数据段,重发的数据段请求的字节的发送是按逆序(即,从字节N-1开始)。有利的是,从另一个服务器部分接收到的响应可以被更加迅速地构建(例如,如下文步骤460中所描述的)。
图4描述了示出方法400的实施例的流程图,该方法用于客户端或控制器(例如,图1的客户端120中的一个或控制器140)以如图2的步骤280所示出的那样重建数据项。该方法包括:接收对应于先前已经被发送的“N”个服务器请求中的一个的服务器响应(步骤420);如果确定可以从所接收到的服务器响应构建数据项,则基于所确定的解码算法从已接收的服务器响应构建数据项(步骤460),或返回到步骤420以接收另一个服务器响应(步骤440)。该方法结束于步骤495。
在方法400中,步骤420包括接收对应于先前已发送的“N”个服务器请求中的一个(例如,图3的380)的服务器响应。详细地来说,服务器响应包括在对应的服务器请求中指定的数据段。
在方法400中,步骤440包括确定是否可从所接收到的服务器响应中构建数据项。如果数据项可以被构建,方法前进到步骤460,否则方法前进到步骤420。应理解,该确定还可以包括超时或错误例程,其前进到步骤495。
在方法400中,步骤460包括基于所确定的解码算法从所接收到的服务器响应构建数据项。详细地来说,解码算法基于编码算法和步骤420中接收到的数据段。例如,使用{A,B,A+B}的编码算法,2个数据段的任意组合({A,B},{A,A+B}或{B,A+B})足以重建所请求的数据项。详细地来说,{A,B}是2个数据段的简单级联,并且{A,A+B}可以通过观察到B=(A+B)-(A),即通过对两个接收到的块逐字节相减来构造。类似地,{B,A+B}可以通过观察到A=(A+B)-(B)被构建。
参考图3和4,在第一示例中,编码算法包括X=2个字面数据段和Y=1个逻辑相关的数据段,由1000个ASCII字符组成的HTML网页可被编码为3个每个500字节的数据段。其中A是第一个500字节,B是第二个500字节,C是数据段A和B的逐字节相加(例如A+B)。在该示例中,一接收到任何2个请求,控制器就可以从3个不同的服务器请求数据段A、B和A+B呈现页面。有利地,尽管这个方案可能需要增加50%的存储装置,该方案有可能以因数2/1改善传输时延,同时允许请求的1/3失败或延迟。
在第二示例中,编码算法包括X=3个字面数据段和Y=2个逻辑相关的数据段,由1200个ASCII字符组成的HTML网页可被编码为5个每个400字节的数据段,诸如:{A,B,C,A+BC,A-B+C}。其中A是第一个400字节,B是第二个400字节,C是最后一个400字节,A+B-C和A-B+C是数据段A、B和C的逐字节处理(manipulation)。在这个实施例中,一接收到任何3个请求,控制器就可以从5个不同的服务器请求数据段A、B、C、A+B-C、A-B+C呈现页面。可以观察到任意3个数据段的组合足以重建原始页面。有利地,尽管这个方案可能需要增加67%的存储装置,该方案有可能以因数3/1改善传输时延,同时允许请求的2/5失败或延迟。
尽管主要以特定的顺序描述和表述,应理解,方法300、400或500中所示的步骤可以被以任何合适的顺序执行。此外,由一个步骤标识的步骤也可以由一系列的一个或多个其他步骤执行,或者多个步骤的共同动作仅执行一次。
尽管主要示出了数据项位于数据存储装置,应理解,在一些实施例中,数据项可以是设备之间发送的消息。例如,在一个这样的实施例中,消息(例如,请求)被编码为若干段(例如,诸如使用编码的三个段)并被发送到服务器。类似于数据项位于数据存储装置的实施例,当沿着不同的路径路由分组时,这样编码可以有利地允许33%的分组丢失并减少延迟变化。在这些实施例中的一些中,消息在移动手持台和基站(base)之间通过无线网络被发送。
应理解,各种上述方法的步骤可以由编程的计算机执行。在本文中,一些实施例也旨在涵盖程序存储设备,例如,数据存储介质,其为机器或计算机可读并编码机器可执行或计算机可执行的指令程序,其中,所述指令执行或所述上述方法的步骤中的一些或全部。程序存储设备可以是,例如,数字存储器、磁存储介质诸如磁盘和磁带、硬盘驱动器,或光学可读数据存储介质。实施例还旨在涵盖被编程以执行上述方法的所述步骤的计算机。
图5示意性地示出了不同装置的实施例500,诸如图1中的客户端120中的一个、服务器130中的一个或控制器140。装置500包括处理器510、数据存储装置511,以及可选的I/O接口530。
处理器510控制装置500的操作。处理器510与数据存储装置511协同工作。
数据存储装置511存储可由处理器510执行的程序520。数据存储装置511还可以可选地存储程序数据,诸如数据项、编码算法或类似的适当数据。
处理器可执行程序520可以包括I/O接口程序521、数据项请求程序523、数据项接收程序525或服务器程序527。处理器510与处理器可执行程序520协同工作。
I/O接口530与处理器510和I/O接口程序521协作以视情况而定支持如上所述的在图1中的链路125或135上的通信。I/O接口程序521视情况而定执行如上所述的图2中的步骤240或260、图3中的310或380、或图4中的420中的一个或多个。
数据项请求程序523视情况而定执行如上所述的图2中的步骤220或240或图3中的方法300中的步骤中的一个或多个。
数据项接收程序525视情况而定执行如上所述的图2中的步骤280或图3中的方法400中的步骤中的一个或多个。
服务器程序527视情况而定执行如上所述的图2中的步骤260中的一个或多个。
在一些实施例中,处理器510可以包括诸如处理器/CPU核的资源,I/O接口530可包括任何合适的网络接口,或者数据存储装置511可以包括存储器或存储设备。此外,装置500可以是任何合适的物理硬件配置,诸如:一个或多个服务器,由诸如处理器、存储器、网络接口或存储设备组件组成的刀片。在这些实施例中的一些中,装置500可以包括彼此远离的云网络资源。
在一些实施例中,装置500可以是一个或多个虚拟机。在这些实施例中的一些中,一个或多个虚拟机可以包括来自不同机器的或在地理上分散的组件。例如,数据存储装置511和处理器510可以在两个不同的物理机器上。
当处理器可执行的程序520在处理器510上被执行时,程序代码段与处理器组合以提供类似操作特定逻辑电路的独特装置。
尽管本文针对实施例进行了描述和表述,其中在实施例中例如程序和逻辑都被存储在数据存储装置中并且存储器被以通信的方式连接到处理器,应理解,这样的信息可以被以任何其他合适的方式存储(例如,使用任何合适数目的存储器、存储装置或数据库);使用任何合适布置的存储器、存储装置或数据库,其被通信地连接到任何合适布置的装置;在存储器,存储装置或内部或外部数据库的任何合适组合中存储信息;或使用任何合适数目的可访问外部存储器,存储装置或数据库。因此,这里所指的术语数据存储装置是指包括所有存储器,存储装置和数据库的所有合适的组合。
说明书和附图仅示出了本发明的原理。因此将理解,尽管本文中没有明确地描述或示出,本领域的技术人员将能够设计不同的体现了本发明的原理并包括在其精神和范围内的布置。此外,本文列举的所有示例都主要旨在以仅用于教学的目的而表述以帮助读者理解本发明的原理和发明人提供的概念以促进本领域的发展,并且应被解释为不限于这些特定引用的示例和条件。此外,本文引用本发明的原则、方面和实施例,及其特定示例的陈述,旨在包括其等价物。
图中所示的各种元件的功能,包括标记为“处理器”的任何功能块,可以通过使用专用硬件以及能够执行软件的硬件结合适当的软件被提供。当由处理器提供时,这些功能可由单个专用处理器、由单个共享处理器,或由多个独立的处理器提供,其中一些可以是共享的。此外,术语“处理器”或“控制器”的明确使用不应被解释为专指能够执行软件的硬件,并且可以隐含地包括,但不限于,数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、用于存储软件的只读存储器(ROM)、随机存取存储器(RAM),和非易失性存储器。其他的硬件,传统的或定制的,也可以被包括。类似地,图中所示的任何交换均仅为概念上的。它们的功能可以通过程序逻辑、通过专用逻辑、通过程序控制和专用逻辑,或甚至手动地操作执行,特定的技术可由实施者根据对上下文更具体地理解来选择。
应理解,本文的任何方框图代表体现本发明原理的说明性电路的概念图。类似的,应理解,任何流程表、流程图、状态转换图、伪代码等表示可以以计算机可读介质的形式被实质性地表示,并且因此由计算机或处理器执行的不同过程,无论这样的计算机或处理器是否被明确示出。
Claims (10)
1.一种用于提供冗余数据访问的装置,所述装置包括:
数据存储装置;和
处理器,其被通信地连接到数据存储装置,所述处理器被配置以:
选择数据项;
基于所述数据项和编码算法确定多个数据段请求;
确定与所述多个数据段请求对应的多个服务器;以及
发送所述多个数据段请求至对应的多个服务器。
2.如权利要求1所述的装置,其中所述多个数据段请求被配置以使得响应于所述多个数据段请求从所述多个服务器接收的预期的数据段的集合是这样的——与所述数据项相比,所述预期的数据段的集合的数据段成员在尺寸上更小,以及可使用所述预期的数据段的集合的真子集来构建所述数据项。
3.如权利要求1所述的装置,其中所述编码算法包括将所述数据项分成若干字面数据段和与两个或更多的字面数据段逻辑相关的一个或多个数据段。
4.如权利要求1所述的装置,其中所述处理器被进一步配置以基于通过网络发送的比特模式的估计优化来选择所述编码算法。
5.如权利要求1所述的装置,其中所述多个数据段请求包括编码算法指示。
6.如权利要求1所述的装置,其中所述处理器还被进一步配置以:
接收来自所述多个服务器的多个服务器响应;以及
基于解码算法从所述多个服务器响应构建所述数据项;
其中,所述多个服务器响应是整个预期的服务器响应集合的真子集。
7.一种提供冗余数据访问的方法,所述方法包括:
在被通信地连接到数据存储装置的处理器处,选择一个数据项;
基于所述数据项和编码算法,由与所述数据存储装置协同工作的处理器确定多个数据段请求;
与所述数据存储装置协同工作的处理器确定与所述多个数据段请求对应的多个服务器;以及
与所述数据存储装置协同工作的处理器发送所述多个数据段请求到对应的多个服务器。
8.如权利要求7所述的方法,其中所述多个数据段请求被配置以使得响应于所述多个数据段请求从所述多个服务器接收的预期的数据段的集合是这样的——与所述数据项相比,所述预期的数据段的集合的数据段成员在尺寸上更小,以及可使用所述预期的数据段的集合的真子集构建所述数据项。
9.如权利要求7所述的方法,其中,所述编码算法包括将所述数据项分成若干字面数据段和与两个或更多的字面数据段逻辑相关的一个或多个数据段。
10.如权利要求7所述的方法,进一步包括:
从所述多个服务器接收多个服务器响应;以及
基于解码算法从所述多个服务器响应构建所述数据项;
其中,所述多个服务器响应是整个预期的服务器响应的集合的真子集。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/949,283 | 2013-07-24 | ||
US13/949,283 US20150032798A1 (en) | 2013-07-24 | 2013-07-24 | Method And Apparatus For Providing Redundant Data Access |
PCT/CA2014/050668 WO2015010197A1 (en) | 2013-07-24 | 2014-07-15 | Method and apparatus for providing redundant data access |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105408871A true CN105408871A (zh) | 2016-03-16 |
Family
ID=52391402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480041546.XA Pending CN105408871A (zh) | 2013-07-24 | 2014-07-15 | 用于提供冗余数据访问的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20150032798A1 (zh) |
EP (1) | EP3025234A4 (zh) |
JP (1) | JP2016525256A (zh) |
CN (1) | CN105408871A (zh) |
WO (1) | WO2015010197A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9794375B2 (en) * | 2013-03-14 | 2017-10-17 | Openwave Mobility, Inc. | Method, apparatus, and non-transitory computer medium for obtaining a required frame size for a compressed data frame |
US20150039660A1 (en) * | 2013-07-31 | 2015-02-05 | Cleversafe, Inc. | Co-locate objects request |
US20180188964A1 (en) * | 2013-07-31 | 2018-07-05 | International Business Machines Corporation | Managed storage unit shutdown in a distributed storage network |
WO2021155249A1 (en) | 2020-01-30 | 2021-08-05 | Snap Inc. | System for generating media content items on demand |
US11036781B1 (en) * | 2020-01-30 | 2021-06-15 | Snap Inc. | Video generation system to render frames on demand using a fleet of servers |
US11356720B2 (en) | 2020-01-30 | 2022-06-07 | Snap Inc. | Video generation system to render frames on demand |
US11284144B2 (en) | 2020-01-30 | 2022-03-22 | Snap Inc. | Video generation system to render frames on demand using a fleet of GPUs |
US11991419B2 (en) | 2020-01-30 | 2024-05-21 | Snap Inc. | Selecting avatars to be included in the video being generated on demand |
CN112187760B (zh) * | 2020-09-22 | 2022-11-08 | 宏图智能物流股份有限公司 | 一种基于数据拆分的网络请求防篡改方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835694A (en) * | 1996-12-06 | 1998-11-10 | International Business Machines Corporation | Raid-configured disk drive array wherein array control occurs at the disk drive level |
CN102099792A (zh) * | 2008-06-06 | 2011-06-15 | 枢轴3公司 | 用于分布式raid实现的方法和系统 |
US8099623B1 (en) * | 2008-10-08 | 2012-01-17 | Netapp, Inc. | Efficient distributed hot sparing scheme in a parity declustered RAID organization |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3865775B2 (ja) * | 1995-04-11 | 2007-01-10 | キネテック インコーポレイテッド | データ処理システムにおけるデータの識別 |
JP4134357B2 (ja) * | 1997-05-15 | 2008-08-20 | 株式会社日立製作所 | 分散データ管理方法 |
JPH1125022A (ja) * | 1997-07-02 | 1999-01-29 | Brother Ind Ltd | クライアントサーバシステム |
JP2007042115A (ja) * | 2001-11-02 | 2007-02-15 | Nec Corp | スイッチ方法、装置およびプログラム |
US8060648B2 (en) * | 2005-08-31 | 2011-11-15 | Cable Television Laboratories, Inc. | Method and system of allocating data for subsequent retrieval |
US20070288638A1 (en) * | 2006-04-03 | 2007-12-13 | British Columbia, University Of | Methods and distributed systems for data location and delivery |
EP2014093B1 (en) * | 2006-05-04 | 2013-03-27 | NDS Limited | Scrambled digital data item |
US8090792B2 (en) * | 2007-03-08 | 2012-01-03 | Nec Laboratories America, Inc. | Method and system for a self managing and scalable grid storage |
US9049198B2 (en) * | 2008-10-15 | 2015-06-02 | Aster Risk Management Llc | Methods and systems for distributing pull protocol requests via a relay server |
US8504847B2 (en) * | 2009-04-20 | 2013-08-06 | Cleversafe, Inc. | Securing data in a dispersed storage network using shared secret slices |
US9311184B2 (en) * | 2010-02-27 | 2016-04-12 | Cleversafe, Inc. | Storing raid data as encoded data slices in a dispersed storage network |
US8396841B1 (en) * | 2010-11-30 | 2013-03-12 | Symantec Corporation | Method and system of multi-level and multi-mode cloud-based deduplication |
US8832394B2 (en) * | 2011-03-31 | 2014-09-09 | Emc Corporation | System and method for maintaining consistent points in file systems |
-
2013
- 2013-07-24 US US13/949,283 patent/US20150032798A1/en not_active Abandoned
-
2014
- 2014-07-15 WO PCT/CA2014/050668 patent/WO2015010197A1/en active Application Filing
- 2014-07-15 CN CN201480041546.XA patent/CN105408871A/zh active Pending
- 2014-07-15 JP JP2016528269A patent/JP2016525256A/ja active Pending
- 2014-07-15 EP EP14829815.1A patent/EP3025234A4/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835694A (en) * | 1996-12-06 | 1998-11-10 | International Business Machines Corporation | Raid-configured disk drive array wherein array control occurs at the disk drive level |
CN102099792A (zh) * | 2008-06-06 | 2011-06-15 | 枢轴3公司 | 用于分布式raid实现的方法和系统 |
US8099623B1 (en) * | 2008-10-08 | 2012-01-17 | Netapp, Inc. | Efficient distributed hot sparing scheme in a parity declustered RAID organization |
Non-Patent Citations (1)
Title |
---|
SNIA: "Common RAID Disk Data Format Specification", 《SNIA ADVANCING STORAGE & INFORMATION TECHNOLOGY》 * |
Also Published As
Publication number | Publication date |
---|---|
EP3025234A1 (en) | 2016-06-01 |
WO2015010197A1 (en) | 2015-01-29 |
EP3025234A4 (en) | 2017-03-01 |
JP2016525256A (ja) | 2016-08-22 |
US20150032798A1 (en) | 2015-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105408871A (zh) | 用于提供冗余数据访问的方法和装置 | |
CN102571756B (zh) | 文件系统会话中的多信道连接 | |
EP2901308B1 (en) | Load distribution in data networks | |
US7702917B2 (en) | Data transfer using hyper-text transfer protocol (HTTP) query strings | |
CN108933805A (zh) | 一种文件传输方法及系统 | |
CN105207947B (zh) | 一种过滤抖动的渐进式流量调度方法和系统 | |
JP2005353039A5 (zh) | ||
US20140173092A1 (en) | Exchange of server health and client information through headers for request management | |
CN104052803A (zh) | 一种去中心化的分布式渲染方法及渲染系统 | |
CN102420863B (zh) | 一种快速分发文件系统和方法及装置 | |
CN107111481A (zh) | 分布式主动混合存储系统 | |
CN111212156B (zh) | 一种网络连接方法与装置 | |
US20130297731A1 (en) | Content distribution over a network | |
CN107959702B (zh) | 路由方法和装置 | |
CN101803289A (zh) | 基于适合度的路由 | |
CN109525622A (zh) | 分片资源id的生成方法、资源分享方法,装置及电子设备 | |
WO2016180284A1 (zh) | 服务节点分配方法、装置、cdn管理服务器及系统 | |
CN104077374B (zh) | 一种实现ip盘文件存储的方法及装置 | |
KR20220078411A (ko) | 엣지 컴퓨팅 노드 및 이의 데이터 공유 방법 | |
KR20110122947A (ko) | 허브 및 가상 그룹에 속하는 송, 수신 단말의 통신 방법 | |
JP2007272540A (ja) | データ配信方法及びデータ配信システム | |
CN108334424B (zh) | 基于lpwan技术的网络通讯管理平台过滤冗余数据的方法 | |
CN112511434A (zh) | 物联网节点接入路径规划方法、装置、设备和存储介质 | |
CN108259527B (zh) | 基于代理的业务处理方法、装置及网元设备 | |
US20180018222A1 (en) | Router-based routing selection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160316 |
|
WD01 | Invention patent application deemed withdrawn after publication |