(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
<ランダム化ピアツーピア同期の機能概要>
[0013]コンテンツアイテム同期システムの一般的な機能概要と処理を以下で説明する。予備的条件として、ユーザがコンテンツアイテムをクライアントデバイスに格納し、コンテンツアイテムが他のクライアントデバイス上のコンテンツアイテムのインスタンスや、ホストシステム、概してコンテンツ管理システムと同期される。クライアントデバイスは、ローカルコンテンツディレクトリにコンテンツアイテムを格納する。ローカルコンテンツディレクトリに格納されたコンテンツアイテムは、コンテンツ管理システムと同期され、コンテンツアイテムのコピーを保持し、コンテンツアイテムを他のクライアントデバイスと同期する。各クライアントデバイスは、クライアントアプリケーションを実行し、ユーザがコンテンツ管理システムにアクセスすることを可能にする。
【0009】
[0014]一形態において、コンテンツ管理システムと同期されたクライアントデバイスは、ローカルエリアネットワーク(LAN)上のピアクライアントデバイスと通信を行うことができる。LAN上で通信を行うクライアントデバイスのクライアントアプリケーションは、コンテンツ管理システムにおいてクライアントデバイスにコンテンツアイテムをダウンロードする効率を改善するピアクライアントデバイスを利用してもよい。各クライアントデバイスは、LAN上で複数のクライアントデバイスのサブセットと通信を行ってもよい。いくつかの実施形態において、クライアントデバイスのクライアントアプリケーションは、送受信を行うLAN上のクライアントデバイスの特定のサブセットをランダムに選択する。他の場合において、上記選択のランダム化は、好ましいネットワーク特性又は他の要望される特性を有する、クライアントデバイスに対して重み付けされる。その後、クライアントアプリケーションは、クライアントデバイス上で同期されるコンテンツアイテムの集合を示す(ネームスペースの形式で)、接続されるクライアントデバイスのそれぞれからのブロードキャストを受信する。
【0010】
[0015]LAN上のクライアントデバイスのクライアントアプリケーションが新たなコンテンツアイテム又は既存のコンテンツアイテムの新たなバージョンをクライアントデバイスと同期して利用可能であることをコンテンツ管理システムによって通知されると、クライアントアプリケーションは、接続されるデバイスから受信したブロードキャストに基づいて、同じネームスペースと同期されるLAN上のクライアントデバイスの集合を決定する。クライアントアプリケーションはその後、新たなコンテンツアイテムについての要求を送信するために、共有ネームスペースを有する決定したクライアントデバイスの集合からランダムに複数のクライアントデバイスを選択してもよい。いくつかの実施形態において、クライアントアプリケーションは、好ましい現在のネットワーク特性又は性能特性を有するLAN上のクライアントデバイスに対して加重ランダム化を行ってもよい。
【0011】
[0016]受領側のクライアントデバイスを決定すると、クライアントアプリケーションは、LAN上の受領側のクライアントデバイスのそれぞれに新たなコンテンツアイテムについての要求を送信する。当該要求は、同期されるコンテンツアイテムの新たな又は更新されたセクションを有する複数のブロック含む順序付けられたブロックリストの個々のブロックについて送信されてもよい。コンテンツアイテムが複数のブロックを含む場合にそれらのブロックが順序通りにダウンロードされないように、ブロックリストがランダム化される。受領側デバイスがランダム化されたブロックリストの第1のブロック(最初のブロック)の同期バージョンを含む場合、受領側デバイスは、要求側デバイスへ第1のブロックのコピーを転送する。当該転送が完了するとすぐに、当該デバイスは、ランダム化されたブロックリストの第2のブロック(2番目のブロック)についての第2の要求を行ってもよく、以後全てのブロックが転送されるまで行われる。受領側デバイスが要求されたブロックを含んでいなければ、要求側クライアントデバイスは、コンテンツ管理システムから直接的に当該ブロックをダウンロードするよう要求する。当該ダウンロードが完了するとすぐに、要求側クライアントデバイスは、受領側デバイスからランダム化されたブロックリストの要求ブロックを続ける。
【0012】
[0017]いくつかの実施形態において、各要求は、要求側デバイスで同期されるべき全体のブロックリストを含む。この場合、受領側デバイスのクライアントアプリケーションは、ブロックリストの複数のブロックのそれぞれの同期バージョンがランダム化されたブロックリストの順序で受領側デバイスに存在するかどうかを判定する。任意の一致するブロックがランダム化されたブロックリストの順で要求側デバイスに転送される。当該転送が完了するとすぐに、更新されたブロックリストが受領側のデバイスへ次の要求において送信される。
【0013】
<システムアーキテクチャの概要>
[0018]
図1は、一実施形態に係るコンテンツ管理システムのシステムアーキテクチャを示す。各コンポーネントの詳細は後述するが、ランダム化ピアツーピア同期の説明を提供すべく、いくつかの要素についてはここで紹介する。さらに、当業者には明らかなように、ランダム化ピアツーピア同期に使用される動作および方法は、必然的にコンピュータを必要とし、いかなる実施形態においても、人間の動作による精神的ステップによっては実行されない。さらに、当該動作は情報の記憶及び検索、情報の送受信、又は情報の処理のためのコンピュータの容易さを利用する一方で、当業者は、このような動作が、ここで説明したアルゴリズムを用いて特別に定義したデータに関して特定の方法で実行され、従って、オペレーティングシステム及び標準アプリケーションだけでそのようなコンピュータをネイティブに供給する方法とは異なる方法でコンピュータを構成する必要があるため、単に一般的なコンピュータ動作ではないことを理解する。さらに、ここで開示される構成は、コンテンツアイテムがピアツーピア同期システムを使用してダウンロードされる際の効率の向上を可能とする。
【0014】
[0019]LAN106を使用して互いに通信を行うクライアントデバイス100は、コンテンツ管理システム110から遠隔に位置するクライアントデバイス100間のインターネットワーキングを提供する任意の適切な通信手段となりうる、不図示の広域ネットワーク108を通じて、コンテンツ管理システム110と通信する。一般的には、インストールされたクライアントアプリケーション102Aを有するクライアントデバイス100Aは、コンテンツアイテムをコンテンツ管理システム110へ提供する。クライアントアプリケーション102Aは、ランダム化されたピアツーピア同期と関連する機能を実行するために、クライアントデバイス100Aに必要とされるプログラム及びプロトコルを含む。従って、クライアントデバイス100Aは、クライアントアプリケーション102Aによって要求されるアクションを頻繁に実行する。しかしながら、クライアントデバイス100A及びクライアントアプリケーション102Aが共に動作するため、説明を容易にするため、それらのいくつかの動作は、動作要素として、”クライアントデバイス100A”を用いて参照される。クライアントデバイス100Aのユーザは、例えば、同一のユーザによって管理されるその他のコンピュータ、又は異なるユーザによって操作されるコンピュータとなりうるクライアントデバイス100Bと共有すべき所定のコンテンツアイテムを指定している。コンテンツ管理システム110は、クライアントデバイス100Bに通知し、クライアントデバイス100Bに格納されるローカルコンテンツとしてクライアントデバイス100Aから受信した、指定されたコンテンツアイテムを同期する。クライアントデバイス100A及びクライアントデバイス100Bが同じLANで通信を行う場合、クライアントデバイス100Bは、ここで説明するように、ランダム化されたピアツーピア同期を使用してクライアントデバイス100Aから直接的にコンテンツアイテム要求してもよい。しかしながら、コンテンツ管理システムは、通常、クライアントデバイスに同期が必要であることを通知する責任がある。
【0015】
[0020]コンテンツ管理システム110は、各コンテンツアイテムをコンテンツアイテムの集合に対応するネームスペースに関連付ける。ネームスペースは、所定のコンテンツアイテムが格納されるディレクトリ構造内のディレクトリ(又は、”フォルダ”)を指定する。コンテンツアイテムの特定のネームスペースへの関連付けは、ネームスペーステーブル122に格納される。コンテンツ管理システム110は、各クライアントを、各ネームスペースにおいてコンテンツアイテムへのアクセス、変更、及び削除を行う特定の権利の識別とともに、アクセスを有するネームスペースに関連付ける。クライアント100がネームスペースに同期されると、当該クライアントは、ネームスペースに関連付けられるコンテンツアイテムのローカルコピーを格納し、利用可能であればコンテンツの場所に従ってコンテンツアイテムを構造化(organize)する。ユーザは個別のクライアントデバイス100又は複数のクライアント100と関連付けられ、例えば、ユーザは、家庭用コンピュータ、作業用コンピュータ、ポータブルコンピュータ、スマートフォン、及びタブレットコンピュータを全て一緒に同期させることができる。コンテンツアイテムを共有するために、ユーザは、他のユーザ及び/又はクライアントと共有すべきネームスペースを指定する。コンテンツ管理システム110はその後、共有ネームスペースのコンテンツアイテムを、共有ネームスペースと関連するクライアントに渡って同期する。コンテンツ管理システム110に格納されるコンテンツアイテムは、ドキュメント、データ、映画、アプリケーション、コード、画像、音楽などを含む任意のタイプのコンテンツアイテムを含むことができる。コンテンツアイテムはまた、コレクション、プレイリスト、アルバム、ファイルアーカイブなどと共に、コンテンツアイテムをグループ化するフォルダまたは他のメカニズムであってもよい。
【0016】
[0021]各ユーザは、コンテンツ管理システム110上でコンテンツアイテムを格納するために使用されるべきストレージの容量を特定する情報を含む、コンテンツ管理システム110上のアカウントに関連付けられる。
【0017】
<コンテンツ管理システムの概要>
[0022]クライアントデバイス100A及び100B間でコンテンツ管理システム110を用いる同期の一方法は、
図1によって示されるアーキテクチャを参照して説明されうる。ランダム化されたピアツーピア同期に使用されうる、多数の可能な同期方法の1つを以下で説明する。
【0018】
[0023]コンテンツ管理システム110は、データストア118にコンテンツアイテムを格納する。コンテンツアイテムは、ブロックと呼ばれる固定サイズの部分に格納される。ブロックのサイズ実装に従って変化し、一実施形態においては、ブロックは4メガバイトのサイズである。従って、小さいサイズのコンテンツアイテムは、単一のブロックに格納される一方で、大きいサイズのコンテンツアイテムは、コンテンツ管理システム110のストレージについて、数十、数百、又はそれ以上のブロックに分割されて格納されうる。メタデータはコンテンツアイテムの複数のブロック及びコンテンツアイテムにおけるブロックの順序を定義するブロックリストを含む。
【0019】
[0024]保留ブロックテーブル120は、コンテンツ管理システム110で受信されることが予期される保留ブロックのリストを保持する。保留ブロックテーブル120は、クライアント100から送信されるブロックと、それらのブロックが属するネームスペースとの間の関連を格納する。
【0020】
[0025]ネームスペーステーブル122は、個別のコンテンツアイテムをネームスペースに関連付けるデータを格納し、各ネームスペースをクライアントに関連付けるデータを保持する。
【0021】
[0026]メタデータサーバ112は、新たなコンテンツアイテムをコンテンツ管理システムへ追加する(委任する)クライアントからの要求を管理する責任を負う。メタデータサーバ112はまた、コンテンツアイテムを同期する要求をクライアントデバイス100から受信する。メタデータサーバ112は、クライアントデバイス100がコンテンツ管理システム110と同期された最新時刻の記録を保持する。クライアントデバイス100から同期する要求が受信されると、メタデータサーバ112は、最新の同期時刻スタンプ以後に、当該クライアントデバイス100へ同期されたネームスペースに委任されている任意のコンテンツアイテムを判定する。さらに、メタデータサーバ112は、最新の同期時刻スタンプ以後に、受信された任意の保留ブロックを判定する。
【0022】
[0027]通知サーバ116は、クライアント100との通信を行い、特に、新たなデータが利用可能であることをクライアントへ通知する。通知サーバ116は、ネームスペーステーブル122で各ネームスペースに関連付けられるクライアント100のリストを保持する。通知サーバ116が、新たなブロックが所定のネームスペースについて利用可能であるというアラートをブロックサーバ114又はメタデータサーバ112から受信すると、当該通知サーバ116は、ネームスペーステーブル122から当該ネームスペースと関連付けられるクライアントを特定する。通知サーバ116は、ネームスペースに関連付けられたクライアント100に当該クライアント100を活動させるように通知し、新たなブロックが特定したネームスペースについて利用可能であることを示す。
【0023】
[0028]複数のクライアントデバイスが同じLAN上で通信を行っている際に、2つのクライアント100、例えば、クライアントデバイス100A及びクライアントデバイス100Bの間の同期が以下のように発生する。まず、クライアントデバイス100Aが共有データに追加のコンテンツアイテムを追加する。クライアントデバイス100Aはその後、追加のコンテンツアイテムが共有データに存在することをコンテンツ管理システム110へ通知する。コンテンツ管理システム110はその後、追加のコンテンツアイテムが共有データにあることをクライアントデバイス100Bに通知し、クライアントデバイス100Bは、コンテンツ管理システム110から追加のコンテンツアイテムを取り出す準備を行う。コンテンツ管理システム110は、コンテンツアイテムと、保留ブロックテーブル120を用いてコンテンツ管理システム110で受信されることが予期される保留ブロックとのリストを保持し、クライアントデバイス100Aからコンテンツ管理システム110によって受信されるブロックとしてコンテンツアイテムに対応するブロックをダウンロードするようにクライアントデバイス100Bに通知する。保留ブロックは、コンテンツ管理システム110がクライアントデバイスAから受信することを期待する追加のコンテンツアイテムに対応するそれらのブロックであり、追加のコンテンツアイテムの全てがコンテンツ管理システム110に送信される前に、受信側のクライアントデバイス100Bに提供されうるブロックを特定するために使用される。
【0024】
[0029]転送中のコンテンツアイテムを管理するために、コンテンツ管理システム110は、保留ブロックに関連付けられるネームスペースとともに、保留ブロックのリストを保有する。保留ブロックが受信されると、ネームスペースに関連付けられるクライアントに通知され、受信されたブロックについての転送を開始することができる。従って、アップロードするクライアント(新たなコンテンツアイテムを提供する)と、ダウンロードするクライアント(新たなコンテンツアイテムを受信する)は、コンテンツ管理システム110に対して非同期でブロックを転送する。
【0025】
<クライアントデバイスの概要>
[0030]各クライアントデバイス100は、デスクトップ、ラップトップ、タブレット、モバイルデバイス、又は、コンテンツ管理システム110及びインストールされたクライアントアプリケーション102を用いる他のクライアントと同期される共有データのローカルコピーを保持する他のシステムなどのコンピューティングデバイスである。共有データは、単一のユーザに関連付けられるクライアントのみと同期されてもよく、複数のユーザと関連付けられるクライアントと同期されてもよい。クライアントデバイス100は、
図2に関してさらに説明されるように、共有データを扱い、データを追加するためのモジュール及びアプリケーションを含む。
【0026】
[0031]
図2は、クライアントアプリケーション102のモジュールを示す。クライアントアプリケーション102は、種々のモジュールと、コンテンツ管理システム110とデータを同期するためのデータストアを含む。クライアントアプリケーション102は、コンテンツ同期モジュール210、ハッシュ(hashing)モジュール220、ダウンロードモジュール230、アップロードモジュール240、及びピアツーピア同期モジュール250を含む。さらに、クライアントアプリケーション102は、ファイルジャーナル260、共有データ264、ブロックキャッシュ270、及び階層ネットワークデータ272を含むデータストアを保持する。
【0027】
[0032]共有データ264はコンテンツ管理システム110で同期されているデータであり、コンテンツ管理システム110から受信したコンテンツアイテムを含む。ユーザが共有データ264内のコンテンツアイテムを追加、変更又は削除すると、それらの変更はコンテンツ管理システム110と同期される。ハッシュモジュール220及びブロックキャッシュ270は、コンテンツ管理システム110へアップロードされるコンテンツアイテムを含むブロックを特定するように作動する。ハッシュモジュール220は、MD5又はSHA−1などの任意の適切なハッシュアルゴリズムを実行することによってブロック識別子を割り当てる。コンテンツ同期モジュール210はその後、ブロックキャッシュ270内に位置する常駐ブロックと、コンテンツ管理システム110によって保持されるブロックとを比較するために、それらの識別子を使用する。
【0028】
[0033]クライアントアプリケーション102内において、ファイルジャーナル260は、クライアントアプリケーション102を使用してアカウントにアクセス可能な全てのコンテンツアイテムのメタデータをリストしたテーブルを格納する。メタデータは、リビジョン日時と、ネームスペースと、各コンテンツアイテムに対応するブロックリストとを含む。常駐していない又は同期していないコンテンツアイテムが、依然としてファイルジャーナル260に含まれている。
【0029】
[0034]クライアントアプリケーション102内で、クライアントデバイス100上の共有データ264のデータが変更されるか又は共有データ264へデータが追加されると、共有データ264への変更は、アップロードモジュール240によってコンテンツ管理システム110へ送信される。アップロードデータは、変更ブロック又は追加ブロックについての関連するブロック識別子を含む。コンテンツ管理システム110はその後、新たなブロック又はブロックの新たなバージョンがアップロードされたことを、アップロードクライアントデバイス100と同じネームスペースを有する他のクライアントデバイスに通知する。当該通知は、ブロック識別子と、アップロードされる対応するコンテンツアイテムとを含んでもよい。クライアントデバイス100が通知を受信すると、クライアントデバイス100は、共有データ264への変更についてコンテンツ管理システム110に問い合わせる。共有データが変更されると、コンテンツ同期モジュール210は、クライアントデバイス100上で共有データを格納するためにコンテンツ管理システム110からの変更を要求する。当該要求は、新しい又は更新されたコンテンツアイテムを含む単一の要求であってもよく、或いは、クライアントデバイス100へのダウンロードのための単一のブロックを含む複数の要求がそれぞれ送信されてもよい。ダウンロードモジュール230はその後、ダウンロードブロックの新たなバージョンを反映するために、ファイルジャーナル260、共有データ264、及びブロックキャッシュ270を更新することによって、コンテンツ管理システム110からダウンロードされる任意のブロックを受信する。
【0030】
<ピアツーピア同期>
[0035]ピアツーピア同期モジュール250は、ピアデバイスを用いてコンテンツアイテムを同期する追加のプロセスを利用する。明確にするために、ピアデバイスは、同じLANに接続される任意のクライアントデバイスであってもよい。ピアツーピア同期モジュール250は、クライアントデバイス100がLANに接続されているかどうかを識別することができる。クライアントデバイスがLANに接続されていると判定すると、ピアツーピア同期モジュール250は、
図3乃至
図7を参照して説明する、コンテンツアイテムを同期する代替の方法を行う。
【0031】
[0036]クライアントデバイス100がLANに接続されていると判定された後、ピアツーピア同期モジュール250は、クライアントデバイス100と同じネームスペースと関連付けられる、ローカルエリアネットワーク上で通信するピアデバイスを識別する。ピアツーピア同期モジュール250は、クライアントアプリケーションがインストールされたLAN上のピアデバイスからブロードキャストを受信する。ブロードキャストは、通常、ユーザデータグラムプロトコル(UDP)を用いてLANを介して送信される。LAN上で通信を行うクライアントデバイス100は、当該LANに接続される任意のデバイスにUDPメッセージを送信する。ピアツーピア同期モジュール250は、ブロードキャストを送信するピアデバイスのIPアドレス、及び、当該ピアデバイスで同期されるネームスペースを判定するために各ブロードキャストを解析する。ピアツーピア同期モジュール250はその後、各ブロードキャストのネームスペースを、クライアントデバイス100上で同期されるネームスペースと比較する。それらのネームスペースが一致すれば、ピアツーピア同期モジュール250は、後でそれらのデバイスに接続するために、一致するネームスペースと共に当該ピアデバイスのIPアドレスを格納する。
【0032】
[0037]
図3Aは、ローカルエリアネットワーク106上で通信を行う、ネームスペースが一致するピアデバイスの通常グループの概念図である。ストライプの丸は、最近LANネットワークに参加し、接続を求めるピアデバイスを表す。黒の丸は、短いping、又は、高帯域、又は、任意の他の好適なネットワーク特性を有するような、好適な接続を有するピアデバイスを表す。白の丸は、平均の又は平凡なネットワーク特性を有するピアデバイスを表す。
【0033】
[0038]ピアツーピア同期モジュール250は、コンテンツ管理システム110に関する通信及び一致するネームスペースを送受信するために、ピアデバイスのグループに接続する。クライアントデバイス100は、ネームスペースを共有するLAN上のピアデバイスのサブセットに接続してもよい。クライアントデバイス100が接続を維持するピアデバイスの数は、特定のクライアントデバイス100のネットワークに基づいてもよい。代替的に、ピアデバイスのサブセットのピアデバイスの数は、実装者の裁量で、LANに接続されたデバイスの総数、又はクライアントデバイス100のネームスペースを共有するデバイスの総数に比例してもよい。他の実施形態において、接続されるサブセットのピアデバイスにおけるピアデバイスの数は、実装者の裁量で、コンテンツ管理システム110についてのプリセットであってもよい。ピアデバイスのサブセットについて判定されたピアデバイスの数よりネームスペースを共有するピアデバイスが少ない場合、クライアントデバイス100は、LAN上のネームスペースを共有するデバイスの全てとの接続を維持してもよい。さらに、各クライアントデバイスにおける接続数は、ネームスペース上のコンテンツアイテムにおけるブロック数の平均、中間値、又はモードに基づいてもよい。例えば、各クライアントデバイス100の接続数は、ネームスペースの平均ブロック数の3倍に設定されてもよい。これは、コンテンツ管理システム110への要求を送信する前に、ブロックを要求する3つの機会を可能にする。
【0034】
[0039]クライアントデバイス100は、非常に多くのピアデバイスへの接続がデバイスのネットワーク性能を低減するため、当該クライアントデバイス100とネームスペースを共有するピアデバイスの総数のサブセットに接続する。さらに、ピアデバイスのサブセットは、通常、LAN上で提示される所定のネームスペース上に格納されるコンテンツアイテムの大部分を代表するものであり、サブセットグループのサイズが大きければ、ネームスペースを共有するピアデバイスの数のかなりの部分であり、後述するような、許容されるアルゴリズムを用いて選択される。
【0035】
[0040]送信制御プロトコル(TCP)、又は、ストリーム送信制御プロトコル(STCP)を用いて、接続が確立される。これは、共有データやメタデータを交換する安全なかつ信頼性のある接続を確立し、可能な限り迅速にコンテンツアイテムの同期を可能とすることによって、よりよいユーザ経験を提供する。
【0036】
[0041]標準のピアツーピアシステムにおいて、各デバイスは、最も良好な現在の又は過去のネットワーク性能を有するピアデバイスとの接続を優先する。しかしながら、これは、新しいデバイスが、多くの他のデバイスに既に接続されるピアデバイスとの接続を形成する結果となりうる。同一のネームスペースを有するピアデバイスに渡ってコンテンツアイテムを同期する処理は、同期中にネットワークアクティビティがバーストする可能性があり、従って、非常に多くのデバイスが好ましいデバイス310との接続を形成する場合、その後ネットワークトラフィックが問題となりうる。この着想については
図3B及び
図3Cに示される。
【0037】
[0042]
図3Bは、デバイス300Aの接続を示す。デバイス300Aは、LANに接続し、多くのネームスペースを共有するピアデバイスからブロードキャストを受信する。当該シナリオ340において、デバイス300Aは、主にポジティブなネットワーク特性に基づいて接続を形成する。説明のため、デバイス300Aが行う接続数を8つの接続に制限すると仮定する。
【0038】
[0043]シナリオ340において、デバイス300Aは、8つの好ましいピアデバイス310とのみ接続を開始する。デバイス300B及び300Cは、同じ形態に従い、同じの8つのデバイス310に接続する。
図3Cは、シナリオ340の結果を示す。デバイス300A、300B、及び300Cは全て、同じ8つの好ましいピアデバイス310に接続される。これらのデバイスは過去のネットワーク特性に基づいて典型的なネットワークアクティブティ中に平均的なピアデバイス320に対して優れたネットワーク特性を有するものの、それらは実際には、デバイス300A,300B、及び300Cのそれぞれが同時刻にコンテンツアイテムの要求を行う場合には、悪化する可能性がある。性能は、好ましいデバイス310と、平均的なデバイス320との間の負荷をよりよく分散することによって改善されるかもしれない。
【0039】
[0044]一実施形態において、ピアツーピア同期モジュール250は、クライアントデバイス100とネームスペースを共有するピアデバイスのランダムに選択されたサブセットからの接続を要求する。これは、他のピアデバイスより優先されるピアデバイスがなくなり、ネームスペースを共有するデバイス間で接続が均等に分散される可能性が最も高くなることを保証する。従って、同期中は、ネットワークトラフィックが抑制されない可能性がある。一方で、好ましい接続を有するデバイス310は、一般的には複数の接続を扱うことがより可能であるため、不十分に利用されている。
【0040】
[0045]他の実施形態において、ピアツーピア同期モジュール250は、接続するピアデバイスを判定するために、加重ランダム化手法を使用する。この場合、好ましいデバイスには、過去の平均帯域幅、過去の平均待ち時間、接続成功率、過去のブロードキャスト頻度、過去の平均接続速度、又は、他の適切な尺度などの要因に基づいて、所定の優先順位が与えられる。いくつかの場合において、デバイスは、過去のネットワーク特性272に基づいて、それらの全体的な好感度を示すスコアを受け取ってもよい。当該スコアはその後、ほぼゼロに正規分布したランダムな整数によって修正される。正規分布の標準偏差は設計選択として調整されうる、或いは、任意の他の分布は、単一の目的を達成するために使用されうる。いくつかの実施形態において、分布のパラメータ(正規標準偏差の場合の標準偏差等)は、ピアデバイスのオリジナルのランキングに基づいて修正されてもよい。例えば、より高い標準偏差を有する分布に基づくランダム値は、少ない分散の分布が低くランク付けされたピアデバイスに対して使用される一方で、より高くランク付けされたデバイスのスコアに追加されうる。ランダム整数をランキングに追加することは、全てのクライアントデバイス100が同一のランキングに判定し、同じピアデバイス310に優先することを防ぐ。しかし、同時に、より適切なピアデバイス310がより高いスコアを受け取る可能性があり、従って、それらは接続について選択される可能性がある。当業者は、加重ランダム化やランキングの他の方法が同様の結果を達成するために使用されうることを理解するであろう。例えば、各ピアデバイスには”bin”内にピアデバイスを配置するスコアが与えられ、その後、各binのデバイスは当該bin内でランダム化されるが異なるbinに移動することはない。接続の際、クライアントデバイス100は、最初のいくつかのbinからデバイスを選択するであろう。
【0041】
[0046]
図3Dは、加重ランダム化された接続についてのシナリオを示す。このシナリオ350において、デバイス300Aは再び8つのデバイスに接続する。しかしながら、シナリオ350において、加重ランダム化が使用される。従って、デバイス300Aは、好ましいデバイス310と平均デバイス320との間の重み付けされた一部(split)に接続する。さらに、ランダム化のため、デバイス300B及び300Cは、接続する異なるデバイスのサブセットを選択する。
図3Eは、シナリオ350において接続するデバイス300A、300B、及び300Cの結果を示す。例示の接続330は、ネームスペースを共有する全てのピアデバイスの間でよりいっそう分散される。したがって、新たに追加されたコンテンツアイテムの同期が発生すると、要求トラフィックは、より均一して分散され、従来の技術よりもより良い性能の結果をもたらす。
【0042】
[0047]クライアントデバイス100が当該クライアントデバイス100とネームスペースを共有する選択されたピアデバイスのサブセットとの接続が開始すると、当該クライアントデバイスでは、接続したピアデバイスのサブセットにブロックの要求を送信する準備が行われる。ピアツーピア同期において、クライアントデバイス100が、ブロックがクライアントデバイス100と同期されるネームスペースにおいて追加され又は変更されたことの通知を受信すると、ピアツーピア同期モジュール250は、コンテンツ管理システム110へ要求を送信する前に、まず、接続されるピアデバイスに要求を送信する。この要求戦略は、同期時間を低減し、全体のシステム性能を改善することができる。これは、ピアデバイスが要求を満足することができる場合、コンテンツ管理システムへ要求が行われず、これにより、サーバレベルでのトラフィックを低減する。さらに、同じネットワーク上のデバイス間での接続時間がサーバと接続を開始するよりも非常に短いため、これはダウンロード時間より短くすることを可能とする。また、ピアツーピア要求は、少数のいくつかのピアデバイスがコンテンツ管理システム110から受信したデータをLAN上の他のデバイスに広げることを可能にすることによって、サーバの観点から冗長性を低減している。
【0043】
[0048]2つのピアデバイス間でTCP接続が確立されると、ピアツーピア同期モジュール250は、接続されるピアデバイスからの特定のブロック、又は、コンテンツアイテムにおける全体のブロックリストを要求するHTTP要求を用いる。ピアツーピア同期モジュール250は、接続されるデバイスに、要求コンテンツアイテムのIDを通知する。それらの通知は、ピアデバイスからの他の要求をよりよく調整することができる。
【0044】
[0049]通常のピアツーピア同期では、最初の要求は、通常、最初の利用可能な接続ピアデバイスに送信される。しかしながら、複数のピアデバイスが同時刻に新たなコンテンツアイテムをダウンロードしようと試みると、この戦略では、単一のピアデバイスが多数の他のデバイスへの短い待ち時間の接続を有する場合、複数のピアデバイスが、当該単一のデバイスに同じブロックを要求することになる。これは、単一のデバイスまわりのトラフィックが増大し、いくつかの場合において、当該デバイスに同じコンテンツアイテムに対する要求を繰り返し拒否する必要があり、性能を低減することになってしまう。
【0045】
[0050]この性能面を改善するために、ピアツーピア同期モジュール250は、要求が送信される接続デバイスの順序をランダム化する。
図4Aは、多数のクライアントデバイス100A、100C、100E、及び100Gの全てがその短い待ち時間に起因するクライアントデバイス100Bからの対象のコンテンツアイテムを最初に要求する場合について示す。クライアントデバイス100Bが当該コンテンツアイテムを有するため、当該クライアントデバイスはそれぞれの要求を順に受け付けるが、それらの要求のそれぞれを連続して扱わなければならず、これにより、性能が低下してしまう。
図4Bは、要求を順序付ける別の方法を示す。いくつかの測定により最良の接続を有するピアデバイスへの要求を送信すること、又は、同時に複数の要求を送信してコンテンツアイテムをダウンロードするために最初の応答デバイスを用いることの代わりに、ピアツーピア同期モジュール250は、ピアデバイスに接続されるクライアントデバイス100に対する要求の順序をランダムに判定してもよい。
図4Bに示すように、開始要求は、シナリオ420で複数のピアデバイス間でより均一に分散される。これは、単一のクライアントデバイスまわりのトラフィック量を低減することと、複数の要求側のクライアントデバイス100が要求ブロックを有していないピアデバイスへ要求を送信する機会を減少させることとの両方によって、性能を改善する。
【0046】
[0051]要求の順序を単純にランダム化することに加えて、ピアツーピア同期モジュール250は、クライアントデバイスに対する要求順序を決定するために加重ランダム化手法を使用してもよい。この場合、ピアツーピア同期モジュール250は、各接続ピアデバイスについてのスコアを計算し、その後、
図3D及び
図3Eを参照して説明したように、分布に基づいてランダム化された変更(modifier)を適用する。この場合、各接続ピアデバイスのスコアは、デバイスの現在の帯域幅、どれくらいの要求が所定の時間期間内にデバイスで受信されるか、当該デバイス上でどれくらいのネームスペースが同期されるか、当該デバイスが広域ネットワークを介してコンテンツ管理システム110と現在通信しているかどうか、現在の待ち時間、又は、任意の他の適切なネットワーク特性を含む、デバイスの現在のネットワーク特性に基づいてもよい。
【0047】
[0052]要求順を決定するために使用されることに加えて、接続ピアデバイスのスコアはまた、ピアデバイスとの各接続が終了されるか又は維持されるかを決定するために使用されてもよい。いくつかの実施形態において、接続ピアデバイスのスコアが閾値を下回る場合、当該デバイスとの接続は終了され、新たな接続が他のピアデバイスと確立される。
【0048】
[0053]前述したように、接続ピアデバイスへの各要求は、コンテンツアイテムを含む単一のブロックについての要求を含んでもよく、或いは、コンテンツアイテムについての全体のブロックリストを含んでもよい。いずれの場合でも、ピアツーピア同期モジュール250は、個々のブロック要求の順序、又は、性能を改善するブロックリストの順序をランダム化してもよい。他の実施形態において、コンテンツアイテムを含むいくつかのブロックは、ダウンロードを完了する前にクライアントデバイス100上のアプリケーションがコンテンツアイテムを開くことを可能とするために、それらのオリジナルの順序で保持されてもよい。
【0049】
[0054]
図5A乃至
図5Dは、クライアントデバイス100A、100B、及び100Cが、ブロック1〜5で構成される新たなコンテンツアイテムがクライアントデバイス100の共通のネームスペースに追加されたことを、コンテンツ管理システムによって通知される状況において、ブロックリストをランダム化しないピアツーピア同期システムを示す。
図5に示されるシナリオを単純化するため、
図5では3つのクライアントデバイスのみが示されるが、このケースで示される問題及び解決手段が多数のコンテンツアイテムへどのように拡張されるかは明確である。
【0050】
[0055]
図5Aは、クライアントデバイス100がブロック1〜5のいずれのブロックも格納していない状態から始める。これは、他の2つのクライアントデバイス100のそれぞれからのブロックリスト上の最初のブロック(第1のブロック)を要求するために、各クライアントデバイス上のピアツーピア同期モジュール250が始動される(各クライアントデバイス100からの2つの要求は同時には発生しないが、要求時刻の差分が1つのブロックについてのダウンロード時間よりも十分に長いため、2つの要求は、それらが同時に発生したかのように取り扱うことができる。)。明瞭に、当該クライアントデバイスのいずれもがブロック1を有していなければ、全ての要求が否定される。
【0051】
[0056]
図5Bは、2つのピアデバイスのいずれもがブロック1の配置に失敗し、クライアントデバイス100はコンテンツ管理システム110からの最初のブロックを要求することを示す。
【0052】
[0057]
図5Cは、最初のステップの繰り返しであり、最初のブロックのダウンロードが完了した後に、各クライアントデバイス100上のピアツーピア同期モジュール250が他のピアデバイスのそれぞれからのブロック2を要求する。クライアントデバイスのそれぞれは同じブロックリストの順序を有しているため、他のクライアントデバイスの何れもがダウンロードしたブロック2を有していない。
【0053】
[0058]
図5Dは、3つのクライアントデバイスの全てが、ピアデバイスからの2番目のブロック(第2のブロック)を受信できないため、コンテンツ管理システムからの2番目のブロックを要求する必要があることを示す。
【0054】
[0059]
図6A乃至
図6Dは、
図5A乃至
図5Dと同様のシナリオを示すが、ブロックリストがランダム化されている。
図6Aは、クライアントデバイスがいずれのブロックも有していない場合の最初のステップを示す。これは、多くの同じ方法を展開し、3つのクライアントデバイスの全てが
図6Bに示されるように、コンテンツ管理システム110からの最初の要求ブロックを要求しなければならない。
【0055】
[0060]
図6Cにおいて、コンテンツ管理システム110から、クライアントデバイス100Aはブロック4をダウンロードし、クライアントデバイス100Bはブロック2をダウンロードし、クライアントデバイス100Cはブロック1をダウンロードする。各クライアントデバイスにおけるピアツーピア同期モジュール250はその後、ブロックリストの次のブロックに続く。クライアントデバイス100Aに関し、ブロック2はブロックリストの2番目のブロックであり、クライアントデバイス100Bがコンテンツ管理システム110からブロック2を既にダウンロードしているため、当該要求は成功する。ブロック2はクライアントデバイス100Bからクライアントデバイス100Aへ転送され、これにより、コンテンツ管理システムへの要求を防ぎ、WANのサーバによって提供されるよりも速いダウンロードを提供することができる。同様に、クライアントデバイス100Cはまた、ブロック4についてより効率的なピアツーピア転送を受信することができる。残念ながら、クライアントデバイス100Bはそのブロックリストの2番目のブロック3についてソースを発見できない。
図6Dは、ランダム化ブロックリストの要求を示す。全てのブロックリストが互いに異なって順位付けされることを保証することによって、クライアントデバイス100は同じネットワーク内のピアデバイスとの間で要求が成功する可能性が高いため、ピアツーピア同期システムの効率化を改善する。これは、同時刻に多くのデバイスがコンテンツアイテムを要求する状況で、或いは、1つのデバイスが直近に当該LAN上のネームスペースに参加している状況で特に有用である。
【0056】
[0061]
図7は、一実施形態に係る、コンテンツアイテムのランダム化ピアツーピア同期の方法のフローチャートである。まず、700で、クライアントデバイス100は、ネームスペースと関連付けられる、1以上の同期コンテンツアイテムを格納する。その後、ピアツーピア同期モジュール250は、クライアントデバイス100がLAN上で通信を行うかを判定する。710で、ピアツーピア同期モジュール250は、クライアントアプリケーション102がインストールされた、当該LAN上の他のクライアントデバイスから複数のブロードキャストを受信する。各クライアントデバイスのピアツーピア同期モジュール250はその後、クライアントデバイス100と同じネームスペースに関連付けられるブロードキャストするクライアントデバイスを識別する。ピアツーピア同期モジュール250はその後、最初のクライアントデバイス100とネームスペースを共有する識別したクライアントデバイスのランダム化したサブセットを選択し、720で、選択したクライアントデバイスのそれぞれと接続する。いくつかの実施形態において、ランダム化は、好ましい過去のネットワーク特性を有するデバイスの方に重み付けされる。次に、730で、新たなコンテンツアイテムが当該ネームスペースで同期されたことを示すコンテンツ管理システム110からの通知を受信すると、740で、ピアツーピア同期モジュール250は、接続デバイスのサブセットへ要求を送信する。いくつかの実施形態において、各要求は、コンテンツアイテムの単一のブロックについての要求である。他の実施形態において、当該要求はブロックリストの全体を含む。各要求は、ランダム化された順序で接続デバイスのサブセットのそれぞれへ送信されてもよい。ランダム化された順序は、好ましい現在のネットワーク特性を有する接続デバイスへ要求を送信するように重み付けされうる。要求されるブロック(又は、ブロックリストのブロック)の順序もまたランダム化される。いくつかの実施形態において、アプリケーションが全てのブロックがクライアントデバイス100上に格納される前にコンテンツアイテムを開くことを可能とするように、あるブロックについてはそれらのオリジナルの位置を維持する。接続デバイスのサブセットのいずれもが要求ブロックの同期バージョンを有していない(又は、ブロックリストの要求ブロックの全てを有していない)との判定に応じて、760で、コンテンツ管理システム110からの最初の要求ブロックをダウンロードする(コンテンツ管理システム110から当該ブロックリストの利用可能でないブロックをダウンロードする。)。要求が個々のブロックについてのものである場合、当該ブロックリストの2番目のブロックがその後、接続クライアントデバイスのサブセットに送信される。接続クライアントデバイスのサブセットの1つが最初のブロック(又は、当該ブロックリストのいくつかのブロック)を有する場合、770で、クライアントデバイスは、2番目のブロック(又は、異なるコンテンツアイテムの新たなブロックリスト)についての要求を送信する前に、最初のブロック(又は、当該ブロックリストの一致するブロック)を当該クライアントデバイスへダウンロードする。
【0057】
[0062]本発明の実施形態に係る前述の説明は、説明の目的で提示されており;本発明を網羅する又はここで開示される同一の形態に限定することを意図していない。当業者であれば、上記開示に照らして種々の変更及び変形が可能であることを理解することができる。
【0058】
[0063]明細書において使用された言葉は主に可読性及び説明の目的のために選択されたものであり、本発明の主題の輪郭を描いたり制限を加えたりするために選択されたものではない。従って、本発明の範囲は、この詳細な説明によって限定されるのではなく、ここでの記載に基づく本出願で公表される任意の請求項によって限定されることが意図される。従って、本発明の実施形態の開示は説明のためを意図したものであって、以下の請求項において明らかにされる本発明の範囲を限定するものではない。