(57)【特許請求の範囲】
【請求項１】
スケーラブルネットワークバッファ管理のためのコンピュータ実装方法であって、前記方法の少なくとも一部分が少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実行され、前記方法は、
クライアントへのクライアント接続を介して、クラウドサービスに送信されるべき第１データを受信することと、
前記第１データを少なくとも１つのデータバッファにバッファリングすることと、
前記第１データがクライアント接続タイムアウト期間内に前記クラウドサービスに送信されないと決定することと、
前記クライアント接続タイムアウト期間の一部分の間の前記クライアント接続からの第２データの受信を遅延させることと、
前記クライアント接続タイムアウト期間が経過する前に、前記クライアント接続から受信された前記第２データを少なくとも１つの二次データバッファにバッファリングすることであって、前記二次データバッファは、サイズが全バッファメモリのうちの５〜１０パーセントになるように前記データバッファよりも小さい、ことと、
前記クラウドサービスへのクラウドサービス接続を介して、前記クライアントに送信されるべき第３データを受信することと、
前記第３データを少なくとも１つのデータバッファにバッファリングすることと、
前記第３データがクラウドサービス接続タイムアウト期間内に前記クライアントに送信されないと決定することと、
前記クラウドサービス接続タイムアウト期間の一部分の間の前記クラウドサービス接続からの第４データの受信を遅延させることと、
前記クラウドサービス接続タイムアウト期間が経過する前に、前記クラウドサービス接続からの前記第４データを少なくとも１つの二次データバッファにバッファリングすることと、
を含む、コンピュータ実装方法。
【請求項２】
前記クライアント接続からの前記第２データの受信を遅延させることは、前記第１データが受信されたとの、前記クライアントへの通知を遅延させることを含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
維持する前記クラウドサービスへの追加接続の数を、前記クライアントからのデータバッファを充填するためにデータを受信する時間に対する前記クラウドサービス接続タイムアウト期間の比に少なくとも部分的に基づいて決定することを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記クラウドサービスへの複数の接続についての全バンド幅利用を決定することと、
前記全バンド幅利用が閾値を下回ると決定することと、
前記複数の接続のうちの少なくとも１つがデータを前記クラウドサービスに送信する速度を徐々に増加させることと、
を更に含む、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記クラウドサービスへのデータ送信の速度を低減させるべきであることを示す、前記データ送信のための前記クラウドサービスからのリトライ通知を受信することと、
使用中の二次データバッファの数が閾値を上回ると決定することと、
時間間隔の間の前記データ送信をリトライすることを遅延させることと、
を更に含む、請求項１に記載のコンピュータ実装方法。
【請求項６】
スケーラブルネットワークバッファ管理のためのシステムであって、前記システムは、
メモリに記憶された通信モジュールであって、
クライアントへのクライアント接続を介して、クラウドサービスに送信されるべき第１データを受信し、
クラウドサービスへのクラウドサービス接続を介して、前記クライアントに送信されるべき第３データを受信する、通信モジュールと、
前記第１データを少なくとも１つのデータバッファにバッファリングし、前記第３データを少なくとも１つのデータバッファにバッファリングする、メモリに記憶されたバッファリングモジュールと、
メモリに記憶されたトラフィックモジュールであって、
前記第１データがクライアント接続タイムアウト期間内に前記クラウドサービスに送信されないと決定し、
前記第３データがクラウドサービス接続タイムアウト期間内に前記クライアントに送信されないと決定する、トラフィックモジュールと、
メモリに記憶された計量モジュールであって、
前記クライアント接続タイムアウト期間の一部分の間の前記クライアント接続からの第２データの受信を遅延させ、
前記クラウドサービス接続タイムアウト期間の一部分の間の前記クラウドサービス接続からの第４データの受信を遅延させる、計量モジュールと、
前記クライアント接続タイムアウト期間が経過する前に、前記クライアント接続から受信された前記第２データを少なくとも１つの二次データバッファにバッファリングし、前記クラウドサービス接続タイムアウト期間が経過する前に、前記クラウドサービス接続からの前記第４データを少なくとも１つの二次データバッファにバッファリングする、メモリに記憶された二次バッファリングモジュールであって、前記二次データバッファは、サイズが全バッファメモリのうちの５〜１０パーセントになるように前記データバッファよりも小さい、二次バッファリングモジュールと、
前記通信モジュール、前記バッファリングモジュール、前記トラフィックモジュール、前記計量モジュール、及び前記二次バッファリングモジュールを実行させるように構成された少なくとも１つの物理的プロセッサと、
を備える、システム。
【請求項７】
前記計量モジュールは、前記第１データが受信されたとの、前記クライアントへの通知を遅延させることによって、前記クライアント接続からの前記第２データの受信を遅延させる、請求項６に記載のシステム。
【請求項８】
１つ若しくは２つ以上のコンピュータ可読命令を含む非一過性のコンピュータ可読媒体であって、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
クライアントへのクライアント接続を介して、クラウドサービスに送信されるべき第１データを受信することと、
前記第１データを少なくとも１つのデータバッファにバッファリングすることと、
前記第１データがクライアント接続タイムアウト期間内に前記クラウドサービスに送信されないと決定することと、
前記クライアント接続タイムアウト期間の一部分の間の前記クライアント接続からの第２データの受信を遅延させることと、
前記クライアント接続タイムアウト期間が経過する前に、前記クライアント接続から受信された前記第２データを少なくとも１つの二次データバッファにバッファリングすることであって、前記二次データバッファは、サイズが全バッファメモリのうちの５〜１０パーセントになるように前記データバッファよりも小さい、ことと、
前記クラウドサービスへのクラウドサービス接続を介して、前記クライアントに送信されるべき第３データを受信することと、
前記第３データを少なくとも１つのデータバッファにバッファリングすることと、
前記第３データがクラウドサービス接続タイムアウト期間内に前記クライアントに送信されないと決定することと、
前記クラウドサービス接続タイムアウト期間の一部分の間の前記クラウドサービス接続からの第４データの受信を遅延させることと、
前記クラウドサービス接続タイムアウト期間が経過する前に、前記クラウドサービス接続からの前記第４データを少なくとも１つの二次データバッファにバッファリングすることと、
を行わせる、非一過性のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
クラウドデータストレージサービスは、価値あるデータを保護してオフサイトのデータストレージ、並びに高レベルの有用性及びセキュリティを提供するための一般普及した方法になっている。クラウドストレージサービスは、しかし、エンドユーザ、特に多数のユーザを有する組織が必要又は所望するユーザインターフェース又はデータ通信機能を提供しない場合がある。これらのニーズを満足させるために、バックアップ管理サービスがクラウドストレージプロバイダとエンドユーザとの間で仲介するために開発されてきた。バックアップ管理サービスは、企業又は多くのエンドユーザを有する別の組織によって、サードパーティによって、又は、クラウドストレージプロバイダ自体によって管理されてもよい。
【０００２】
バックアップ管理サービスが対象にする問題のいくつかは、待ち時間、バンド幅、並びにクライアント又はクラウドサービスエンドのいずれかでの接続タイムアウト、頻繁なリトライ、及びバンド幅過少利用をもたらす接続管理問題を含む場合がある。したがって、本開示は、スケーラブルネットワークバッファ管理のための追加の改善されたシステム及び方法に対するニーズを識別して対象にする。
【発明の概要】
【０００３】
以下で更に詳細に説明するように、本開示は、スケーラブルネットワークバッファ管理のための様々なシステム及び方法を説明し、これらのシステム及び方法は、データを一次及び二次データバッファにバッファリングすることと、クライアントとバッファ管理システムとの間、及びバッファ管理システムとクラウドサービスとの間の接続を維持することと、バンド幅利用を監視及び制御することと、によってクライアントとクラウドストレージサービスとの間のデータ通信を管理する。
【０００４】
一例では、スケーラブルネットワークバッファ管理のためのコンピュータ実装方法は、（１）クライアントへの接続を介して、クラウドサービスに送信されるべきデータを受信することと、（２）データを１つ若しくは２つ以上のデータバッファにバッファリングすることと、（３）データがクライアント接続のためのタイムアウト期間内にクラウドサービスに送信されないと決定することと、（４）タイムアウト期間の一部分の間のクライアント接続からの追加データの受信を遅延させること、（５）タイムアウト期間が経過する前に、サイズがデータバッファよりも小さい１つ若しくは２つ以上の二次データバッファにクライアント接続からのデータをバッファリングすることと、を含んでもよい。
【０００５】
いくつかの例では、クライアント接続からの追加データの受信を遅延させることは、データが受信されたとの、クライアントの通知を遅延させることを含んでもよい。いくつかの例では、コンピュータ実装方法は、データバッファがクライアント接続を介して受信されるデータをバッファリングするのに利用可能ではないと決定することを更に含んでもよい。いくつかの例では、クライアント接続からの追加データの受信を遅延させることは、クライアント接続からのデータを二次データバッファにバッファリングすることと、タイムアウト期間の一部分の間のクライアント接続からの追加データの受信を遅延させることと、を含んでもよい。一実施形態では、コンピュータ実装方法は、データがクライアント接続のためのタイムアウト期間内にクラウドサービスに送信されると決定することと、クラウドサービスがデータを受信したとのクライアント接続からの確認応答が受信されるまで、クライアント接続からの追加データの受信を遅延させることと、を更に含んでもよい。
【０００６】
一実施形態では、コンピュータ実装方法は、（１）クラウドサービスへの接続を介して、クライアントに送信されるべきデータを受信することと、（２）１つ若しくは２つ以上のデータバッファにデータをバッファリングすることと、（３）データがクラウドサービス接続のためのタイムアウト期間内にクライアントに送信されないと決定することと、（４）クラウドサービス接続タイムアウト期間の一部分の間のクラウドサービス接続からの追加データの受信を遅延させることと、（５）クラウドサービス接続タイムアウト期間が経過する前に、クラウドサービス接続からのデータを１つ若しくは２つ以上の二次データバッファにバッファリングすることと、を更に含んでもよい。
【０００７】
一実施形態では、コンピュータ実装方法は、（１）クラウドサービスへの１つ若しくは２つ以上の追加接続を維持することと、（２）追加データがクラウド接続のためのタイムアウト期間内にクライアント接続を介して受信されないと決定することと、（３）クラウド接続のためのタイムアウト期間が経過する前に、クラウドサービスへの追加接続を使用して、クラウドサービスにデータの少なくとも一部分を送信することと、を更に含んでもよい。いくつかの例では、コンピュータ実装方法は、クラウドサービスへの追加接続の数を、クライアントからのデータバッファを充填するためにデータを受信する時間に対するクラウド接続のためのタイムアウト期間の比に少なくとも部分的に基づいて維持するように決定することを更に含んでもよい。
【０００８】
一実施形態では、コンピュータ実装方法は、（１）クラウドサービスへの一群の接続についての全バンド幅利用を決定することと、（２）バンド幅利用が閾値を下回ると決定することと、（３）１つ若しくは２つ以上の接続がデータをクラウドサービスに送信する速度を徐々に増加させることと、を更に含んでもよい。一実施形態では、コンピュータ実装方法は、バンド幅利用が閾値を上回ると決定することと、時間間隔の間のクラウドサービスへの１つ若しくは２つ以上の接続でのデータの送信を遅延させることと、を更に含んでもよい。一実施形態では、コンピュータ実装方法は、１つ若しくは２つ以上のデータバッファを１つ若しくは２つ以上のより小さい二次データバッファとして再割り当てすることと、時間間隔の間のクライアント接続からの追加データの受信を遅延させることと、を更に含んでもよい。
【０００９】
一実施形態では、コンピュータ実装方法は、（１）クラウドサービスへのデータ送信の速度を低減させるべきであることを示す、データ送信のためのクラウドサービスからのリトライ通知を受信することと、（２）使用中の二次データバッファの数が閾値を上回ると決定することと、（３）時間間隔の間のデータ送信をリトライすることを遅延させることと、を更に含んでもよい。
【００１０】
一実施形態では、上記の方法を実装するためのシステムは、メモリに記憶されたいくつかのモジュール、例えば、（１）クライアントへの接続を介して、クラウドサービスに送信されるべきデータを受信する通信モジュールと、（２）データを１つ若しくは２つ以上のデータバッファにバッファリングするバッファリングモジュールと、（３）データがクライアント接続のためのタイムアウト期間内にクラウドサービスに送信されないと決定するトラフィックモジュールと、（４）タイムアウト期間の一部分の間のクライアント接続からの追加データの受信を遅延させる計量モジュールと、（５）タイムアウト期間が経過する前に、クライアント接続からのデータを、サイズがデータバッファよりも小さい１つ若しくは２つ以上の二次データバッファにバッファリングする二次バッファリングモジュールと、を備えてもよい。システムは、また、通信モジュール、バッファリングモジュール、トラフィックモジュール、計量モジュール、及び二次バッファリングモジュールを実行させるように構成された少なくとも１つの物理的プロセッサを備えてもよい。
【００１１】
いくつかの例では、上記の方法は、非一過性コンピュータ可読媒体上にコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、１つ若しくは２つ以上のコンピュータ実行可能命令を含んでもよく、これらの命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイスに、（１）クライアントへの接続を介して、クラウドサービスに送信されるべきデータを受信することと、（２）データを１つ若しくは２つ以上のデータバッファにバッファリングすることと、（３）データがクライアント接続のためのタイムアウト期間内にクラウドサービスに送信されないと決定することと、（４）タイムアウト期間の一部分の間のクライアント接続からの追加データの受信を遅延させることと、（５）タイムアウト期間が経過する前に、サイズがデータバッファよりも小さい１つ若しくは２つ以上の二次データバッファにクライアント接続からのデータをバッファリングすることと、を行わせてもよい。
【００１２】
上記で述べた実施形態のうちのいずれかからの機能は、本明細書で説明する一般原理に従って互いと組み合わせて使用されてもよい。これらの及び他の実施形態、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
【図面の簡単な説明】
【００１３】
添付の図面は、いくつかの例示的な実施形態を例解し、かつ本明細書の一部である。以下の説明とともに、これらの図面は、本開示の種々の原理を実証及び説明する。
【図１】スケーラブルネットワークバッファ管理のための例示的なシステムのブロック図である。
【図２】スケーラブルネットワークバッファ管理のための追加の例示的なシステムのブロック図である。
【図３】スケーラブルネットワークバッファ管理のための例示的な方法のフロー図である。
【図４】本明細書で説明された及び／又は例示された実施形態のうちの１つ若しくは２つ以上を実装できる例示的なコンピューティングシステムのブロック図である。
【図５】本明細書で説明された及び／又は例示された実施形態のうちの１つ若しくは２つ以上を実装できる例示的なコンピューティングネットワークのブロック図である。
【００１４】
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施形態は、種々の修正及び代替的な形態が可能であるが、具体的な実施形態が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施形態は、開示される特定の形態に限定されることを意図されない。むしろ、本開示は、添付の請求項の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
【例示的な実施形態の詳細な説明】
【００１５】
本開示は、概して、スケーラブルネットワークバッファ管理のためのシステム及び方法を対象にする。以下で更に詳細に説明するように、バッファ、接続、及びバンド幅を管理することによって、本明細書に記載のシステム及び方法が、効率的なバンド幅利用、並びに接続タイムアウト及び／又はリトライリクエストの数の低減によって、多くのバックアップクライアントとクラウドストレージサービスとの間のデータ通信を管理してもよい。
【００１６】
次に、図１〜図２を参照して、スケーラブルネットワークバッファ管理のための例示的なシステムについて詳細に説明する。対応するコンピュータ実装方法の詳細な説明が、また、図３に関連してなされる。それに加えて、本明細書に記載の実施形態のうちの１つ若しくは２つ以上を実装できる例示的なコンピューティングシステム及びネットワークアーキテクチャについての詳細な説明が、図４及び図５に関連してそれぞれなされる。
【００１７】
図１は、スケーラブルネットワークバッファ管理のための例示的なシステム１００のブロック図である。この図に示すように、例示的なシステム１００は、１つ若しくは２つ以上のタスクを実施するための１つ若しくは２つ以上のモジュール１０２を含んでもよい。例えば、そして以下で更に詳細に説明するように、例示的なシステム１００は、クライアントへの接続を介して、クラウドサービスに送信されるべきデータを受信する通信モジュール１０４を含んでもよい。例示的なシステム１００は、データを１つ若しくは２つ以上のデータバッファにバッファリングするバッファリングモジュール１０６を追加的に含んでもよい。例示的なシステム１００は、また、データがクライアント接続のためのタイムアウト期間内にクラウドサービスに送信されないと決定するトラフィックモジュール１０８を含んでもよい。例示的なシステム１００は、タイムアウト期間の一部分の間のクライアント接続からの追加データの受信を遅延させる計量モジュール１１０を追加的に含んでもよい。例示的なシステム１００は、また、二次バッファリングモジュール１１２を含んでもよく、このモジュールは、タイムアウト期間が経過する前に、１つ若しくは２つ以上の二次データバッファにクライアント接続からのデータをバッファリングするが、この二次データバッファは、サイズがデータバッファよりも小さい。別個の要素として例解されるが、図１のモジュール１０２のうちの１つ若しくは２つ以上は、単一のモジュール又はアプリケーションの一部分を表し得る。
【００１８】
特定の実施形態において、図１のモジュール１０２のうちの１つ若しくは２つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに、１つ若しくは２つ以上のタスクを実施させてもよい１つ若しくは２つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、そして以下で更に詳細に説明するように、モジュール１０２のうちの１つ若しくは２つ以上は、１つ若しくは２つ以上のコンピューティングデバイスに記憶されて、その上で動作するように構成されたソフトウェアモジュールを表してもよく、これらのコンピューティングデバイスとは、図２に示すデバイス（例えば、コンピューティングデバイス２０２、クラウドサービス２０６、及び／又はクライアント２０８）、図４のコンピューティングシステム４１０、及び／又は図５の例示的なネットワークアーキテクチャ５００の部分等である。図１のモジュール１０２のうちの１つ若しくは２つ以上は、また、１つ若しくは２つ以上のタスクを実施するように構成された１つ若しくは２つ以上の特殊目的のコンピュータの全て又は部分を表してもよい。
【００１９】
図１に示すように、例示的なシステム１００は、また、クラウドデータストア１２０等の１つ若しくは２つ以上のデータベースを含んでもよい。一例では、クラウドデータストア１２０は、デスクトップコンピュータ、ラップトップ若しくはノートコンピュータ、タブレットコンピュータ等のコンピューティングデバイス、及び／又はスマートフォン等のモバイルデバイス等からのデータを記憶するように構成されてもよい。
【００２０】
クラウドデータストア１２０は、単一のデータベース若しくはコンピューティングデバイス、又は複数のデータベース若しくはコンピューティングデバイスの部分を表してもよい。例えば、クラウドデータストア１２０は、図２のコンピューティングデバイス２０２の一部分若しくはクラウドサービス２０６、図４のコンピューティングシステム４１０、及び／又は図５の例示的なネットワークアーキテクチャ５００の部分を表してもよい。その代替として、図１のクラウドデータストア１２０は、コンピューティングデバイスによってアクセスが可能な１つ若しくは２つ以上の物理的に分離したデバイス、例えば、図２のコンピューティングデバイス２０２の一部分若しくはクラウドサービス２０６、図４のコンピューティングシステム４１０、及び／又は図５の例示的なネットワークアーキテクチャ５００の部分等を表してもよい。
【００２１】
図１の例示的なシステム１００は、様々な態様で実装されてもよい。例えば、例示的なシステム１００の全て又は一部分は、図２の例示的なシステム２００の部分を表してもよい。図２に示すように、システム２００は、ネットワーク２０４を介してクラウドサービス２０６と通信するコンピューティングデバイス２０２を含んでもよい。一例では、コンピューティングデバイス２０２は、１つ若しくは２つ以上のモジュール１０２によってプログラムされてもよく、及び／又はクラウドデータストア１２０にデータの全て又は一部分を記憶してもよい。それに付加又は代替して、クラウドサービス２０６は、１つ若しくは２つ以上のモジュール１０２とプログラムされてもよく、及び／又はクラウドデータストア１２０にデータの全て又は一部分を記憶してもよい。
【００２２】
一実施形態では、図１の１つ若しくは２つ以上のモジュール１０２は、コンピューティングデバイス２０２及び／又はクラウドサービス２０６のうちの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイス２０２及び／又はクラウドサービス２０６が１つ若しくは２つ以上のクライアント２０８とクラウドサービス２０６との間のデータ通信を管理することを可能にする。例えば、そして、以下で更に詳細に説明するように、通信モジュール１０４は、クライアント２０８への接続を介して、クラウドサービス２０６に送信されるべきデータ２１０を受信してもよい。バッファリングモジュール１０６は、次いで、少なくとも１つのデータバッファ２１２にデータ２１０をバッファリングしてもよい。トラフィックモジュール１０８は、次いで、データ２１０がクライアント接続のためのタイムアウト期間２１４内にクラウドサービス２０６に送信されないと決定してもよい。それに応じて、計量モジュール１１０は、タイムアウト期間２１４の一部分の間のクライアント接続からの追加データ２１６の受信を遅延させてもよい。二次バッファリングモジュール１１２は、タイムアウト期間２１４が経過する前に、サイズがデータバッファ２１２よりも小さい少なくとも１つの二次データバッファ２１８にクライアント接続からのデータ２１０をバッファリングしてもよい。
【００２３】
コンピューティングデバイス２０２及びクライアント２０８は、コンピュータ実行可能命令を読み取ることができる任意の種類又は形式のコンピューティングデバイスを概して表す。コンピューティングデバイス２０２及びクライアント２０８の例としては、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、個人情報機器（ＰＤＡ）、マルチメディアプレイヤー、組込みシステム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラス等）、ゲーム機、これらのもののうちの１以上の組合せ、図４の例示的なコンピューティングシステム４１０、又は任意の別の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【００２４】
クラウドサービス２０６は、データを受信、記憶、及び送信できる任意の種類又は形式のコンピューティングデバイスを概して表す。クラウドサービス２０６の例としては、様々なデータベースサービスを提供するように、及び／又はある種のソフトウェアアプリケーションを動作させるように構成されたアプリケーションサーバ及びデータベースサーバが挙げられるが、これらに限定されない。
【００２５】
ネットワーク２０４は、通信又はデータ転送を容易にすることが可能な任意の媒体又はアーキテクチャを概して表す。ネットワーク２０４の例としては、イントラネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラネットワーク（例えば、汎欧州デジタル移動電話方式（ＧＳＭ（登録商標））ネットワーク）、図５の例示的なネットワークアーキテクチャ５００等が挙げられるが、これらに限定されない。ネットワーク２０４は、無線又は有線接続を使用して、通信又はデータ転送を容易にし得る。一実施形態では、ネットワーク２０４は、コンピューティングデバイス２０２とクラウドサービス２０６との間の通信を容易にしてもよい。
【００２６】
図３は、スケーラブルネットワークバッファ管理のための例示的なコンピュータ実装方法３００のフロー図である。図３に示すステップは、任意の好適なコンピュータ実行可能なコード及び／又はコンピューティングシステムによって実施されてもよい。いくつかの実施形態では、図３に示すステップは、図１のシステム１００、図２のシステム２００、図４のコンピューティングシステム４１０、及び／又は図５の例示的なネットワークアーキテクチャ５００の部分の構成要素のうちの１つ若しくは２つ以上によって実行されてもよい。
【００２７】
図３に示すように、ステップ３０２において、本明細書に記載の１つ若しくは２つ以上のシステムは、クライアントへの接続を介して、クラウドサービスに送信されるべきデータを受信してもよい。例えば、通信モジュール１０４は、図２のコンピューティングデバイス２０２の一部として、クラウドサービスに送信されるべきデータ２１０をクライアント２０８への接続を介して受信してもよい。
【００２８】
本明細書で使用されるとき、用語「クラウドサービス」又は「クラウドストレージサービス」は、データストレージのためのオンライン及び／又はサードパーティホスティングを個人又は組織のクライアントに提供する（例えば、サービスとしてストレージを提供する）ことができる任意のサービス、プラットフォーム、及び／又はインフラストラクチャを概して指す。いくつかの例では、クラウドコンピューティングサービスは、クライアントに全ての基礎システムへの完全なアクセスを提供することなく、１つ若しくは２つ以上のクライアントにデータの表示を提供してもよい。例えば、クラウドコンピューティングサービスは、消費者が基礎ハードウェアリソースを制御することを要求及び／又は許容することなく、消費者がサービス要件及び／又はリソース要件を特定することを可能にしてもよい。クラウドコンピューティングサービスの例としては、ＡＭＡＺＯＮ  ＳＩＭＰＬＥ  ＳＴＯＲＡＧＥ  ＳＥＲＶＩＣＥ、ＧＯＯＧＬＥ  ＣＬＯＵＤ  ＳＥＲＶＩＣＥ、ＭＩＣＲＯＳＯＦＴ  ＯＮＥＤＲＩＶＥ  ＦＯＲ  ＢＵＳＩＮＥＳＳ、及びＡＴ＆Ｔ  ＣＬＯＵＤ  ＳＴＯＲＡＧＥが挙げられるが、これらに限定されない。
【００２９】
通信モジュール１０４は、様々な方法でクラウドサービスに送信されるべきクライアントからのデータを受信してもよい。例えば、通信モジュール１０４は、クライアントへのトランスポート層セキュリティ／セキュアソケット層（ＴＳＬ／ＳＳＬ）接続を確立することにより、クライアント及びサーバの両方が、他方の識別を認証してもよく、そして、データは送信中に暗号化されてもよい。通信モジュール１０４は、その代替として、接続を確立する及びクライアントからデータを受信するための任意の好適なプロトコルを使用してもよい。
【００３０】
ステップ３０４において、本明細書に記載のシステムのうちの１つ若しくは２つ以上のものは、少なくとも１つのデータバッファにデータをバッファリングしてもよい。例えば、バッファリングモジュール１０６は、図２のコンピューティングデバイス２０２の一部分として、少なくとも１つのデータ２１０バッファにデータ２１０をバッファリングしてもよい。本明細書で使用されるとき、用語「データバッファ」は、任意のストレージバッファ、キャッシュ、及び／又は別のデータ構造、あるいはデータを収集及び／又は一時的に記憶するための機構を指す場合がある。
【００３１】
バッファリングモジュール１０６は、様々な方法でデータをバッファリングしてもよい。例えば、単一の大きいバッファをクライアント接続に割り当てることによりデータをクライアントからクラウドサービスに同期して送信するよりむしろ、バッファリングモジュール１０６は、いくつかのより小さいバッファを各クライアント接続に割り当ててもよい。各バッファが充填されると、そして、接続に利用できる追加バッファが存在する限り、バッファリングモジュール１０６は、追加データを送るためにクライアントに制御を戻してもよい。
【００３２】
ステップ３０６において、本明細書に記載のシステムのうちの１つ若しくは２つ以上が、データがクライアント接続のためのタイムアウト期間内にクラウドサービスに送信されないと決定してもよい。例えば、トラフィックモジュール１０８は、図２のコンピューティングデバイス２０２の一部分として、データ２１０がクライアント２０８への接続のためのタイムアウト期間２１４内にクラウドサービスに送信されないと決定してもよい。
【００３３】
トラフィックモジュール１０８は、データが様々な方法でクライアント接続ためのタイムアウト期間内にクラウドサービスに送信されないと決定してもよい。例えば、トラフィックモジュール１０８は、タイムアウト期間についての初期値としてコンピューティングシステムに対して構成されたタイムアウト値を使用してもよい。トラフィックモジュール１０８が、構成されたタイムアウト期間の前にクライアントが接続をドロップするのを観察した場合、トラフィックモジュール１０８は、タイムアウト値をクライアントによって使用されるタイムアウト値まで低減してもよい。いくつかの例では、トラフィックモジュール１０８は、データがクラウドサービスに送信される前にクライアントタイムアウト期間が満了する可能性を判定するために送信時間統計量を維持してもよい。送信時間統計量は、平均送信時間、送信時間範囲、及び送信時間標準偏差を含んでもよい。
【００３４】
ステップ３０８において、本明細書に記載の１つ若しくは２つ以上のシステムは、タイムアウト期間の一部分の間のクライアント接続からの追加データの受信を遅延させてもよい。例えば、計量モジュール１１０は、図２のコンピューティングデバイス２０２の一部分として、タイムアウト期間２１４の一部分の間の接続からクライアント２０８への追加データ２１６の受信を遅延させてもよい。
【００３５】
計量モジュール１１０は、様々な方法でクライアントからの追加データの受信を遅延させてもよい。例えば、データがクライアントから受信されてデータバッファに記憶された後に、計量モジュール１１０は、データが受信されたというクライアントの通知を遅延させることによって、クライアント接続からの追加データの受信を遅延させてもよい。このように、データがクラウドサービスに送信される間、クライアントからのデータ受信は減速され得るが、データ受信はクライアントのためのタイムアウト期間の終了の前では継続する。接続を再確立してクライアントに明白なデータ脱落の再送信を試みさせることが、非常に時間を要する場合がある。計量モジュール１１０は、クライアントからのデータ受信の速度を制御することによって、関連する影響がデータスループットに及ぶことを回避してもよい。
【００３６】
一実施形態では、本明細書に記載のシステムは、（１）データがクライアント接続のためのタイムアウト期間内にクラウドサービスに送信されると決定することと、（２）クラウドサービスがデータを受信したとの確認応答が受信されるまで、クライアント接続からの追加データの受信を遅延させることと、を含んでもよい。例えば、図２のコンピューティングデバイス２０２の一部分として、トラフィックモジュール１０８は、たとえデータがクライアントのタイムアウト期間内にクラウドサービスに送信されると予想されるときでも、クライアントのタイムアウト期間が満了する前にはクラウドサービスからの予想される確認応答が受信されない可能性が閾値を上回ると決定してもよい。クライアントへの接続喪失の確率を減少させるために、トラフィックモジュール１０８は、追加データの受信を遅延させることを計量モジュール１１０に指示してもよく、その結果、データバッファは、続けてクライアントからデータを受信することが利用可能になり、そして、スループットが一定速度付近に維持され得る。
【００３７】
ステップ３１０において、本明細書に記載の１つ若しくは２つ以上のシステムは、タイムアウト期間が経過する前のデータバッファよりもサイズが小さい少なくとも１つの二次データバッファにクライアント接続からのデータをバッファリングしてもよい。例えば、二次バッファリングモジュール１１２は、図２のコンピューティングデバイス２０２の一部分として、タイムアウト期間２１４が経過する前に、接続からクライアント２０８へのデータ２１０を、データ２１０バッファよりもサイズが小さい少なくとも１つの二次データバッファ２１８にバッファリングしてもよい。
【００３８】
用語「二次データバッファ」は、本明細書で使用されるとき、任意のストレージバッファ、キャッシュ、及び／又は別のデータ構造、あるいはデータを収集、及び／又は一時的に記憶するための機構を概して指す。二次データバッファは、一次データバッファよりもずっと小さくてもよく、そして、クライアントデータ送信の小さい倍数であるようにサイズ設定されてもよい。二次データバッファは、予備的に維持され、クライアントからのデータ送信の速度を制御するために必要なときにだけ使用されるように意図されるので、二次データバッファは、全バッファメモリのうちの小さい割合（５〜１０パーセント）に相当するだけでよい。
【００３９】
二次バッファリングモジュール１１２は、様々な態様で二次バッファにクライアントデータをバッファリングしてもよい。例えば、二次バッファリングモジュール１１２は、クライアント接続を介して受信されたデータをバッファリングすることと、クライアント接続からのデータを二次データバッファにバッファリングすることと、タイムアウト期間の一部分の間のクライアント接続からの追加データの受信を遅延させることとのためには、データバッファが利用できないと決定してもよい。
【００４０】
一実施形態では、二次バッファリングモジュール１１２は、クラウドサービスへのデータの送信が減速したこと、そして、追加の二次データバッファが必要とされ得ることを決定してもよい。二次バッファリングモジュール１１２は、次いで、より小さい二次データバッファとして１つ若しくは２つ以上のデータバッファを再割り当てし、そして、時間間隔の間のクライアント接続からの追加データの受信を遅延させてもよい。そうすることによって、二次バッファリングモジュール１１２は、クライアントのタイムアウト期間が満了する前において、クライアントからデータを受信して、バッファリングし続けてもよい。
【００４１】
クライアントからのデータ送信を管理することに加えて、本明細書に記載のシステム及び方法は、クラウドサービスへのデータ送信を管理するためにデータバッファ及び追加接続を使用してもよい。クライアントの場合と同様に、クラウドサービスへの接続は、データがタイムアウト期間内の接続において送信されないときに、ドロップされる場合がある。いくつかの例では、本明細書に記載のシステムは、クラウドサービスへの追加接続の数を、クライアントからのデータバッファを充填するためにデータを受信する時間に対するクラウド接続のためのタイムアウト期間の比に少なくとも部分的に基づいて維持しなければならない。
【００４２】
一実施形態では、本明細書に記載のシステムは、（１）クラウドサービスへの１つ若しくは２つ以上の追加接続を維持することと、（２）追加データがクラウド接続のためのタイムアウト期間内にクライアント接続を介して受信されないと決定することと、（３）クラウド接続のためのタイムアウト期間が経過する前に、クラウドサービスへの追加接続を使用してクラウドサービスにデータの少なくとも一部分を送信することと、を含んでもよい。例えば、図２のコンピューティングデバイス２０２の一部分として、トラフィックモジュール１０８は、クライアント２０８が、速度クラウドサービス２０６が受信できるよりもずっと遅い速度でデータを送信していると決定してもよい。クラウドサービス２０６への接続がタイムアウトすることを防止するために、トラフィックモジュール１０８は、ある数のクラウドサービス２０６への追加接続がクライアント２０８の専用でなければならないと決定してもよい。クライアントから受信されてバッファリングされるデータの一部分は、クラウドサービスへの接続がタイムアウトしないように、接続の各々において順に送信されてもよい。
【００４３】
一実施形態では、本明細書に記載のシステムは、（１）クラウドサービスへの複数の接続についての全バンド幅利用を決定することと、（２）バンド幅利用が閾値を下回ると決定することと、（３）１つ若しくは２つ以上の接続がデータをクラウドサービスに送信する速度を徐々に増加させることと、を含んでもよい。例えば、図２のコンピューティングデバイス２０２の一部分として、トラフィックモジュール１０８は、クラウドサービスへの各接続についてのバンド幅利用を測定して、全ての接続について全バンド幅利用の割合を計算してもよい。トラフィックモジュール１０８が、バンド幅利用が閾値（クラウドサービスへの接続に割り当てられる最大のバンド幅等）を下回ると決定する場合、トラフィックモジュール１０８は、１つ若しくは２つ以上のクラウドサービス接続に対するデータ送信速度を徐々に増加させるように計量モジュール１１０に信号を送ってもよい。そうすることによって、本明細書に記載のシステムは、可能な限り多くの利用可能なバンド幅を利用して、クライアントスロットリング保証の侵害を回避してもよい。
【００４４】
一実施形態では、本明細書に記載のシステムは、（１）バンド幅利用が閾値を上回ると判定することと、（２）時間間隔の間のクラウドサービスへの１つ若しくは２つ以上の接続でのデータの送信を遅延させることと、を備えてもよい。例えば、図２のコンピューティングデバイス２０２の一部分として、トラフィックモジュール１０８は、全バンド幅利用が閾値を上回ると決定し、そして、クラウドサービスへの１つ若しくは２つ以上の接続でのデータ送信を遅延させるように計量モジュール１１０に指示してもよい。そうすることによって、本明細書に記載のシステムは、クラウドサービスへのデータ送信以外のコンピューティングデバイス２０２で動作するプロセスに対するサービスの拒否を防止してもよい。送信遅延によるデータ送信速度の徐々の増加をバンド幅利用による送信遅延と組み合わせることによって、利用可能なバンド幅の割合は、別のプロセスへのサービスの拒否を防止しながら、そのバンド幅を利用する接続に対して確保され得る。
【００４５】
一実施形態では、本明細書に記載のシステムは、（１）クライアントに送信されるべきデータをクラウドサービスへの接続を介して受信することと、（２）データを少なくとも１つのデータバッファにバッファリングすることと、（３）データがクラウドサービス接続のためのタイムアウト期間内にクライアントに送信されないと決定することと、（４）クラウドサービス接続タイムアウト期間の一部分の間のクラウドサービス接続からの追加データの受信を遅延させることと、（５）クラウドサービス接続タイムアウト期間が経過する前に、クラウドサービス接続からのデータを１つ若しくは２つ以上の二次データバッファにバッファリングすることと、を備えてもよい。例えば、図２のコンピューティングデバイス２０２の一部分として、（１）通信モジュール１０４は、クライアントに送信されるべきデータをクラウドサービスへの接続を介して受信してもよく、（２）バッファリングモジュール１０６は、データを少なくとも１つのデータバッファにバッファリングしてもよく、（３）トラフィックモジュール１０８は、データがクラウドサービス接続のためのタイムアウト期間内にクライアントに送信されないと決定してもよく、（４）計量モジュール１１０は、クラウドサービス接続タイムアウト期間の一部分の間のクラウドサービス接続からの追加データの受信を遅延させてもよく、及び（５）二次バッファリングモジュール１１２は、クラウドサービス接続タイムアウト期間が経過する前に、クラウドサービス接続からのデータを少なくとも１つの二次データバッファにバッファリングしてもよい。
【００４６】
本明細書に記載のシステムは、バックアッププロセスを多くの態様でミラーリングする方法を使用してクラウドサービスからクライアントへのデータを復元してもよいが、データバッファと二次データバッファの使用におけるいくらかの差を伴う。クラウドからのデータを復元するとき、バッファリングモジュール１０６は、二次データバッファにバッファメモリのうちのより大きい割合を割り当ててもよい。例えば、バッファメモリのうちの７０〜８０パーセントが、データバッファに割り当てられ、残りのメモリが、二次データバッファに割り当てられてもよい。利用可能なデータバッファが充填されたとき、二次バッファリングモジュール１１２は、クラウドサービスへのデータ読取りリクエスト間のクラウドタイムアウトの２０〜３０パーセントの遅延を伴って、クラウドサービスから受信されるデータによって二次データバッファを充填し始める。そうすることによって、本明細書に記載のシステムは、結果としてデータスループットの損失をもたらす、クラウドサービスへの接続がタイムアウトすることを防止してもよい。
【００４７】
上記のように、本明細書に記載のシステム及び方法は、多数のバックアップクライアントとクラウドストレージサービスとの間のデータ通信を管理してもよい。本明細書に記載のシステム及び方法は、データバッファを管理することによってバンド幅利用を最適化して、より大きい全体的なデータスループットを提供することにより、バックアップクライアント又はクラウドサービスのいずれかとの接続損失を防止する。全ての接続に利用可能なバンド幅のプールとして利用可能なバンド幅を管理することによって、本明細書に記載のシステム及び方法は、バッファ管理コンピューティングデバイス上で動作する別のプロセスへのサービスの拒否を防止しながら、バンド幅利用を徐々に増加させてもよい。
【００４８】
図４は、本明細書に記載及び／又は例示される実施形態のうちの１つ若しくは２つ以上を実装することが可能な例示的なコンピューティングシステム４１０のブロック図である。例えば、コンピューティングシステム４１０の全て又は一部分は、単独又は他の要素との組合せのいずれかで、本明細書に記載のステップのうちの１つ若しくは２つ以上（図３に例示するステップのうちの１つ若しくは２つ以上等）を実施してもよいか及び／又は実施するための手段であってもよい。コンピューティングシステム４１０の全て又は一部分は、また、本明細書に記載及び／又は例示する任意の他のステップ、方法、又はプロセスを実施してもよいか及び／又は実施するための手段であってもよい。
【００４９】
コンピューティングシステム４１０は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサコンピューティングデバイス又はシステムを広く表す。コンピューティングシステム４１０の例としては、限定することなく、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散コンピューティングシステム、ハンドヘルドデバイス、又は任意の他のコンピューティングシステム又はデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム４１０は、少なくとも１つのプロセッサ４１４、及びシステムメモリ４１６を含んでもよい。
【００５０】
プロセッサ４１４は、データを処理すること、又は命令を解釈及び実行することが可能な任意のタイプ又は形式の物理処理ユニット（例えば、ハードウェア実装中央処理ユニット）を概して表す。特定の実施形態において、プロセッサ４１４は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ４１４に、本明細書に記載及び／又は例示する例示的な実施形態のうちの１つ若しくは２つ以上の機能を実施させてもよい。
【００５１】
システムメモリ４１６は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は非揮発性記憶デバイス若しくは媒体を概して表す。システムメモリ４１６の例としては、限定することなく、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必須ではないが、特定の実施形態においては、コンピューティングシステム４１０は、揮発性メモリユニット（例えば、システムメモリ４１６等）、及び非揮発性記憶デバイス（例えば、以下で詳細に説明するような１次記憶デバイス４３２等）の両方を含んでもよい。一実施例において、図１からのモジュール１０２のうちの１つ若しくは２つ以上は、システムメモリ４１６にロードされてもよい。
【００５２】
ある実施形態において、例示的なコンピューティングシステム４１０は、また、プロセッサ４１４及びシステムメモリ４１６に加えて、１つ若しくは２つ以上の構成要素又は要素を含んでもよい。例えば、図４に示すように、コンピューティングシステム４１０は、メモリコントローラ４１８と、入力／出力（Ｉ／Ｏ）コントローラ４２０と、通信インターフェース４２２とを含んでもよく、これらのそれぞれは、通信インフラストラクチャ４１２を介して相互接続されてもよい。通信インフラストラクチャ４１２は、コンピューティングデバイスの１つ若しくは２つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ４１２の例としては、限定することなく、通信バス（業界標準アーキテクチャ（ＩＳＡ）、周辺構成要素相互接続（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、又は類似のバス等）、及びネットワークが挙げられる。
【００５３】
メモリコントローラ４１８は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム４１０の１つ若しくは２つ以上の構成要素間の通信を制御することが可能な任意の種類又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ４１８は、通信インフラストラクチャ４１２を介して、プロセッサ４１４、システムメモリ４１６、及びＩ／Ｏコントローラ４２０間の通信を制御してもよい。
【００５４】
Ｉ／Ｏコントローラ４２０は、コンピューティングデバイスの入出力機能を調整及び／又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ４２０は、プロセッサ４１４、システムメモリ４１６、通信インターフェース４２２、表示アダプタ４２６、入力インターフェース４３０、及び記憶インターフェース４３４等のコンピューティングシステム４１０の１つ若しくは２つ以上の要素間のデータの転送を制御してもよく、又は容易にしてもよい。
【００５５】
通信インターフェース４２２は、例示的なコンピューティングシステム４１０と、１つ若しくは２つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態では、通信インターフェース４２２は、コンピューティングシステム４１０と、追加のコンピューティングシステムを含む私的又は公的ネットワークとの間の通信を容易にしてもよい。通信インターフェース４２２の例としては、限定することなく、有線ネットワークインターフェース（ネットワークインターフェースカード等）、無線ネットワークインターフェース（無線ネットワークインターフェースカード等）、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース４２２は、インターネット等のネットワークへの直接的なリンクを介して、遠隔サーバへの直接的な接続を提供してもよい。通信インターフェース４２２は、また、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワーク等）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
【００５６】
ある実施形態において、通信インターフェース４２２はまた、外部バス又は通信チャネルを介して、コンピューティングシステム４１０と、１つ若しくは２つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されるホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース（ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（ＵＳＢ）ホストアダプタ、米国電気電子技術者協会（ＩＥＥＥ）１３９４ホストアダプタ、アドバンストテクノロジーアタッチメント（ＡＴＡ）、パラレルＡＴＡ（ＰＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、及びエクスターナルＳＡＴＡ（ｅＳＡＴＡ）ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット（登録商標）アダプタなどが挙げられる。通信インターフェース４２２は、また、コンピューティングシステム４１０が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース４２２は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
【００５７】
図４に示すように、コンピューティングシステム４１０は、また、表示アダプタ４２６を介して、通信インフラストラクチャ４１２に連結される少なくとも１つの表示デバイス４２４を含んでもよい。表示デバイス４２４は、表示アダプタ４２６によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ４２６は、表示デバイス４２４上に表示するために、通信インフラストラクチャ４１２から（又は当該技術分野において既知のように、フレームバッファから）、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
【００５８】
図４に示すように、例示的なコンピューティングシステム４１０は、また、入力インターフェース４３０を介して、通信インフラストラクチャ４１２に連結される少なくとも１つの入力デバイス４２８を含んでもよい。入力デバイス４２８は、コンピュータ又はヒトのいずれかによって生成された入力を、例示的なコンピューティングシステム４１０に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス４２８の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
【００５９】
図４に示すように、例示的なコンピューティングシステム４１０は、また、記憶インターフェース４３４を介して、通信インフラストラクチャ４１２に連結される１次記憶デバイス４３２及びバックアップ記憶デバイス４３３を含んでもよい。記憶デバイス４３２及び４３３は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。例えば、記憶デバイス４３２及び４３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブなどであり得る。記憶インターフェース４３４は、コンピューティングシステム４１０の記憶デバイス４３２及び４３３と、他の構成要素との間でデータを転送するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。一実施例において、図１からのクラウドデータストア１２０は、１次記憶デバイス４３２内に記憶され得る。
【００６０】
特定の実施形態では、記憶デバイス４３２及び４３３は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能な記憶ユニットから読み取るように、及び／又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。記憶デバイス４３２及び４３３は、また、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム４１０にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、記憶デバイス４３２及び４３３は、ソフトウェア、データ、他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。記憶デバイス４３２及び４３３は、コンピューティングシステム４１０の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
【００６１】
多くの別のデバイス又はサブシステムが、コンピューティングシステム４１０に接続されてもよい。逆に、図４に示す構成要素及びデバイスの全てが、本明細書において説明及び／又は例示する実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムは、また、図４に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム４１０は、また、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上は、コンピュータ可読媒体上に、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化され得る。「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波等の伝送型媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光記憶媒体（例えば、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、及びＢＬＵ−ＲＡＹ（登録商標）ディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュ媒体）等の非一時的タイプ媒体、並びに他の分散システムが挙げられる。
【００６２】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム４１０にロードされてもよい。次いで、コンピュータ可読媒体上に記憶されたコンピュータプログラムの全て又は一部分は、システムメモリ４１６及び／又は記憶デバイス４３２及び４３３の種々の部分に記憶されてもよい。プロセッサ４１４によって実行されるとき、コンピューティングシステム４１０にロードされたコンピュータプログラムは、本明細書において説明及び／又は例示する例示的な実施形態のうちの１つ若しくは２つ以上の機能をプロセッサ４１４に実施させてもよく及び／又はそれらを実施するための手段であってもよい。更に、又は代替的に、本明細書において説明及び／又は例解される例示的な実施形態のうちの１つ若しくは２つ以上は、ファームウェア及び／又はハードウェアにおいて実装され得る。例えば、コンピューティングシステム４１０は、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成されてもよい。
【００６３】
図５は、クライアントシステム５１０、５２０、及び５３０、並びにサーバ５４０及び５４５がネットワーク５５０に連結されてもよい例示的なネットワークアーキテクチャ５００のブロック図である。上記で詳述されたように、ネットワークアーキテクチャ５００の全て又は一部分は、単独又は他の要素との組合せのいずれかで、本明細書において開示される工程のうちの１つ若しくは２つ以上（図３に例示する工程のうちの１つ若しくは２つ以上等）を実施してもよく、及び／又は実施するための手段であってもよい。ネットワークアーキテクチャ５００の全て又は一部分は、また、本開示において記載された他の工程及び機能を実施するために使用されてもよく、及び／又は実施するための手段であってもよい。
【００６４】
クライアントシステム５１０、５２０、及び５３０は、図４の例示的なコンピューティングシステム４１０等の任意のタイプ又は形式のコンピューティングデバイス又はシステムを概して表す。同様に、サーバ５４０及び５４５は、種々のデータベースサービスを提供するように、及び／又はあるソフトウェアアプリケーションを動作させるように構成されたアプリケーションサーバ又はデータベースサーバ等のコンピューティングデバイス又はシステムを概して表す。ネットワーク５５０は、例えば、イントラネット、ＷＡＮ、ＬＡＮ、ＰＡＮ、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを概して表す。一例では、クライアントシステム５１０、５２０、及び／又は５３０、並びに／あるいはサーバ５４０及び／又は５４５は、図１からのシステム１００の全て又は一部分を含んでもよい。
【００６５】
図５に示すように、１つ若しくは２つ以上の記憶デバイス５６０（１）〜（Ｎ）は、サーバ５４０に直接取設されてもよい。同様に、１つ若しくは２つ以上の記憶デバイス５７０（１）〜（Ｎ）は、サーバ５４５に直接取設されてもよい。記憶デバイス５６０（１）〜（Ｎ）及び記憶デバイス５７０（１）〜（Ｎ）は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。特定の実施形態では、記憶デバイス５６０（１）〜（Ｎ）及び記憶デバイス５７０（１）〜（Ｎ）は、ネットワークファイルシステム（ＮＦＳ）、サーバメッセージブロック（ＳＭＢ）、又は共通インターネットファイルシステム（ＣＩＦＳ）等の種々のプロトコルを使用して、サーバ５４０及び５４５と通信するように構成されたネットワーク接続型記憶（ＮＡＳ）デバイスを表してもよい。
【００６６】
サーバ５４０及び５４５は、また、ストレージエリアネットワーク（ＳＡＮ）ファブリック５８０に接続されてもよい。ＳＡＮファブリック５８０は、複数の記憶デバイス間の通信を容易にすることが可能な任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。ＳＡＮファブリック５８０は、サーバ５４０及び５４５と、複数の記憶デバイス５９０（１）〜（Ｎ）及び／又は知的記憶アレイ５９５との間の通信を容易にしてもよい。ＳＡＮファブリック５８０は、また、デバイス５９０（１）〜（Ｎ）及びアレイ５９５が、クライアントシステム５１０、５２０、及び５３０にローカルに取設されたデバイスとして見えるような態様で、ネットワーク５５０並びにサーバ５４０及び５４５を介して、クライアントシステム５１０、５２０、及び５３０と、記憶デバイス５９０（１）〜（Ｎ）及び／又は知的記憶アレイ５９５との間の通信を容易にしてもよい。記憶デバイス５６０（１）〜（Ｎ）及び記憶デバイス５７０（１）〜（Ｎ）と同様に、記憶デバイス５９０（１）〜（Ｎ）及び知的記憶アレイ５９５は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。
【００６７】
特定の実施形態では、図４の例示的なコンピューティングシステム４１０を参照すると、図４の通信インターフェース４２２等の通信インターフェースは、それぞれのクライアントシステム５１０、５２０、及び５３０と、ネットワーク５５０との間の接続性を提供するために使用されてもよい。クライアントシステム５１０、５２０、及び５３０は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ５４０又は５４５上の情報にアクセスすることが可能であってもよい。かかるソフトウェアは、クライアントシステム５１０、５２０、及び５３０が、サーバ５４０、サーバ５４５、記憶デバイス５６０（１）〜（Ｎ）、記憶デバイス５７０（１）〜（Ｎ）、記憶デバイス５９０（１）〜（Ｎ）、又は知的記憶アレイ５９５によってホストされるデータにアクセスすることを可能にしてもよい。図５は、データを交換するためのネットワーク（インターネット等）の使用を描写するが、本明細書において説明及び／又は例示する実施形態は、インターネット又はいずれの特定のネットワークベースの環境にも限定されない。
【００６８】
少なくとも１つの実施形態において、本明細書で開示される例示的な実施形態のうちの１つ若しくは２つ以上の全て又は一部分は、コンピュータプログラムとしてコード化されてもよく、サーバ５４０、サーバ５４５、記憶デバイス５６０（１）〜（Ｎ）、記憶デバイス５７０（１）〜（Ｎ）、記憶デバイス５９０（１）〜（Ｎ）、知的記憶アレイ５９５、又はこれらの任意の組み合わせにロードされ、これらによって実行されてもよい。本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上の全て又は一部分は、また、コンピュータプログラムとしてコード化され、サーバ５４０内に記憶され、サーバ５４５によって実行され、ネットワーク５５０を通じてクライアントシステム５１０、５２０、及び５３０に分散されてもよい。
【００６９】
上記で詳述したように、コンピューティングシステム４１０及び／又はネットワークアーキテクチャ５００の１つ若しくは２つ以上の構成要素は、単独で又は別の要素との組合せで、スケーラブルネットワークバッファ管理のための例示的な方法の１つ若しくは２つ以上のステップを実行してもよく、及び／又はそれらを実行するための手段であってもよい。
【００７０】
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施形態を記載するが、本明細書において説明及び／又は例解される各ブロック図の構成要素、フローチャートの工程、動作、及び／又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア（又はこれらの任意の組み合わせ）構成を使用して、個々に、及び／又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例示的であると見なされるべきである。
【００７１】
いくつかの例では、図１の例示的なシステム１００の全て又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【００７２】
種々の実施形態において、図１の例示的なシステム１００の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナンシーを容易にし得る。換言すると、本明細書において説明されるソフトウェアモジュールは、本明細書において説明される機能のうちの１つ若しくは２つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成し得る。例えば、本明細書において説明されるソフトウェアモジュールのうちの１つ若しくは２つ以上は、２つ若しくは３つ以上のクライアント（例えば、顧客）が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客（即ち、テナント）間でアプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有し得る。本明細書において説明されるモジュールのうちの１つ若しくは２つ以上はまた、ある顧客が別の顧客のデータ及び／又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び／又は構成情報を分割し得る。
【００７３】
種々の実施形態によると、図１の例示的なシステム１００の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び／又はデータは、仮想マシン内に存在し得る、及び／又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ（例えば、ハイパーバイザ）によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。更に、又は代替的に、本明細書において説明されるモジュール及び／又はデータは、仮想化層内に存在し得る、及び／又はそこで実行し得る。本明細書において使用される際、「仮想化層」という用語は、概して、オペレーティングシステム環境に重なる、及び／又はそれから抽象化される、任意のデータ層及び／又はアプリケーション層を指す。仮想化層は、仮想化層を、根本的な基本オペレーティングシステムの一部であるかのように提示する、ソフトウェア仮想化ソリューション（例えば、ファイルシステムフィルタ）によって、管理され得る。例えば、ソフトウェア仮想化ソリューションは、最初は基本ファイルシステム及び／又はレジストリ内の場所に向けられた呼び出しを、仮想化層内の場所にリダイレクトし得る。
【００７４】
一部の実施例において、図１の例示的なシステム１００の全て又は一部分は、モバイルコンピューティング環境の一部分を表し得る。モバイルコンピューティング環境は、モバイル電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス（例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス）などを含む、広範なモバイルコンピューティングデバイスによって実装され得る。一部の実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間に１つのフォアグラウンドアプリケーションのみを提示すること、遠隔管理特性、タッチスクリーン特性、場所及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、及び／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力、アプリケーションのインストールを制限する（例えば、承認されたアプリケーションストアのみから得る）能力などを制限する、制限されたプラットフォームを含む、１つ若しくは２つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び／又はモバイルコンピューティング環境と相互作用し得る。
【００７５】
加えて、図１の例示的なシステム１００の全て又は一部分は、情報管理のための１つ若しくは２つ以上のシステムの一部分を表し得る、それらの相互作用し得る、それらによって生成されるデータを消費し得る、及び／又はそれらによって消費されるデータを生成し得る。本明細書において使用される際、「情報管理」という用語は、データの保護、組織化、及び／又は記憶を指し得る。情報管理のためのシステムの例としては、限定することなく、記憶システム、バックアップシステム、アーカイバルシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどが挙げられ得る。
【００７６】
一部の実施形態において、図１の例示的なシステム１００の全て又は一部分は、情報セキュリティのための１つ若しくは２つ以上のシステムの一部分を表し得る、それらによって保護されるデータを生成し得る、及び／又はそれらと通信し得る。本明細書において使用される際、「情報セキュリティ」という用語は、保護されたデータへのアクセスの制御を指し得る。情報セキュリティのためのシステムの例としては、限定することなく、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、アイデンティティ認証システム、アクセス制御システム、暗号化システム、ポリシーコンプライアンスシステム、侵入検出及び防止システム、電子ディスカバリシステムなどが挙げられ得る。
【００７７】
一部の実施例によると、図１の例示的なシステム１００の全て又は一部分は、エンドポイントセキュリティのための１つ若しくは２つ以上のシステムの一部分を表し得る、それらと通信し得る、及び／又はそれらから保護を受け得る。本明細書において使用される際、「エンドポイントセキュリティ」という用語は、不法及び／又は違法な使用、アクセス、及び／又は制御からのエンドポイントシステムの保護を指し得る。エンドポイント保護のためのシステムの例としては、限定することなく、マルウェア対策システム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどが挙げられ得る。
【００７８】
本明細書において説明及び／又は例解される工程のプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び／又は説明される工程は、特定の順序で図示又は考察されるが、これらの工程は、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び／又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解される工程のうちの１つ若しくは２つ以上を省略し得るか、又は開示されるものに加えて追加の工程を含み得る。
【００７９】
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び／又は例解されているが、これらの例示的な実施形態のうちの１つ若しくは２つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体にかかわらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施形態はまた、あるタスクを実施するソフトウェアモジュールを使用して、実装され得る。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。一部の実施形態において、これらのソフトウェアモジュールは、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上を実施するように、コンピューティングシステムを構成し得る。
【００８０】
加えて、本明細書において説明されるモジュールのうちの１つ若しくは２つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、ある形態から別の形態に変換し得る。例えば、本明細書に列挙されたモジュールのうちの１つ若しくは２つ以上のものは、変換されるべきデータを受信し、データを変換し、クラウドストレージサービスに又はそれからデータを送信するために変換結果を出力し、データの送信を管理するために変換結果を使用し、クラウドストレージサービスへの又はそれからのデータの送信を管理するために変換結果を記憶してもよい。それに付加して又はその代替として、本明細書において列挙されるモジュールのうちの１つ若しくは２つ以上は、コンピューティングデバイス上で実行すること、コンピューティングデバイス上にデータを記憶すること、及び／又はそうでなければ、コンピューティングデバイスと相互作用することによって、物理コンピューティングデバイスのプロセッサ、揮発性メモリ、非揮発性メモリ、及び／又は任意の他の部分を１つの形式からもう１つの形式に変換してもよい。
【００８１】
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、包括的であること、又は開示されるいかなる正確な形態にも限定されることを意図されない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施形態は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
【００８２】
別途記載されない限り、「〜に接続される（connected to）」及び「〜に連結される（coupled to）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、直接的及び間接的（即ち、他の要素又は構成要素を介した）接続の両方を許容するとして解釈されるものとする。加えて、「ａ」又は「ａｎ」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも１つ（at least one of）」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む（including）」及び「有する（having）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、「備える（comprising）」という語と同義的であり、かつ同じ意味を有する。
【図１】
0006507274.tif 000002
【図２】
0006507274.tif 000003
【図３】
0006507274.tif 000004
【図４】
0006507274.tif 000005
【図５】
0006507274.tif 000006