JP2016525256A - 冗長データアクセスを提供するための方法および装置 - Google Patents

冗長データアクセスを提供するための方法および装置 Download PDF

Info

Publication number
JP2016525256A
JP2016525256A JP2016528269A JP2016528269A JP2016525256A JP 2016525256 A JP2016525256 A JP 2016525256A JP 2016528269 A JP2016528269 A JP 2016528269A JP 2016528269 A JP2016528269 A JP 2016528269A JP 2016525256 A JP2016525256 A JP 2016525256A
Authority
JP
Japan
Prior art keywords
data
data item
data segment
servers
server
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
Application number
JP2016528269A
Other languages
English (en)
Inventor
ファンベメル,イェルーン
Original Assignee
アルカテル−ルーセント
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アルカテル−ルーセント filed Critical アルカテル−ルーセント
Publication of JP2016525256A publication Critical patent/JP2016525256A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2053Error 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/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1011Clustered RAID, i.e. clustered or de-clustered RAID where data and parity are spread over more disks than blocks in a parity group
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/105On the fly coding, e.g. using XOR accumulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-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の応答を処理する。
以下の概要においてはいくつかの単純化がなされる場合があり得、それは、様々な例示的な実施形態のいくつかの態様を強調し紹介するためであることが意図されているのであるが、そのような単純化が本発明の範囲を限定するためのものであることは、意図されていない。当業者が本発明の概念を作り用いることを可能にするのに十分な好適で例示的な実施形態の詳細な説明が、後の項目で続くことになる。
様々な実施形態が、冗長データアクセスを提供するための方法および装置を提供する。特に、データアイテムを求めるクライアントリクエストへの応答は、対応する選択された複数のサーバのそれぞれによってクライアントに提供されるデータアイテムのデータセグメントを選択することを含む。特に、データセグメントは、データアイテムと比較してサイズが小さく、送信されたデータセグメントの真部分集合を用いてデータアイテムが構築され得るように構成される。
第1の実施形態では、冗長データアクセスを提供するための装置が提供される。この装置は、データ記憶装置と、データ記憶装置に通信可能に接続されたプロセッサとを含む。プロセッサは:データアイテムを選択し、データアイテムとエンコーディングアルゴリズムとに基づいて複数のデータセグメントリクエストを決定し、複数のデータセグメントリクエストに対応する複数のサーバを決定し、複数のデータセグメントリクエストを対応する複数のサーバに送信するようにプログラムされる。
第2の実施形態では、冗長データアクセスを提供するシステムが提供される。システムは、複数のクライアントと、複数のサーバと、複数のクライアントと複数のサーバとに通信可能に接続されたコントローラとを含む。クライアントの少なくとも1つは、データアイテムをリクエストするように構成される。選択された複数のサーバの少なくともそれぞれは:データアイテムの少なくとも1つをまたはデータアイテムと関連するデータセグメントを記憶するように構成される。コントローラは:少なくとも1つクライアントからのデータアイテムリクエストに基づいてデータアイテムを選択し、データアイテムとエンコーディングアルゴリズムとに基づいて複数のデータセグメントリクエストを決定し、複数のデータセグメントリクエストに対応し複数のサーバの部分集合である複数のターゲットサーバを決定し、複数のデータセグメントリクエストを対応する複数のターゲットサーバに送信するようにプログラムされる。
第3の実施形態では、冗長データアクセスを提供するための方法が提供される。この方法は:データアイテムを選択するステップと、データアイテムとエンコーディングアルゴリズムとに基づいて複数のデータセグメントリクエストを決定するステップと、複数のデータセグメントリクエストに対応する複数のサーバを決定するステップと、複数のデータセグメントリクエストを、対応する複数のサーバに送信するステップとを含む。
第4の実施形態では、コンピュータによって実行されるとコンピュータに方法を実行させる命令を記憶するための非一時的でコンピュータ可読な記憶媒体が提供される。この方法は:データアイテムを選択するステップと、データアイテムとエンコーディングアルゴリズムとに基づいて複数のデータセグメントリクエストを決定するステップと、複数のデータセグメントリクエストに対応する複数のサーバを決定するステップと、複数のデータセグメントリクエストを、対応する複数のサーバに送信するステップとを含む。
上述した実施形態のいくつかでは、複数のデータセグメントリクエストが、複数のデータセグメントリクエストに応答して複数のサーバから受信される1組の予測されるデータセグメントがデータアイテムと比較してそのデータセグメント構成要素のサイズが小さく、1組の予測されるデータセグメントの真部分集合を用いてデータアイテムが構築され得るように構成される。
上述した実施形態のいくつかでは、エンコーディングアルゴリズムが、データアイテムを、いくつかの文字データセグメントと文字データセグメントの2つ以上と論理的に関係する1つまたは複数のデータセグメントとに分離することを含む。
上述した実施形態のいくつかでは、プロセッサが、さらに、ネットワーク経由で送られたビットパターンの推定される最適化に基づいてエンコーディングアルゴリズムを選択するようにプログラムされる、または、方法が、さらに:ネットワーク経由で送られたビットパターンの推定される最適化に基づいてエンコーディングアルゴリズムを選択するステップを含む。
上述した実施形態のいくつかでは、プロセッサが、さらに、1つまたは複数のシステム特性に基づいてエンコーディングアルゴリズムを選択するようにプログラムされる、または、方法が、さらに、1つまたは複数のシステム特性に基づいてエンコーディングアルゴリズムを選択するステップを含む。
上述した実施形態のいくつかでは、エンコーディングアルゴリズムが、1つまたは複数のシステム特性に基づくデータセグメントのサイズを備える。
上述した実施形態のいくつかでは、エンコーディングアルゴリズムが、複数のサーバの少なくとも一部に対応する複数の作業負荷に基づく。
上述した実施形態のいくつかでは、プロセッサが、さらに、エンコーディングアルゴリズムベースで複数のサーバの少なくとも1つと1つまたは複数のメッセージを交換することを選択するようにプログラムされる、または、方法が、さらに:エンコーディングアルゴリズムベースで複数のサーバの少なくとも1つと1つまたは複数のメッセージを交換することを選択するステップを含む。
上述した実施形態のいくつかでは、複数のデータセグメントリクエストが、エンコーディングアルゴリズムディレクティブを含む。
上述した実施形態のいくつかでは、プロセッサが、さらに、複数のサーバから複数のサーバ応答を受信し、デコーディングアルゴリズムに基づいて複数のサーバ応答からデータアイテムを構築するようにプログラムされる、または、方法が、さらに:複数のサーバから複数のサーバ応答を受信するステップと、デコーディングアルゴリズムに基づいて複数のサーバ応答からデータアイテムを構築するステップとを含む。ここで、複数のサーバ応答は、1組の予測されるサーバ応答全体の真部分集合である。
上述した実施形態のいくつかでは、選択された複数のサーバが、さらに:複数のデータセグメントリクエストの1つを受信し、そのデータセグメントリクエストとデータセグメントのエンコーディングアルゴリズムとに基づいてサーバ応答を決定し、サーバ応答をコントローラに送信するように構成される。
第5の実施形態では、冗長データアクセスを提供するための装置が提供される。この装置は、データ記憶装置と、データ記憶装置に通信可能に接続されたプロセッサとを含む。プロセッサは:データアイテムを選択し、データアイテムとエンコーディングアルゴリズムとに基づいて複数のデータセグメントを決定し、複数のデータセグメントリクエストに対応する少なくとも1つのサーバを決定し、対応する複数のサーバの少なくとも1つに複数のデータセグメントを送信するようにプログラムされている。
上述した実施形態のいくつかでは、プロセッサは、さらに、少なくとも1つの第2のサーバから第2の複数のデータセグメントを受信し、第2の複数のデータセグメントとデコーディングアルゴリズムとに基づいて、第2のデータアイテムを構築するようにプログラムされ、または、方法は、さらに:少なくとも1つの第2のサーバから第2の複数のデータセグメントを受信するステップと、第2の複数のデータセグメントとデコーディングアルゴリズムとに基づいて、第2のデータアイテムを構築するステップとを含む。ここで、第2の複数のデータセグメントは、第2のデータアイテムと関連する1組のデータセグメントの全体の真部分集合である。
様々な実施形態が、添付の図面に図解されており、各図面は、下記の通りである。
冗長データアクセスを提供するための冗長データアクセスシステム100のある実施形態を図解する図である。 冗長データアクセスシステム(たとえば、図1のシステム100)が冗長データアクセスを提供するための方法200のある実施形態を図解する流れ図である。 コントローラ(たとえば、図1のコントローラ140)が図2のステップ240に図解されているように「N個」の決定されたサーバリクエストを送信するための方法300のある実施形態を図解する流れ図である。 クライアントまたはコントローラ(たとえば、図1のクライアント120の1つまたはコントローラ140)が図2のステップ280に図解されているようにデータアイテムを再構築するための方法400のある実施形態を図解する流れ図である。 図1のクライアント120の1つ、サーバ130の1つまたはコントローラ140など、様々な装置500のある実施形態を概略的に図解する図である。
理解を容易にするため、同一の参照番号が、実質的に同じもしくは同様の構造または実質的に同じもしくは同様の機能を有する要素を示すために、用いられている。
本明細書および図面は、本発明の原理を単に例証するものである。したがって、当業者は、たとえ本明細書において明示的に説明されずまたは示されていなくても、本発明の原理を具体化し本発明の範囲内に含まれる様々な仕組みを考案できることが認識されるであろう。さらに、本明細書に記載されるすべての例は、主に、本発明の原理およびさらなる技術に対して本発明者によって貢献される概念を、読者が理解するのを支援するための教育的な目的のためのみであることが明確に意図されており、それらの例は、そのような特に記載されている例および条件には限定されないものとして、解釈されるべきである。さらには、本明細書に記載されている様々な実施形態は、いくつかの実施形態が新たな実施形態を形成するために1つまたは複数の他の実施形態と組み合わされ得るから、必ずしも相互に排他的ではない。
本明細書で用いられる場合に、「または(or)」という用語は、(たとえば、「またはそれ以外」または「または代替的には」などのように)そうではないと示されていない限り、非排他的ORを意味する。さらに、本明細書で用いられる場合に、要素の間の関係を記述するのに用いられる単語は、そうではないと示されていない限り、直接的な関係または介在する要素の存在を含むように、広く解釈されるべきである。たとえば、ある要素が別の要素に「接続されている」または「結合されている」と称されるときには、その要素は、その別の要素と直接的に接続もしくは結合されていることがあり得るし、または、介在する要素が存在していることもあり得る。対照的に、ある要素が別の要素と「直接的に接続されている」または「直接的に結合されている」と称されるときには、介在する要素は存在しない。同様に、「間に」、「隣接して」などの単語も、同様の態様で解釈されるべきである。
様々な実施形態が、冗長データアクセスを提供するための方法および装置を提供する。特に、あるデータアイテムを求めるクライアントリクエストへの応答は、対応する選択された複数のサーバのそれぞれによってクライアントに提供されるデータアイテムのデータセグメントを選択することを含む。特に、データセグメントは、データアイテムと比較するとサイズが小さく、送信されたデータセグメントの真部分集合を用いて構築され得るように、構成される。
有利なことに、送信されたデータセグメントの真部分集合を用いてデータアイテムを再構築することによって、データアイテムが失われたまたは遅延したデータセグメントを受信する前に構築され得るために、応答はロバストネスおよびレイテンシ特性を改善し得る。さらに、データセグメントがそれらのそれぞれの通信経路上を並列的に送られ得るために、全体的な送信時間が短縮され得る。
図1は、冗長データアクセスを提供するための冗長データアクセスシステム100のある実施形態を図解している。冗長データアクセスシステム100は、通信経路を経由して確立される通信フローを通じて、1つまたは複数のサーバ130−1−130−n上に存在する1つまたは複数のデータアイテム(明瞭にする目的で図示せず)にアクセスする1つまたは複数のクライアント120−1−120−n(集合的に、クライアント120と称する)を含む。1つまたは複数のデータアイテムの記憶または1つまたは複数のデータアイテムへのアクセスは、コントローラ140によって制御される。通信経路は、リンク125−1−125−n(集合的に、リンク125と称する)の適切な1つと、ネットワーク110と、リンク135−1−135−n(集合的に、リンク135と称する)の適切な1つとを含む。
本明細書で定義されるように、「データアイテム」とは:たとえばファイル、ウェブページ、データストリームまたはメッセージなどのように、クライアントとサーバとの間で送信され得る任意の適切なデータとして、広く解釈される。さらに、本明細書で定義されるように、「データセグメント」とは、通常の形式またはエンコードされた形式でデータアイテムの全部または一部を表すデータとして、広く解釈される。
ネットワーク110は、任意の数のアクセスノードおよびエッジノード、ネットワークデバイス、ならびに任意の数および構成のリンクを含む。さらに、ネットワーク110は、任意の組合せおよび任意の数の、以下を含むワイヤレスネットワークまたはワイヤラインネットワークを含み得ることが認識されるべきである:すなわち、LTE、GSM(登録商標)、CDMA、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)などである。
クライアント120は、リンク125の1つまたは複数を経由してネットワーク110上で情報(たとえば、パケット)を送信または受信することができる任意のタイプの通信デバイスを含み得る。たとえば、通信デバイスは、シンクライアント、スマートフォン(たとえば、クライアント120−1)、パーソナルコンピュータまたはラップトップコンピュータ(たとえば、クライアント110−1)、サーバ、ネットワークデバイス、タブレット(たとえば、クライアント120−n)、テレビ受像器のセットトップボックス、メディアプレイヤなどであり得る。通信デバイスは、処理もしくは記憶などのタスクの一部を実行するために、例示的なシステム内部の他のリソースに依存することがあり得るし、または、タスクを独立して実行できる場合もあり得る。この図には3つのクライアントが図解されているが、システム100がより少数のまたはより多数のクライアントを含み得ることが認識されるべきである。さらに、動作の最中の様々な時刻においてクライアントがシステムに加えられ得るまたはシステムから減らされ得るのであるから、任意のある時刻におけるクライアントの数は動的であり得る。
リンク125および135は:ワイヤレス通信(たとえば、LTE、GSM、CDMA、Bluetooth(登録商標))、WLAN通信(たとえば、WiFi)、パケットネットワーク通信(たとえば、IP)、ブロードバンド通信(たとえば、DOCSISおよびDSL)、記憶装置通信(たとえば、ファイバチャネル、iSCSI)など1つまたは複数の通信チャネル上の通信をサポートする。単一の接続として示されてはいるが、通信チャネル125および135は任意の数の通信チャネルまたは任意の組合せの通信チャネルであり得る、ということが理解されるべきである。
サーバ130は、データアイテムまたはデータセグメントを記憶し、情報(たとえば、パケット)をリンク135の1つもしくは複数を経由してネットワーク110上を送信または受信することができる任意の適切なデバイスを含み得る。
コントローラ140は、クライアント(たとえば、クライアント120−1)に提供されるデータアイテムのデータセグメントを、対応する選択された複数のサーバ130のそれぞれによって選択することができる任意の適切なデバイスを含み得る。特に、これらのデータセグメントは、データアイテムと比較するとサイズが小さく、送信されるデータセグメントの真部分集合を用いてデータアイテムが構築され得るように、構成されている。
本図ではただ1つのコントローラが図解されているだけであるが、システム100はより多くのコントローラを含む場合もあり得る、ということが理解されるべきである。コントローラ140は、ネットワーク110を通じてクライアント120および130に接続されるように図解されているが、システム100では任意の適切な構成で位置決めされ得る、ということもさらに理解されるべきである。コントローラは、別個のデバイスとして図解されているが、クライアント120またはサーバ130の1つまたは複数の内部に存在することもあり得る(たとえば、コントローラの機能が、1つまたは複数のクライアント、サーバもしくはコントローラの間に分散されることもあり得る)、ということもさらにまた理解されるべきである。
コントローラ140のいくつかの実施形態では、コントローラは、クライアント120とネットワーク110との間に位置決めされる。たとえば、コントローラは、エッジデバイスまたはデータセンタ内部のデバイスであり得る。これらの実施形態の1つでは、コントローラは、クライアントリクエストを受信し、クライアントリクエストに基づいていくつかのサーバデータセグメントリクエストを決定し、サーバデータセグメントリクエストのそれぞれを選択されたサーバに送信し、サーバから応答を受信して、応答しているサーバの少なくとも一部から適切なコンテンツセグメントを受信したときには、リクエストされたデータアイテムを組み立てる。
コントローラ140のいくつかの実施形態では、コントローラは、クライアント120の1つまたは複数の内部にある。
コントローラ140のいくつかの実施形態では、コントローラは、サーバ130の1つまたは複数の内部にある。
コントローラ140のいくつかの実施形態では、コントローラは、クライアント120の1つもしくは複数またはサーバ130の1つもしくは複数の内部に少なくとも部分的に分散されている。
いくつかの実施形態では、コントローラ140は、どのデータセグメントを選択されたサーバが提供するのかを識別する選択されたサーバのそれぞれに情報を送信することによって、データセグメントを提供するサーバと通信する。
図2は、冗長データアクセスシステム(たとえば、図1のシステム100)が冗長データアクセスを提供するための方法200のある実施形態を図解する流れ図を示す。この方法は、ステップ205で開始し:データアイテムをリクエストするステップ(ステップ220)と、データアイテムとエンコーディングアルゴリズムとに基づいて、「N個」の決定されたサーバリクエストを送信するステップ(ステップ240)と、受信されたサーバリクエストに応答して、「M個」のサーバ応答を送信するステップ(ステップ260)と、決定されたサーバリクエストに対応する受信されたサーバ応答から、データアイテムを構築するステップ(ステップ280)とを含み、この方法は、ステップ395で終了する。
方法200では、ステップ220は、(たとえば、図1のクライアント120の1つによって)データアイテムをリクエストするステップを含む。特に、この方法を実行する装置は、データアイテム取得トリガイベントを受信し、識別されたデータアイテムを取得するためのリクエストを始動する。データアイテム取得トリガイベントとは:(i)ユーザインターフェース(たとえば、クライアントデバイス上でのウェブページに対するプロンプトなど)からリクエストを受信する、(ii)ある動作を実行するのに要求されるデータアイテムを決定する(たとえば、用いるためにファイルをダウンロードするなど、データアイテムを取得するための要件を決定するアプリケーションから)、または(iii)同様のことなど、取得されるデータアイテムを識別する任意の適切なイベントであり得る。識別されたデータアイテムを取得するためのリクエストとは、たとえば:(i)ネットワーク上でサーバまたはコントローラへのリクエストを送る(たとえば、図1のサーバ130またはコントローラ140の1つまたは複数が、図1のネットワーク110上で、HTTPプロトコル経由でウェブページをリクエストする)、(ii)内部通信チャネル経由でリクエストを送る(たとえば、クライアントが、内部通信チャネル経由で、同じデータセンタまたはデバイス内部のコントローラと通信する)、または(iii)同様のことなど、データアイテムをソースから取得するための任意の適切な方法であり得る。
方法200では、ステップ240は、データアイテムとエンコーディングアルゴリズムとに基づいて、「N個」の決定されたサーバリクエストを(たとえば、図1のコントローラ140によって、図1のサーバ130の「N個」に)送信するステップを含む。特に、リクエストされたデータアイテムを表すための1組のデータセグメントと、選択された1組のデータセグメントのそれぞれに対してそれぞれのリクエストを向けるための1組の対応するサーバとを決定するためには、あるアルゴリズムが用いられる。たとえば、4バイトである「0xA5C3」で構成されるデータアイテムは、3つのデータセグメントであるA、B、および
Figure 2016525256
によって表され得る。ここで、Aはデータアイテムの半分を表すデータセグメントであり(たとえば、「0xA5」)、Bはデータアイテムの残りの半分を表すデータセグメントであり(たとえば、「0xC3」)、データセグメント
Figure 2016525256
はデータセグメントAおよびBのビット単位の排他的論理和(たとえば、0x66)を表す。さらに、このアルゴリズムはデータアイテムを表すために3つのデータセグメントを選択するため、「N」は3であり得るのであって、リクエストは、各データセグメントのそれぞれをリクエストしている3つの異なるサーバに送られ得る。
方法200では、ステップ260は、ステップ240で送信されて受信されたサーバリクエストに応答して、「M個」のサーバ応答を(たとえば、図1のサーバ130の「M個」によって)送信するステップを含む。特に、データアイテムに対するサーバリクエストを受信するサーバの部分集合のそれぞれは、リクエストされたデータセグメントを提供することによって、応答する。データアイテムはデータセグメントの真部分集合を用いることによって構築され得るのであるから、「M」は「N」よりも小さいかまたは「N」と同一であり得る(たとえば、サーバの1つがその対応するサーバリクエストを受信しなかった場合)。
方法200では、ステップ280は、ステップ260で受信されたサーバ応答から(たとえば、図1のコントローラ140によって、またはクライアント120の1つによって)データアイテムを構築するステップを含む。特に、この方法のステップを実行する装置は、データアイテムを構築するのに十分なデータセグメントの真部分集合を受信すると、データアイテムを構築する。たとえば、上述した例を用いると、この装置は、集合
Figure 2016525256
の任意の2つのデータセグメントを受信した後で、データアイテムを構築し得る。
ステップ260のいくつかの実施形態では、サーバ(たとえば、図1のサーバ130)の1つまたは複数が、データアイテムと、データアイテムに関係する1つまたは複数のデータセグメントとを記憶する。
ステップ260のいくつかの実施形態では、1つまたは複数のサーバが、データアイテムだけを記憶する。そして、この1つまたは複数のサーバは、サーバリクエストを受信すると、リクエストされたデータセグメントを決定し得る、ということが理解されるべきである。これらの実施形態のいくつかでは、サーバは、次に、同じデータセグメントを求める将来のリクエストに関する処理コストを減少させるために、リクエストを処理した後で、データセグメントを記憶することがあり得る。さらなる実施形態では、データセグメントの記憶は、利用可能な記憶装置がある閾値を下回る場合や、または、直近のリクエスト以後の時間経過などのイベントがあると、消去されることがあり得る。
図3は、コントローラ(たとえば、図1のコントローラ140)が図2のステップ240に図解されているように「N個」の決定されたサーバリクエストを送信するための方法300のある実施形態を図解する流れ図を示す。この方法は、ステップ305で開始し:データアイテムを選択するステップ(ステップ310)と、データアイテムとエンコーディングアルゴリズムとに基づいて「N個」のデータセグメントリクエストを決定するステップ(ステップ320)と、「N個」のデータセグメントに対応する「N個」のサーバを決定するステップ(ステップ340)と、データセグメントリクエストが送信されるべきだと決定される(ステップ360)の間に、選択された「N個」のデータセグメントリクエストのそれぞれを対応するサーバに送信するステップ(ステップ380)とを含む。この方法は、ステップ395で終了する。
方法300では、ステップ310は、データアイテムを選択するステップを含む。データアイテムの選択は、たとえば:(i)データアイテムを特定するリクエストをクライアント(たとえば、図1のクライアント120−1)から受信するステップ、(ii)ユーザインターフェース(たとえば、クライアントデバイス上などの)からリクエストを受信するステップ、(iii)動作を実行するのに要求される(たとえば、データアイテムを取得するための要件を決定するアプリケーションから)データアイテムを決定するステップ、または(iv)同様のステップなど、任意の適切な方法を含み得る。
方法300では、ステップ320は、データアイテムとエンコーディングアルゴリズムとに基づいて「N個」のデータセグメントリクエストを決定するステップを含む。特に、その1組の「N個」のデータセグメントリクエストは、それらのデータセグメントリクエストの結果として生じる1組のデータセグメントが、データアイテムと比較してサイズが小さい1組のデータセグメントを提供するように決定され、データセグメントの真部分集合を用いてデータアイテムが構築され得るように構成される。
方法300では、ステップ340は、「N個」のデータセグメントリクエストと対応する「N個」のサーバを決定するステップを含む。特に、サーバは、「N個」のデータセグメントセグメントリクエストのそれぞれに対する対応するデータセグメントで応答するように、選択される。サーバは:(i)ランダムな選択、(ii)ラウンドロビン式の選択、(iii)サービス計量(たとえば、レイテンシ)の質を用いて、(iv)コスト計量を用いて、(v)経路またはリソースの多様性の考慮を用いて(たとえば、輻輳もしくは故障したリンクまたはコンポーネントにおいて複数のデータセグメントが失われてしまうリスクを最小化するために)、または(vi)同様のステップ、などを含む任意の適切な方法に基づいて、選択され得る。1つのサーバが複数のデータセグメントを供給するように選択されることもあり得る、ということが理解されるべきである。
方法300では、ステップ360は、送信すべき何らかのデータセグメントリクエストが存在するかどうかを決定するステップを含む。この方法を実行する装置が、送信すべきデータセグメントリクエストを有する場合には、この方法はステップ380に進むが、それ以外の場合には、この方法はステップ395で終了する。この決定は:(i)データセグメントリクエストのすべてが送信されたと決定するステップ、(ii)データアイテムを構築するために十分なデータセグメントが受信されたと決定するステップ、または(iii)同様のステップ、などの任意の適切な方法を含み得る。
方法300では、ステップ380は、ステップ320で決定されたデータセグメントリクエストを、ステップ340で決定された対応するサーバに、従来型の送信技術を用いて送信するステップを含む。
ステップ320のいくつかの実施形態では、決定は、データアイテムに関する情報を取得するステップを含む。データアイテムに関する情報は、(i)データアイテムをホストしているサーバとのメッセージの交換、(ii)データアイテムに対して責任を有する管理システムとのメッセージの交換、または(iii)同様のステップ、などの任意の適切な方法によって取得され得る。
ステップ320のいくつかの実施形態では、決定は、システムに関する情報を取得するステップを含む。システムに関する情報は:(i)ネットワークにおける通信経路のレイテンシなどの、サービスパラメータの質、(ii)システムコンポーネントの記憶装置コスト、ネットワークコスト、もしくは処理コストなどのコストパラメータ、(iii)送信プロトコルなどの送信パラメータ、または(iv)同様のもの、などの任意の適切な情報であり得る。
ステップ320のいくつかの実施形態では、エンコーディングアルゴリズムは、データアイテムを、いくつかの文字データセグメントと、それらの文字データセグメントの2つ以上に論理的に関係する1つまたは複数のデータセグメントとに分離することを含む。これらの実施形態のいくつかでは、データアイテムは、「X個」の文字データセグメントと「Y個」の論理的に関係するデータセグメントとに分割される。これらの実施形態のいくつかでは、X=2でありY=1である。いくつかの他の実施形態では、X=3でありY=2である。論理的に関係するデータセグメントは、文字データセグメントから:(i)文字データセグメントの加算もしくは減算などのバイト単位の演算、(ii)文字データセグメントの減算もしくは排他的論理和などのビット単位の演算、または(iii)同様の演算などの、任意の適切なアルゴリズムを用いて、決定され得る。
ステップ320のいくつかの実施形態では、エンコーディングアルゴリズムは、ネットワーク経由で送られたビットパターンの推定された最適化に基づいて、エンコーディングアルゴリズムを選択することを含む。たとえば、ほとんど0であるビットを送るのが有利である場合には、いくつかのエンコーディングアルゴリズムの間で比較が行われ得るのであって、結果として得られるパターンにおいて0のパーセンテージがより高いビットを計算することになるアルゴリズムを選択する。
ステップ320のいくつかの実施形態では、エンコーディングアルゴリズムは、送信単位特性などの1つまたは複数のシステム特性に基づいてエンコーディングアルゴリズムを選択することを含む。これらの実施形態のいくつかでは、データセグメントのサイズは、ネットワーク上でパケットがフラグメント化するオーバヘッドを減少させるために、システムパラメータに基づくことがあり得る。たとえば、いくつかのイーサネット(登録商標)ネットワークは、1500バイトの標準的MTU(最大送信単位)を用いる。5000バイトのコンテンツをそれぞれが1500バイトの4つのデータセグメントとしてエンコードすることによって、同じ量の4つのデータセグメントが送られ(5000/1500を切り上げ)、帯域幅のオーバヘッドが軽減される。別の例として、いくつかのルータのスイッチングファブリックは、一定の最適なセルサイズ(たとえば、128バイト)に対して設計されている。そのようなセルサイズの整数倍にエンコードすることによって、ネットワーク経由でのルータにおける転送オーバヘッドが縮小され得る。第3の例として、記憶装置(たとえば、ディスクドライブ)が、記憶のために一定のブロックサイズ(たとえば、4096バイト)を用いることがあり得るが、そのようなブロックサイズに対してエンコードすることによって、それらのディスクのための読み出し効率が改善され得る。同様にして、クライアントのキャッシュサイズとネットワーク要素の中間バッファサイズとは、データセグメントのサイズを決定するための基礎となり得る。
ステップ320のいくつかの実施形態において、エンコーディングアルゴリズムは、サーバの作業負荷に基づいてエンコーディングアルゴリズムを選択することを含む。
これらの実施形態のいくつかでは、選択は、コストに基づくサーバの選択に基づく。たとえば、より安価なCPU、記憶装置、またはネットワーク帯域幅を備えたサーバが選択されることがあり得る。この例において、選択されたサーバ構成が1Gbpsでデータを配信することが可能であり、与えられているアプリケーションが5秒以内に配信されなければならない10Gbの大きなファイルを用いる場合には、データアイテムが3つのデータセグメントにエンコードされ、データアイテムを再構築するためにはその中の2つが必要とされるように、エンコーディングアルゴリズムは選択され得る。2つの応答するサーバは、すると、与えられたサービス品質デッドラインを満足し得る(すなわち、サーバ当たり配信される5Gb/1Gbpsのサーバ配信速度=5秒)、ということが理解されるべきである。
ステップ320のいくつかの実施形態では、データセグメントリクエストは、データアイテム識別子(たとえば、URLまたはファイル名などのデータアイテムを識別する名称)だけを含む。これらの実施形態のいくつかでは、サーバは、データアイテムの1つのデータセグメントだけを記憶するように、構成される。たとえば、サーバがデータアイテムの「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」の選択は、データアイテムの上述した「B」データセグメントエンコーディングと等しいことがあり得るN/2(2)のデータセグメントアルゴリズムを特定する。ステップ320のいくつかの実施形態では、エンコーディングアルゴリズムディレクティブは、サーバがデータセグメントを決定するためのエンコーディングアルゴリズムを特定する。たとえば、{http://www.alcatel−lucent.com/,“N/2(1+2)”}を取得するというデータセグメントリクエストは、サーバが、データアイテムの第1の半分と第2の半分とのバイト単位での加算を返すことを特定し得る。データアイテムに対して適用される特定のデータセグメントエンコーディングアルゴリズムを特定するためには、任意の適切なプロトコルが用いられ得るということが理解されるべきである。
ステップ320のいくつかの実施形態では、データセグメントリクエストは、反復的ブロックベースでデータアイテムをエンコードするためのディレクティブを含む。特に、エンコーディングアルゴリズムは、データアイテム全体ではなくデータアイテムの一部に対して適用される。たとえば、2Mバイトであるデータアイテム(たとえば、ビデオ)に対しては、{A,B,A+B}というエンコーディングアルゴリズムが、1000バイトごとに適用され得る。有利であることに、ストリーミングデータアイテムが、反復ベースでデータアイテムをエンコードすることによって、レイテンシとロバストネスとの改善を実現し得る。
ステップ360および380のいくつかの実施形態では、データセグメントリクエストが、並列的に送信される。
ステップ360および380のいくつかの実施形態では、1つまたは複数のデータセグメントリクエストが再送される。これらの実施形態のいくつかでは、データセグメントリクエストが、別のサーバに再送される(すなわち、この方法を実行する装置は、再送されたデータセグメントリクエストに対応する少なくとも1つのサーバを決定するために、ステップ340に戻る)。これらの実施形態のいくつかでは、再送されたデータセグメントリクエストは、先行する成功裏になされたサーバ応答がそこから受信されたサーバに送られる。有利であることに、失敗したリクエストを、そこからの応答が成功裏に受信されたサーバに再度試みることは、パフォーマンスを向上させる場合があり得る。
さらなる実施形態では、再送されるデータセグメントリクエストは、データセグメントリクエストの1つが失敗したリクエストであるという決定に基づく。これらの実施形態のいくつかでは、データセグメントリクエストの再度の試みは、第1の成功裏になされたサーバ応答の受信と関連する時間閾値を超えることに基づく。あるそのような実施形態では、タイムスタンプT1が、データセグメントリクエストを送信した時に決定される(たとえば、ステップ360の開始、または、ステップ380における第1のもしくは最後のデータセグメントリクエストを送信した時)。第2のタイムスタンプT2は、任意のサーバからの第1のサーバ応答を完全に受信した後に、決定される。データセグメントリクエストの再度の試みは、よって、T1+150%*(T2−T1):というアルゴリズムに基づく期間の後に1つまたは複数のサーバ応答が受信されていないという決定に基づく。
送信プロトコルがHTTPである1つまたは複数のデータセグメントリクエストを再送するいくつかの実施形態においては、既存のTCP接続が再度用いられる。
1つまたは複数のデータセグメントリクエストを再送するいくつかの実施形態では、コントローラは、データセグメントが異なる順序で送信されるサーバ応答を受信するように構成されている。これらの実施形態のいくつかでは、この順序は逆順である。たとえば、Nバイトのデータセグメントについては、そのバイトの再送されるデータセグメントリクエストの送信は、逆の順序(すなわち、バイトN−1から開始する)である。有利であることに、別のサーバからの部分的に受信された応答は、より迅速に構築され得る(たとえば、後述されるステップ460で説明されるように)。
図4は、クライアントまたはコントローラ(たとえば、図1のクライアント120の1つまたはコントローラ140)が図2のステップ280に図解されているようにデータアイテムを再構築するための方法400の実施形態を図解する流れ図を示している。この方法は:先に送信された「N個」のサーバリクエストの1つに対応するサーバ応答を受信するステップ(ステップ420)と、データアイテムが受信されたサーバ応答から構築され得ると決定される場合には、決定されたデコーディングアルゴリズムに基づいて、受信されたサーバ応答からデータアイテムを構築するステップ(ステップ460)と、そうでない場合には、別のサーバ応答を受信するためにステップ420に戻るステップ(ステップ440)とを含む。この方法は、ステップ495で終了する。
方法400では、ステップ420は、先に送信された(たとえば、図3のステップ380)「N個」のサーバリクエストの1つに対応するサーバ応答を受信するステップを含む。特に、サーバ応答は、対応するサーバリクエストにおいて特定されたデータセグメントを含む。
方法400では、ステップ440は、受信されたサーバ応答からデータアイテムが構築され得るかどうかを決定するステップを含む。データアイテムが構築され得る場合には、この方法はステップ460に進み、そうでない場合には、この方法はステップ420に進む。この決定は、また、ステップ495に進むタイムアウトルーチンまたはエラールーチンも含み得ることが理解されるべきである。
方法400では、ステップ460は、決定されたデコーディングアルゴリズムに基づいて、受信されたサーバ応答からデータアイテムを構築するステップを含む。特に、デコーディングアルゴリズムは、エンコーディングアルゴリズムとステップ420で受信されたデータセグメントとに基づく。たとえば、{A,B,A+B}のエンコーディングアルゴリズムを用いると、2つのデータセグメントの任意の組合せ({A,B},{A,A+B}または{B,A+B})は、リクエストされたデータアイテムを再構築するのに十分である。特に、{A,B}は2つのデータセグメントの単純な連結であり、B=(A+B)−(A)であることを観察することによって、すなわち、2つの受信されたブロックのバイト単位での減算を行うことによって、{A,A+B}が構築され得る。同様に、A=(A+B)−(B)であることを観察することによって、{B,A+B}が構築され得る。
図3および4を参照すると、エンコーディングアルゴリズムがX=2の文字データセグメントとY=1の論理的に関係するデータセグメントとを含む第1の例では、1000個のASCIIキャラクタで構成されるHTMLウェブページは、それぞれが500バイトの3つのデータセグメントとして、エンコードされ得る。ここで、Aは第1の500バイトであり、Bは第2の500バイトであり、CはデータセグメントAおよびBのバイト単位での加算(たとえば、A+B)である。この例では、任意の2つのリクエストが受信されると直ちに、コントローラは、ページをレンダリングするために3つの異なるサーバにデータセグメントA、BおよびA+Bをリクエストし得る。有利であることに、この方式は、記憶装置の50%増加を要求する可能性があるが、リクエストの1/3が失敗または遅延することを許容しながら、2/1のファクタで送信レイテンシを潜在的に改善させることが可能である。
エンコーディングアルゴリズムがX=3の文字データセグメントとY=2の論理的に関係するデータセグメントとを含む第2の例では、1200個のASCIIキャラクタで構成されるHTMLウェブページは:{A,B,C,A+B−C,A−B+C}などのそれぞれが400バイトの5つのデータセグメントとして、エンコードされ得る。ここで、Aは第1の400バイトであり、Bは第2の400バイトであり、Cは最後の400バイトであり、A+B−CとA−B+CとはデータセグメントA、BおよびCのバイト単位での操作である。この例では、任意の3つのリクエストが受信されると直ちに、コントローラは、ページをレンダリングするために5つの異なるサーバにデータセグメントA,B,C,A+B−CおよびA−B+Cをリクエストし得る。3つのデータセグメントの任意の組合せが元のページを再構築するのに十分であることが観察され得る。有利であることに、この方式は、記憶装置の67%増加を要求する可能性があるが、リクエストの2/5が失敗または遅延することを許容しながら、3/1のファクタで送信レイテンシを潜在的に改善させることが可能である。
主に特定のシーケンスとして示され説明されているが、方法300、400または500に示されているステップは、任意の適切なシーケンスで実行され得るということが理解されるべきである。さらに、1つのステップによって識別されたステップが、そのシーケンスにおいて1つまたは複数の他のステップでも実行され得るし、または、複数のステップの共通の動作が一度だけ実行されることもあり得る。
主にデータアイテムはデータ記憶装置である場合が示されているが、いくつかの実施形態では、データアイテムはデバイス間で送られるメッセージでもあり得ることが認識されるべきである。たとえば、1つのそのような実施形態では、メッセージ(たとえば、リクエスト)はいくつかのセグメント(たとえば、
Figure 2016525256
を用いてエンコードされた3つのセグメントなど)としてエンコードされ、サーバに送られる。データアイテムがデータ記憶装置であるような実施形態と同様に、そのようなエンコーディングは、有利であることに、パケットが、異なる複数の経路に沿ってルーティングされるときに、33%のパケット損失を許容し、遅延変動を減少させ得る。これらの実施形態のいくつかでは、メッセージは、モバイルハンドセットと基地との間をワイヤレスネットワーク経由で送信される。
様々な上述された方法のステップはプログラムされたコンピュータによって行われ得るということが認識されるべきである。本明細書では、いくつかの実施形態は、また、プログラム記憶装置、たとえば、データ記憶媒体に及ぶことが意図されているが、これらは、マシン可読もしくはコンピュータ可読であり、マシン実行可能な、もしくはコンピュータ実行可能なプログラムの命令をエンコードし、ここで、前記命令は、前記上述された方法のステップのうちのいくつか、または全部を行う。プログラム記憶装置は、たとえば、デジタルメモリ、磁気ディスクおよび磁気テープなどの磁気記憶媒体、ハードドライブ、または光学的に可読なデータ記憶媒体でもあり得る。実施形態は、また、上述された方法の前記ステップを実行するようにプログラムされたコンピュータに及ぶことが、意図されている。
図5は、図1のクライアント120の1つ、サーバ130の1つまたはコントローラ140など、様々な装置500のある実施形態を概略的に図解している。装置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は、必要に応じて、上述されたように、図1のリンク125または135を経由しての通信をサポートするために、プロセッサ510およびI/Oインターフェースプログラム521と協働する。I/Oインターフェースプログラム521は、図2のステップ240もしくは260、図3のステップ310もしくは380、または図4のステップ420の1つまたは複数を、上述されたように、必要に応じて実行する。
データアイテムリクエストプログラム523は、図2のステップ220もしくは240、または図3の方法300のステップの1つまたは複数を、上述されたように、必要に応じて実行する。
データアイテム受信プログラム525は、図2のステップ280または図3の方法400のステップの1つまたは複数を、上述されたように、必要に応じて実行する。
サーバプログラム527は、図2のステップ260の1つまたは複数を、上述されたように、必要に応じて実行する。
いくつかの実施形態において、プロセッサ510は、プロセッサ/CPUコアなどのリソースを含むことがあり得るし、I/Oインターフェース530は、任意の適切なネットワークインターフェースを含むことがあり得るし、または、データ記憶装置511は、メモリもしくは記憶装置を含むことがあり得る。さらに、装置500は、以下のような、任意の適切な物理ハードウェア構成であり得る:すなわち、1つまたは複数のサーバと、プロセッサ、メモリ、ネットワークインターフェース、または記憶装置などのコンポーネントから構成されるブレードとである。これらの実施形態のいくつかでは、装置500は、相互にリモートであるクラウドネットワークリソースを含むことがあり得る。
いくつかの実施形態では、装置500が、1つまたは複数の仮想マシンである場合があり得る。これらの実施形態のいくつかにおいて、仮想マシンの1つまたは複数が、異なるマシンからのコンポーネントを含むことがあり得るし、または、地理的に分散されていることもあり得る。たとえば、データ記憶装置511とプロセッサ510とが、2つの異なる物理マシンに存在することがあり得る。
プロセッサ実行可能なプログラム520がプロセッサ510上で実装されるときには、プログラムコードセグメントが、特定の論理回路に類似して動作する独自のデバイスを提供するために、プロセッサと組み合わされる。
本明細書では、たとえば、プログラムとロジックとがデータ記憶装置に記憶されており、メモリがプロセッサと通信可能に接続された実施形態に関して示され説明されているが、そのような情報は、任意の他の適切な態様で(たとえば、任意の適切な個数のメモリ、記憶装置もしくはデータベースを用いて)、任意の適切な配置のデバイスに通信可能に接続された任意の適切な配置のメモリ、記憶装置もしくはデータベースを用いて、メモリ、記憶装置もしくは内部データベースもしくは外部データベースの任意の適切な組合せに情報を記憶して、または、任意の適切な個数のアクセス可能な外部メモリ、記憶装置、もしくはデータベースを用いて、記憶されることがあり得るということが、認識されるべきである。したがって、本明細書で言及されるデータ記憶装置という用語は、メモリ、記憶装置、およびデータベースのすべての適切な組合せに及ぶことが意図されている。
本明細書および図面は、本発明の原理を例証するにすぎない。したがって、たとえ本明細書において明示的に説明されていないまたは示されていなくとも、当業者は、本発明の原理を具体化しその精神および範囲に含まれる様々な仕組みを考案できる、ということが認識されるであろう。さらに、本明細書に記載されているすべての例は、主に、読者が本発明の原理と、技術を推し進めるために本発明者によって貢献がなされた概念とを理解するのを支援するための教育的目的だけを有することが明確に意図されており、これらの例は、そのような特に記載された例および条件には限定されないと解釈されるべきである。さらに、本明細書における本発明の原理、態様、および実施形態を記載しているすべての記述、ならびにその特定の例を記載しているすべての記述は、本発明の均等物にも及ぶことが意図されている。
「プロセッサ」とラベル付けされた任意の機能ブロックを含めて、図に示された様々な要素の機能は、適切なソフトウェアとの関連でソフトウェアを実行することができるハードウェアだけではなく、専用ハードウェアを用いることにより、提供され得る。プロセッサによって提供されるとき、それらの機能は、単一の専用プロセッサにより、単一の共用プロセッサにより、または、そのうちのいくつかが共用され得る複数の個別的なプロセッサによって、提供され得る。さらに、「プロセッサ」または「コントローラ」という用語の明示的な使用は、ソフトウェアを実行することができるハードウェアを排他的に指すものとして解釈されるべきでなく、これらに限定されることはないが、デジタル信号プロセッサ(DSP)ハードウェア、ネットワークプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ソフトウェアを記憶するためのリードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、および不揮発性記憶装置を、黙示的に含み得る。従来型のまたはカスタムの、他のハードウェアが含まれることもあり得る。同様に、図に示された任意のスイッチは、概念的なものにすぎない。それらの機能は、プログラムロジックの演算によって、専用ロジックによって、プログラム制御と専用ロジックの相互作用によって、または手動によっても実行され得るのであって、特定の技術が、コンテキストからより具体的に理解されるように、実装者によって選択可能である。
本明細書における任意のブロック図は本発明の原理を具体化する例証のための回路の概念図を表現している、ということが認識されるべきである。同様に、任意の流れ図、フローダイアグラム、状態遷移図、擬似コード、その他は、コンピュータまたはプロセッサが明示的に示されている場合でもそうでない場合でも、コンピュータ可読媒体において実質的に表現され得るのであって、コンピュータまたはプロセッサによってそのように実行され得る様々なプロセスを表現していることが認識されるべきである。

Claims (10)

  1. 冗長データアクセスを提供するための装置であって、
    データ記憶装置と、
    データ記憶装置に通信可能に接続されたプロセッサであって、
    データアイテムを選択し、
    データアイテムとエンコーディングアルゴリズムとに基づいて複数のデータセグメントリクエストを決定し、
    複数のデータセグメントリクエストに対応する複数のサーバを決定し、
    複数のデータセグメントリクエストを対応する複数のサーバに送信する
    ように構成されたプロセッサと、
    を備える、装置。
  2. 複数のデータセグメントリクエストが、複数のデータセグメントリクエストに応答して複数のサーバから受信される1組の予測されるデータセグメントがデータアイテムと比較してそのデータセグメント構成要素のサイズが小さく、1組の予測されるデータセグメントの真部分集合を用いてデータアイテムが構築され得るように構成される、請求項1に記載の装置。
  3. エンコーディングアルゴリズムが、データアイテムを、いくつかの文字データセグメントと文字データセグメントの2つ以上と論理的に関係する1つまたは複数のデータセグメントとに分離することを含む、請求項1に記載の装置。
  4. プロセッサが、さらに、ネットワーク経由で送られたビットパターンの推定される最適化に基づいてエンコーディングアルゴリズムを選択するように構成される、請求項1に記載の装置。
  5. 複数のデータセグメントリクエストがエンコーディングアルゴリズムディレクティブを含む、請求項1に記載の装置。
  6. プロセッサが、さらに、
    複数のサーバから複数のサーバ応答を受信し、
    複数のサーバ応答から、デコーディングアルゴリズムに基づいてデータアイテムを構築する
    ように構成されており、
    複数のサーバ応答が、1組の予測されるサーバ応答全体の真部分集合である、請求項1に記載の装置。
  7. 冗長データアクセスを提供するための方法であって、
    データ記憶装置と通信可能に接続されたプロセッサにおいて、データアイテムを選択するステップと、
    データ記憶装置と協働するプロセッサにより、データアイテムとエンコーディングアルゴリズムとに基づいて複数のデータセグメントリクエストを決定するステップと、
    データ記憶装置と協働するプロセッサにより、複数のデータセグメントリクエストと対応する複数のサーバを決定するステップと、
    データ記憶装置と協働するプロセッサにより、複数のデータセグメントリクエストを対応する複数のサーバに送信するステップと、
    を含む、方法。
  8. 複数のデータセグメントリクエストが、複数のデータセグメントリクエストに応答して複数のサーバから受信される1組の予測されるデータセグメントがデータアイテムと比較してそのデータセグメント構成要素のサイズが小さく、1組の予測されるデータセグメントの真部分集合を用いてデータアイテムが構築され得るように構成される、請求項7に記載の方法。
  9. エンコーディングアルゴリズムが、データアイテムを、いくつかの文字データセグメントと文字データセグメントの2つ以上と論理的に関係する1つまたは複数のデータセグメントとに分離することを含む、請求項7に記載の方法。
  10. 複数のサーバから複数のサーバ応答を受信するステップと、
    複数のサーバ応答から、デコーディングアルゴリズムに基づいてデータアイテムを構築するステップと、
    をさらに含んでおり、
    複数のサーバ応答が、1組の予測されるサーバ応答全体の真部分集合である、請求項7に記載の方法。
JP2016528269A 2013-07-24 2014-07-15 冗長データアクセスを提供するための方法および装置 Pending JP2016525256A (ja)

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
JP2016525256A true JP2016525256A (ja) 2016-08-22

Family

ID=52391402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016528269A Pending JP2016525256A (ja) 2013-07-24 2014-07-15 冗長データアクセスを提供するための方法および装置

Country Status (5)

Country Link
US (1) US20150032798A1 (ja)
EP (1) EP3025234A4 (ja)
JP (1) JP2016525256A (ja)
CN (1) CN105408871A (ja)
WO (1) WO2015010197A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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
US11356720B2 (en) 2020-01-30 2022-06-07 Snap Inc. Video generation system to render frames on demand
EP4096798A1 (en) 2020-01-30 2022-12-07 Snap Inc. System for generating media content items 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
US11036781B1 (en) * 2020-01-30 2021-06-15 Snap Inc. Video generation system to render frames on demand using a fleet of servers
CN112187760B (zh) * 2020-09-22 2022-11-08 宏图智能物流股份有限公司 一种基于数据拆分的网络请求防篡改方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10320337A (ja) * 1997-05-15 1998-12-04 Hitachi Ltd 分散データ管理方法
JPH1125022A (ja) * 1997-07-02 1999-01-29 Brother Ind Ltd クライアントサーバシステム
JP2007042115A (ja) * 2001-11-02 2007-02-15 Nec Corp スイッチ方法、装置およびプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0826181A4 (en) * 1995-04-11 2005-02-09 Kinetech Inc IDENTIFYING DATA IN A DATA PROCESSING SYSTEM
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
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
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
US8832292B2 (en) * 2008-10-15 2014-09-09 Aster Risk Management Llc Source-selection based internet backbone traffic shaping
US8504847B2 (en) * 2009-04-20 2013-08-06 Cleversafe, Inc. Securing data in a dispersed storage network using shared secret slices
US8725940B2 (en) * 2010-02-27 2014-05-13 Cleversafe, Inc. Distributedly storing raid data in a raid memory and a dispersed storage network memory
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10320337A (ja) * 1997-05-15 1998-12-04 Hitachi Ltd 分散データ管理方法
JPH1125022A (ja) * 1997-07-02 1999-01-29 Brother Ind Ltd クライアントサーバシステム
JP2007042115A (ja) * 2001-11-02 2007-02-15 Nec Corp スイッチ方法、装置およびプログラム

Also Published As

Publication number Publication date
EP3025234A4 (en) 2017-03-01
CN105408871A (zh) 2016-03-16
EP3025234A1 (en) 2016-06-01
WO2015010197A1 (en) 2015-01-29
US20150032798A1 (en) 2015-01-29

Similar Documents

Publication Publication Date Title
JP2016525256A (ja) 冗長データアクセスを提供するための方法および装置
US11297140B2 (en) Point of presence based data uploading
US9094464B1 (en) Connection digest for accelerating web traffic
CN110536179A (zh) 一种内容分发***和方法
US20160344796A1 (en) Network acceleration method, apparatus and device based on router device
US8392448B2 (en) Method and apparatus for transmitting packets in the network
US20150215400A1 (en) File Upload Method And System
US8812715B2 (en) Method, system, and proxy node for P2P streaming media data distribution
US20130103791A1 (en) Optimizing content delivery over a protocol that enables request multiplexing and flow control
US20160080529A1 (en) Method and device for sending requests
US10171610B2 (en) Web caching method and system for content distribution network
US20150271226A1 (en) Transport accelerator implementing a multiple interface architecture
JP2013257798A (ja) データ収集システムおよびデータ収集方法
CN107251529B (zh) 用于在内容传输网络***中的服务器之间传输和接收信息的方法和装置
US20130297731A1 (en) Content distribution over a network
JPWO2017135181A1 (ja) クライアント、サーバ、受信方法及び送信方法
WO2016180284A1 (zh) 服务节点分配方法、装置、cdn管理服务器及***
Liu et al. Can HTTP/2 really help Web performance on smartphones?
US20140074912A1 (en) Communication apparatus, relay apparatus and communication method
US11444882B2 (en) Methods for dynamically controlling transmission control protocol push functionality and devices thereof
KR102042027B1 (ko) IoT 로컬 네트워크에서 CoAP 기반의 트래픽 부하 관리 장치 및 방법
Anandaraj et al. An efficient framework for large scale multimedia content distribution in P2P network: I2NC
CN109792444B (zh) 实况内容分发***中的播出缓冲
Chhangte et al. Index coding at the WiFi edge: An implementation study for video delivery
KR102390522B1 (ko) 적응형 비디오 스트리밍 서비스를 위한 블록체인 기반의 안정적인 체감품질 가속기

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171205

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180626