本明細書では、実施形態がいくつかの例示的実施形態及び説明図により説明されるが、実施形態は説明される実施形態または図に限定されないことを当業者は認識するだろう。図及びその詳細説明には、実施形態を開示された特定の形態に限定する意図はなく、それとは逆に、添付の請求項で定義される精神と範囲に属する全ての修正物、均等物及び代替物を含める意図があることを理解されたい。本明細書で使用される見出しは、本明細書を構成するためだけのものであり、説明または特許請求の範囲を限定するために用いられることを意図するものではない。本特許出願を通して使用される英単語”may”は、義務的な意味(すなわち「〜するべきである」という意味)よりむしろ許容的な意味(すなわち「〜する可能性がある」という意味)で使用される。同様に英単語”include”、”including”及び”includes”は「含む」ことを意味するが、その対象を限定しない。
トークンバケット及びそれに関連する価格設定ポリシーを使用するバーストモード受付制御を実施するための方法及び装置の様々な実施形態が説明される。本明細書において「受付制御」という用語は、受信した作業要求(ストレージサービスに対する読出しまたは書込み要求等)を実行対象として受付けるか否かを判断するために行われる処理を表すのに使用され、そして受付制御の実行に関わるソフトウェア及び/またはハードウェアエンティティ一式は、集合的に「受付コントローラ」と称されうる。トークンバケットを使用する受付制御は、例えば、ネットワークアクセス可能なサービス(マルチテナントストレージサービスまたはデータベースサービス等)がプロビジョン作業量モデルに対応する様々な環境において採用されうる。プロビジョン作業量モデルにおいて、作業要求先の所定オブジェクトは通常、作業要求に関して、特定の作業要求率(「プロビジョン処理能力」)まで容認可能な応答時間で対応可能であるように設定または構成されうる。本明細書において「処理能力」という用語は、所定の率で作業要求を完了するリソース(例えば、ストレージオブジェクト、データベーステーブル、またはストレージオブジェクトもしくはデータベーステーブルのパーティション)の能力を表すのに使用される。例えば、ストレージリソースの場合、処理能力は、毎秒の論理的もしくは物理的な読出しもしくは書込み処理数といった、毎秒の作業処理数等の単位で表現されうる。本明細書において「作業対象」という用語は、作業要求先のネットワークアクセス可能なサービスにより実行及び/または管理されるリソースまたはオブジェクトを表すのに使用されうる。少なくともいくつかの実施形態において、所定の受付コントローラは、複数の作業対象に関して受付判断を行う責任を担いうる。
一実施形態において、例えば、ネットワークアクセス可能なマルチテナントデータベースサービスは、毎秒X回までの読出しまたは書込み処理に対処するように構成されたデータベーステーブル(作業対象)を設置しうる(すなわちテーブルのプロビジョン処理能力は毎秒X処理に設定されうる)。本明細書において「プロビジョン処理能力」及び「プロビジョン能力」という用語は、同義に使用されうる。少なくともいくつかの実施形態において、該当するクライアントがテーブルの確立と使用に関する支払いにおいて同意すべき金額は、プロビジョン能力に基づきうる。例えば、作業オブジェクトに関するクライアントとのサービスレベル合意の結果、クライアントは、サービスがプロビジョン能力までの作業要求到着率に対応可能であるべきであると期待するだろう(少なくとも致命的なイベントが起こる等の異常な状況にない場合)。プロビジョン能力に対応可能であるために、データベースサービスは、テーブルコンテンツの記憶、かつ所望の処理レベル及び応答時間の対応に十分な記憶容量及び性能を有するストレージデバイスを特定かつ使用し、作業量の均衡化目的で多数のこのようなデバイスに対しテーブルコンテンツの一部を分配する等、様々なステップを実行しうる。このような例示的シナリオにおいて、テーブルに対しプロビジョン処理能力が決定または設定された後(例えば、指定の処理能力を有するテーブルの作成を求めるクライアント要求が受付けられた場合、または対応するサービスレベル合意が関係当事者により認められた場合)、当該テーブルに対する読出しまたは書込み要求が毎秒X要求の要求率以下で到着する限り、データベースサービスは一般に、適切な応答時間で要求を受付け実行する責任を担いうる。しかしながら、オブジェクトに対する作業要求がプロビジョン能力より高い率で到着すると、オブジェクトは「バーストモード」運転で作動していると見なされ、サービスはこのようなバーストモード作業要求を受付け実行するためにベストエフォートを試みるが、一部のバーストモード作業要求は延期または拒否されうる。いくつかの実施形態において、所定の作業対象のプロビジョン能力は、ネットワークアクセス可能なサービスにより管理目的のため内部で使用されうる。例えば、作業対象及びその作業量を様々な低次リソース(ストレージデバイスまたはストレージサーバ等)へマッピングするパラメータを特定するのにプロビジョン能力が内部で使用されうるが、サービスはクライアントに対して当該プロビジョン能力を必ずしも明らかにしなくてよい。
プロビジョン作業量モデルが採用されるいくつかの実施形態において、リソースの利用可能処理能力を表すために、論理コンテナすなわち「バケット」に配置された作業トークンが使用され、このようなバケットは従って、所定の作業要求が実行対象として受付けられるべきか否かを判断するのに使用されうる。本明細書において「利用可能処理能力」という用語は、現在の作業量を考慮した場合、リソースはどれ位の追加処理能力を提供可能かを示す推定量または測定量を表すのに使用されうる。例えば、所定のストレージデバイスは、毎秒100作業処理(例えば、読出しまたは書込み)のプロビジョン能力を有するように構成され、そして所定の秒間、毎秒60処理の作業量に対応しうる。当実施例において、当該ストレージデバイスの利用可能処理能力は、毎秒(100−60)すなわち40処理でありうる。一実装例において、バケットには、プロビジョン能力に相当する毎秒100トークンが追加(すなわち「補充」)されうる。作業要求が到着すると、プロビジョン能力バケットと称されうるバケットからトークンが消費されうる。例えば60の作業要求が到着し、60トークンが1秒で消費され、残り40トークンが利用可能処理能力を表す。作業要求率がプロビジョン能力より高くならない限り、ストレージデバイスは通常に、すなわち通常モードで作動しているとみなされ、そして通常処理に適用可能なパラメータセットが受付制御のために使用されうる。さらに詳しく後述されるように、作業要求到着率がプロビジョン処理能力(例えば、当実施例においては毎秒100作業処理)を超える場合、ストレージデバイスは通常モードとは対照的なバーストモードで作動しているとみなされ、別の受付制御パラメータセットが使用されうる。プロビジョン能力バケットのトークン集合が使い切られると、バーストモードの間に受付制御に対処するために、1以上の追加バケット(バーストモードバケットと称される)が使用されうる。例えば特定の制約内でサービスがバーストモード処理に対しベストエフォート対応を提供できるように、異なる実施形態において、バーストモードバケット(複数可)のトークンを追加し消費するための数多くの異なる手法が取られうる。所定のリソースの利用可能処理能力(ゆえにバーストモード処理に対応する作業量レベル)は、基礎をなすハードウェアもしくはソフトウェアの性能、及び/または(負荷均衡の考慮、公平性の考慮、ビジネス/価格設定の考慮、またはハードウェア/ソフトウェアの本来の性能以外の要因の何らかの組合せに基づいて)リソースの処理能力を制御もしくは制限するために実施されるポリシー等、異なる実施形態における様々な異なる要因の任意の組合せに依存しうることに留意されたい。
一実施形態によれば、作業対象に対する作業要求率が特定レベル(例えば、作業対象のプロビジョン能力)以下である限り、当該作業対象は通常モードで作動しているとみなされ、そして作業要求率が当該特定レベルを超える場合、バーストモードで作動していると見なされうる。任意の作業要求が受信されると、作業対象に対応付けられた通常モードトークンバケットのトークン集合数が特定されうる。通常モードトークンバケットのトークン集合数が閾値基準を満たす場合(例えば、トークン集合数が1より大きい、またはある閾値を超える場合)、作業対象は通常モードであるということが受付コントローラに対し示されうる。従って、このような実施形態において、受付コントローラは作動モードを判定するために直接到着率を監視する必要がなく、その代りにモード判定のために通常モードトークンバケットのトークン数が使用されるため、受付制御のために到着率を監視する必要のあるシナリオに関連する受付コントローラの作業量が削減される可能性がある。通常モードにおいて要求は実行対象として受付けられ、そして1以上のトークンが通常モードバケットから消費されうる。
しかしながら、通常モードバケットのトークン集合数が閾値基準を満たさない場合、作業対象はバーストモードであるとみなされるか、または作業要求が実行対象として受付けられた場合に作業対象はバーストモードに突入するだろうという判定が少なくとも下されうる。よって、受付コントローラはバーストモードトークンバケットセットのうち少なくとも1つのバケットのトークン集合数を特定しうる。1つまたは複数のバーストモードトークンバケットのトークン集合数が第二閾値基準を満たす場合(例えば、バーストモードトークンバケットが少なくとも1つのトークンを含む場合)、作業要求は実行対象として受付けられうる。1つまたは複数のバーストモードバケットのトークン集合数は、作業要求が受付けられると、この事実を反映するために修正されうる。少なくとも一実施形態において、受付コントローラは、例えば作業要求を完了するまたは満たすために行われる作業量の見積りに基づいて、及び/またはバーストモード処理に適用可能なトークン消費ポリシーに基づいて、バーストモードトークンバケット(複数可)から特定の数のトークンを消費しうる。作業要求が受付けられた後に、1以上の作業処理(例えば、ストレージオブジェクトまたはデータベースオブジェクトを含む作業対象の場合は読出しまたは書込み)が当該作業要求に従って開始されうる。
少なくともいくつかの実施形態によれば、通常モードトークンバケットのトークン集合数により作業対象がバーストモードで作動していることが示されない場合、受付制御には当該通常モードトークンバケットが単独で使用されうる(例えば、前述のように、受付けられた各作業要求に対し通常モードトークンバケットからいくつかのトークンが消費されうる)。従って、少なくともいくつかの実施形態において、通常モードの受付制御処理の間、バーストモードバケット(複数可)のトークン集合が活用されることはありえない。いくつかの実施形態においては、通常モード処理の間でも、作業要求が受付けられると、バーストモードバケット及び通常モードバケットのそれぞれのトークン消費ポリシーに従って、1以上の通常モードトークンバケットだけでなく1以上のバーストモードバケットからも、トークンが消費されうる。少なくともいくつかの実施形態において、通常モードの間でも、適用補充ポリシーに従って、バーストモードバケットにトークンが追加されうることに留意されたい。作業対象がバーストモードで作動し、かつ1つまたは複数のバーストモードバケットのトークン集合数が第二閾値基準を満たさない場合(例えば、作業要求を受付けるのに十分なトークンがバーストモードバケットに確認されない場合)、いくつかの実施形態において、作業要求は拒否、延期、または再試行されうる。少なくともいくつかの実施形態において、所定の作業要求を受付けるのに十分なトークンが利用不可能な場合、当該作業要求は、当該作業要求を送信したクライアントに知らせることなく1回以上(例えば、設定可能な再試行上限回数まで)再試行されうる。作業要求が最終的に受付けられた場合、当該作業要求を出したクライアントは、当該要求関して通常の総応答時間よりも長い総応答時間を経験しうるが、当該要求が少なくとも1回拒否されたことには気付かずにいるだろう。
さらに詳しく後述されるように、通常モードトークンバケット及びバーストモードトークンバケットは、様々な時点においてそれぞれの補充ポリシーに従ってトークンが補充されうる。一実施形態において、通常モードトークンバケットは、最大トークン集合数限度を条件に、作業対象のプロビジョン能力と等しい率で補充されうる。少なくともいくつかの実施形態において、このような通常モードトークンバケットは、プロビジョン能力トークンバケットと称されうる。少なくともいくつかの実施形態において、1以上のバーストモードトークンバケットは、作業対象のプロビジョン処理能力に比例する率(必ずしも等しくはない率)で補充されうる。バーストモードバケットの補充率を作業対象のプロビジョン能力と比例するように維持することで、異なる作業対象がそれぞれのプロビジョン能力に比例するバーストモード作業量に対処することが確実となりうる。例えば、データベースサービスのクライアントC1がプロビジョン能力P1のテーブルT1に対し金額A1を支払い、かつクライアントC2がプロビジョン能力P2のテーブルT2に対し金額A2を支払う(P1>P2かつA1>A2)場合、T1に対するバーストモードトークンバケット(複数可)は、T2に対するバーストモードトークンバケット(複数可)より高い率で補充されうるため、A1>A2であることから期待されるように、T1はT2と比べてより高い作業要求のバースト率に対応可能である。
いくつかの実施形態において、サービスは異なる種類の作業要求到着率バーストに対し、異なる受付制御パラメータを使用しうる。例えば、プロビジョン能力毎秒P処理のサービスSにより実行される作業対象Wを考察する。毎秒Pより大きい率の作業要求到着は、バーストとして分類されうる。しかしながら、全てのバーストが同じ様にサービスSに影響を与えるとは限らない。例えば、クライアントが作業要求を毎秒100Pの率で送信した場合、サービスSが、他のクライアントに悪影響を与える、またはリソースに尽きることなく、要求に対処できるのは、非常に短い時間でしかない。しかしながら、クライアントが作業要求を毎秒2Pの率で送信した場合、サービスはより長時間、要求を対処可能である。よって、一実施形態において、到着率における急激で短期のピークに対処するピークバーストバケット、及びより低い最大要求率でより長いバーストに対処する持続バーストバケット等、複数のバーストモードトークンバケットが設定されうる。ピークバーストトークンバケット及び持続バーストトークンバケットの組合せは、本明細書において「複合」トークンバケット(もしくは複合バケット)と称されうる。このような実施形態において、受付コントローラは、作業対象に対する作業要求が実行対象として受付けられるピークバースト率、及びピークバースト率で作業要求が受付けられる最大継続時間を示すピークバースト時間窓サイズを決定しうる。さらに、受付コントローラは、ピークバースト率より低い持続バースト率、かつピークバースト時間窓サイズより大きい持続バースト時間窓サイズを決定しうる。持続バースト時間窓サイズは、持続バースト率で作業対象に対する作業要求が受付けられる最大継続時間を示す。いくつかの実施形態において、時間窓サイズは一般に、それぞれのバースト率が特定の条件下(例えば、バースト状態の間は補充なしと仮定する)で対応可能な継続時間を示すが、実際に達成される継続時間は時間窓サイズに正確には一致し得ない(例えば、バースト状態の間に補充処理が実際行われたため)。2つのバーストモードバケットの最大トークン集合数は、それぞれの最大バースト率に基づいて設定されうる。例えば一実装例において、ピークバーストバケットの最大トークン集合数は、ピークバースト率とピークバースト時間窓サイズの積に設定され、一方持続バーストバケットの最大トークン集合数は、持続バースト率と持続バースト時間窓サイズの積に設定されうる。両バケットはバーストモード処理の間、受付制御のために使用されうる。例えば、作業対象に対する作業要求を受信したことに応じて、受付コントローラは、ピークバーストトークンバケット及び持続バーストトークンバケットのそれぞれのトークン集合数に少なくとも部分的に基づいて、作業要求を実行対象として受付けうる。少なくともいくつかの実施形態において、ピークバーストバケット及び持続バーストバケットに対し、異なる消費率及び/または異なる補充率が適用されうる。
このような実施形態において、複合バケット技術を使用することで、受付コントローラは、短時間の非常に高いバースト率、及び長時間のより低いバースト率に対応可能である。作業対象のプロビジョン能力(pr)が毎秒100処理(100処理/秒)であり、ピークバーストバケットPBBに対応付けられたピークバースト率(pbr)が1000処理/秒であり、ピークバースト時間窓サイズ(pbw)が6秒であり、持続バースト時間窓SBBに対応付けられた持続バースト率(sbr)が200処理/秒であり、そして持続バースト時間窓サイズ(sbw)が60秒である、例示的シナリオを考察する。さらに、ピークバーストバケットの最大トークン集合数(最大PBB)は、pbrとpbwの積(1000*6、すなわち6000トークン)に設定され、そして持続バーストバケットの最大トークン集合数(最大SBB)は、sbrとsbwの積(200*60、すなわち12000トークン)に設定されると仮定する。時間Tに始まる作業要求のバーストBを考察する(すなわち、当例示的シナリオにおいては、受付コントローラにより通常モードバケットは時間Tに通常モード処理を行うのに十分なトークンを有さないと判定されたため、バーストモードパラメータが適用される)。説明を簡易にするために、当実施例に関して、PBBは毎秒200トークンが補充され(最大PBBを上限とする)、かつSBBは毎秒100トークンが補充され(最大SBBを上限とする)、かつ作業対象はバーストモード状態のままであると仮定する。各作業要求は1個の実作業処理(例えば、読出しまたは書込み)に至るとし、そして所定の要求を受付けるために、PBB(ピークバーストバケット)及びSBB(持続バーストバケット)の各バーストモードバケットから1トークンが消費される。PBB及びSBBの両者は時間Tに最大限のトークンを有すると仮定する。すなわちPBBは6000トークンを有し、SBBは12000トークンを有する。
初めに、バーストBが1000要求/秒の要求到着から成るシナリオを考察する。PBBは6000トークンで始まり、要求到着により1000トークンが消費され、そしてPBBの補充ポリシーに従って200トークンが追加されたため、1秒後の時間T+1にPBBのトークン集合数は(6000−1000+200)、すなわち5200トークンになりうる。同様に、時間T+1にSBBのトークン集合数は(12000−1000+100)、すなわち11100トークンになりうる。作業要求が1000要求/秒で到着する間、続く数秒間の秒毎に、PBBの正味のトークン集合数は800トークン減り、一方SBBのトークン集合数は900トークン減る。従って、PBBのトークン集合数(集合(PBB)と称する)及びSBBのトークン集合数(集合(SBB)と称する)は以下のように低下する。時間T+2に、集合(PBB)=4400、集合(SBB)=10200となり、時間T+3に、集合(PBB)=3600、集合(SBB)=9300となり、時間T+4に、集合(PBB)=2800、集合(SBB)=8400となり、時間T+5に、集合(PBB)=2000、集合(SBB)=7500となり、時間T+6に、集合(PBB)=1200、集合(SBB)=6600となり、時間T+7に、集合(PBB)=400、集合(SBB)=5700となる。
T+7以降の秒間もバーストBが毎秒1000要求で続くとすると、当実施例において、PBBはトークンを使い切ることとなり、少なくとも一部の要求は拒否されうる(SBBはまだ十分なトークンを有しているにもかかわらず)。このように当実施例において、毎秒1000要求という高到着率のバーストは、約7、8秒間しか対応できない。
これに対して、バーストBが毎秒200要求から成るシナリオを考察する。PBBは、毎秒、200トークンが消費され、かつ200トークンが補充され、正味のトークンを損失しない。SBB(12000トークンで開始)は、毎秒、200トークンが消費され、かつ100トークンが補充され、100トークンを損失する。よって、SBBを使い尽くすのに約12000/100=120秒かかるため、200要求/秒のバーストは、約120秒間想定されるパラメータ設定で対応可能である。このように当例示的シナリオにおいて、200要求/秒というより低いバースト率は、1000要求/秒という急激なバーストと比べて、より長い時間対応されうる。様々な実施形態において、実際の演算はさらに複雑でありうる。例えば、通常モードバケットは補充されると活用されるようになるためバーストモード到着率は仮定されるように横ばいのままではなく、そして他の要因(異なる種類の要求に対し異なる数のトークンを必要とする消費ポリシー等)を考慮する必要があるだろう。
いくつかの実施形態において、それぞれのバーストモードバケットが作業要求の異なるカテゴリごとに使用されうる。例えば、ストレージサービスまたはデータベースサービスの環境においては、読出し処理要求のために1以上のバーストモードバケットが保持され、そして書込み処理要求のために1以上のバーストモードバケットが保持されうる。プロビジョン能力バケットが使用される一実施形態において、特定の時間間隔後にプロビジョン能力バケットの一部のトークンが未使用のままである場合、未使用トークンは「貯蓄される」、すなわち1以上のバーストモードバケットへ論理的に譲渡され、少なくとも原則的にクライアントは未使用のプロビジョン能力トークンをバースト状態の間に使用できることとなる。いくつかの実施形態において、1以上の共有リソースの処理能力限度を考慮するために、バーストモードトークンバケットセットが使用されうる。例えば、データベーステーブルのパーティションが、他のテーブルのパーティションも配置される共有ストレージデバイスに配置される場合、前述のバーストモードバケットを使用することに加え、共有リソース能力バケットが共有ストレージデバイスの利用可能処理能力を表すのに使用され、そして作業要求を受付けるために共有リソース能力バケットからもトークンが消費されうる。いくつかの実施形態において、所定の作業要求を受付けるために消費されるトークンの数は当該要求に必要となる作業の見積りに基づき、そして初期の見積りが不正確であると判明した場合、実際に行われる作業量が明らかになった時に、様々なバケットのトークンが消費されうる(または様々なバケットにトークンが追加される)。バーストモード処理に対するトークンベースの受付制御ポリシーのこれら及び様々な別の態様に関する詳細が、以下に提供される。
一部の種類のネットワークアクセス可能なストレージ関連サービスの場合、いくつかの実施形態において、それぞれトークンバケットセットを使って独立して受付制御が行われる複数の作業対象に対し、所定のクライアントデータセットが分配されうる。例えばデータベースサービスは、N個のパーティションセットを有する大きなテーブルを管理し、所定のパーティションに対する作業要求を受付けるか否かに関するトークンベースの判断が、他のパーティションから独立して行われる。このような実施形態において、クライアントの作業量の不均一性の問題には、時間的不均一性の特質に加えて、空間的特質も追加されうる。つまり、全てのクライアントデータの合計作業量から考察すると、作業要求が経時的に不均一に分散している(すなわち、一部の時間帯において作業要求が他の時間帯よりはるかに高い率で到着する)だけでなく、作業要求はデータ空間上も不均一に分散している(すなわち、クライアントデータの一部のサブセットは他のクライアントデータのサブセットより頻繁にアクセス及び/または更新される)という場合がありうる。空間的不均一性を有するいくつかの例示的シナリオにおいて、少なくとも一部の時間帯において、所定のクライアントC1が所有する1つのデータパーティションP1における利用可能なトークン数は、同一のクライアントC1が所有する別のデータパーティションP2における利用可能なトークン数よりはるかに大きいが、作業量に関してはP1よりP2のほうがはるかに大きいという場合がありうる。全てのクライアントパーティションが一体としてみなされた場合に作業要求拒否を回避するのに十分なトークンが利用可能であるにもかかわらず、このような事例は、大量にアクセスされるパーティションにおいて作業要求拒否をもたらしうる。このため、少なくともいくつかの実施形態において、作業対象グループにおけるトークン共有機構が実行されうる。
トークン共有が実施される一実施形態において、複数の作業対象が、それぞれの受付制御用のトークンバケットと共に構成されうる。トークン共有プロトコルの反復は、特定の作業対象WT1においてトークン共有評価基準が満たされたと判断された時に開始される。つまり、WT1は、1以上の他の作業対象から追加トークンを取得するか、または1以上の他の作業対象に対しトークンを譲渡するか、どちらを試みる方がWT1にとって有益であるかを評価するように構成されうる。異なる実施形態において、このような評価を始めるために異なる基準が使用されうる。例えばいくつかの実施形態において、各作業対象は、デフォルトで毎X秒または分に一度トークン共有を評価するように構成され、別の実施形態においては、所定の作業対象は、自身のトークンバケットのあるセットにおけるトークン数がある閾値より低く、または別の閾値より高くなった場合に、または作業要求に対する拒否率が閾値より高くなった場合に、トークン共有を評価するように構成されうる。
評価プロセスの一部として、いくつかの実施形態において、作業対象WT1は、あるトークンバケットセットに属するトークン集合数情報を交換する第二作業対象WT2を特定しうる。例えば一実装例において、バーストモードトークンバケットのトークン集合数がWT1とWT2の間で交換されうる。トークン数の比較に少なくとも一部基づいて、2つの作業対象は、いくつかのトークンが共有すなわち譲渡されるべきかを判断しうる。例えば、より多いトークンを有する作業対象は譲渡元バケットから、より少ないトークンを有する作業対象の譲渡先バケットに対し、一部のトークンを提供することに同意しうる。トークンを渡す判断が下されると、譲渡先バケットのトークン集合数は、いくつかのトークンNt分増加し、そして譲渡元バケットのトークン集合数はNt分増加しうる。トークンが譲渡された後、関与している両作業対象における新たに修正されたトークン集合数を使って受付制御判断が下されうる。本明細書において、トークン共有プロトコルに関与するものは、「トークン共有ピア」と称され、そして当該プロトコルに関与する作業対象グループは、「トークン共有グループ」または「トークン共有ピアグループ」と称されうる。いくつかの実装例において、トークン共有プロトコルステップ(例えば、プロトコルの評価ステップ及びトークン共有ステップ)は、例えば、トリガー条件が満たされたことに基づき、または選択された回数ランダムに、または決定性スケジュールに従って、反復的に行われうる。少なくともいくつかの実施形態において、異なる作業対象の対が異なる反復に関与しうる。すなわち、トークン共有ピアグループの全ての作業対象が、所定のプロトコル反復に関与するわけではない。いくつかの実施形態において、トークン共有プロトコルは、トークン共有グループの作業対象の受付コントローラによって集合的に実行されうる。
トークン共有グループの構成員は、異なる実施形態におけるいくつかの要因のいずれかに基づきうる。いくつかの実施形態において、例えばトークンは単一のデータベーステーブルのパーティション間でのみ共有されうる。別の実施形態においては、トークンは、同一のクライアントまたはある協働クライアントセットが所有するテーブルセットの全てのパーティション間で共有されうる。さらに詳しく後述されるように、非リレーショナルデータベースサービスが派生テーブルを利用する所定のベーステーブルに対して二次インデックスを実装する一実施形態において、トークン共有は、ベーステーブルのパーティション及び派生テーブル(複数可)のパーティション間で実行されうる。いくつかの実施形態において、クライアントはトークン共有グループの構成員作業対象を明確に指定可能であるが、別の実施形態においては、クライアントではなくサービスがトークン共有構成員を決定しうる。同様に、トークン共有が使用されるトークンバケットの特定の種類は、異なる実施形態において異なりうる。例えばいくつかの実施形態において、トークンはバーストモードトークンバケット間のみの作業対象により共有されるが、別の実施形態においては、トークンはさらに、または代わりに通常モードバケット間で共有されうる。
異なる作業対象にそれぞれのプロビジョン処理能力が割当てられたいくつかの実施形態において、異なるクライアントに属するテーブルパーティション等のいくつかの作業対象は、ストレージデバイス等の単一のリソースを共有しうる。共有されたリソースはそれ自身の処理能力限度TLを有し、これはリソースを共有する作業対象セットのプロビジョン能力(PC)の合計より一般的に高くありうる。共有リソースのオーバーロード状態を回避するために、例えば、作業対象において実施されるネットワークアクセス可能なサービスは、作業対象がクライアント作業処理を完了するために依存する共有リソースの処理能力限度を、作業対象のプロビジョン能力の合計が超えないように、作業対象を構成している。このようなシナリオの作業対象は、「リソース共有グループ」の構成員と称されうる。このような作業対象はそれぞれ、1以上の通常モードトークンバケット及び1以上のバーストモードトークンバケット等の関連トークンバケットセットを有しうる。
従って、少なくともいくつかの実装例において、共有リソースにより対応可能な最大処理能力に関して、リソース共有グループのプロビジョン能力の合計と相対する余剰能力のバッファが保持されうる。つまり、リソース共有グループの全作業対象がこれらの全プロビジョン能力に相当する作業要求を受付けたとしても、共有リソースは追加の負荷に対処可能である。いくつかの事例において、例えばリソース共有グループの1以上の作業対象が対処不可能な高い作業要求到着率のバーストに遭遇した場合、いくつかの追加トークンをリソース共有作業対象に分配(例えば、作業対象のそれぞれのバケット補充ポリシーに基づいて、作業対象に既に生成されたトークン数に加えて分配)できると便利だろう。追加トークンは、共有リソースの余剰能力バッファの少なくとも一部を表すものとみなされうる。このような「余剰」トークンは、余剰トークンを分配する判断が下される前に必ずしも任意の所定のバケットに対応付けられるとは限らず、すなわち、少なくともいくつかの実施形態においては、分配のために新規のトークンが生成されうることに留意されたい。別の実施形態においては、余剰トークンは、共有リソースの処理能力が明確に示されるバケットに存在しうる。ネットワークアクセス可能なサービスのプロバイダは、このような余剰トークンを分配する際、あるレベルの分配公平性の確保を所望しうる。これにより、例えば、所定クライアントの作業対象WT1は、同一のリソースを共有する別のクライアントの作業対象WT2に余剰トークンが全く提供されない中、全ての余剰トークンを蓄積することが許可されるという特別待遇を受けない。余剰トークンを分配する際、いくつかの異なる公平性関連要因を教慮する必要がありうる。例えば、一実施形態において、余剰トークンは、作業対象のそれぞれのプロビジョン能力に基づいて、及び/または作業対象の最近の作業要求到着率に基づいて、作業対象に分配されうる。
前述のように、少なくともいくつかの実施形態によれば、ネットワークアクセス可能なサービスのいくつかの作業対象(データベースサービスのデータベーステーブルパーティション等)は、受付けた作業要求に応じて共有リソース(共有ストレージデバイス等)を使用するように構成されうる。このような作業対象はそれぞれ、到着作業要求の受付制御のために設定された各自のトークンバケットセットを有しうる。すなわち、所定の作業対象において作業要求を実行対象として受付けるか拒否するかに関する判断は、当該作業対象の1以上のバケットのトークン集合数に基づいて行われうる。いくつかの実施形態において、共有リソースに対応付けられたトークン分配器等のサービス管理コンポーネントは、あるスケジュールに従って開始された各サイクルまたは反復で、または一部のトリガー条件の検出に基づいて、トークン分配を反復して行うように構成されうる。少なくともいくつかの実施形態において、トークン分配器は、トークン分配プロトコルの反復に対応する所定時間において、リソース共有作業対象のバケットに分配する余剰トークンの合計数を決定する。合計数は、例えば共有リソースの処理能力限度と作業対象のプロビジョン能力の総数の差の関数でありうる。
トークンは、異なる実施形態におけるいくつかの要因の組合せに基づいて、作業対象間に分配されうる。いくつかの実施形態において、異なる作業対象に提供される特定の数のトークンは、当該作業対象の相対到着率及び相対プロビジョン能力に少なくとも一部基づいて、別の関数として計算されうる。リソース共有グループの各作業対象の作業要求到着率は監視され、そして各継続5分間隔の平均到着率等、経時的な到着率に関するある統計計量が計算されうる。所定のトークン分配反復に関して、最近のいくつかの間隔における到着率計量が計算に使用されうる。例えば、所定の5分間トークン分配反復に対し、前の5分間の到着率の比が考慮されうる、または最近のK個の5分間隔の到着率の比が考慮されうる。トークンの合計数がそこで、到着率の比かつプロビジョン能力の比に基づいて、1以上の作業対象に分配されうる(例えば、作業対象のそれぞれのバーストモードバケット等、作業対象の1以上のバケットのトークン集合を増加させることによって)。分配により調整されたトークンバケット集合(複数可)は、作業対象における受付制御のために利用されうる。
少なくともいくつかの事例において、例えば作業対象のプロビジョン能力の合計が共有リソースにより対応可能なピークの処理能力に近いことが判明した場合、または到着率が非常に低い場合、分配器は、所定の反復において余剰トークンを全く分配しないと決定しうることに留意されたい。例えば異なる作業対象において、どれだけ分配機構が作業要求拒否を削減または回避することに成功しているかに基づいて、時間の経過と共に、トークン分配機構における到着率計量及び/またはプロビジョン能力計量に割当てられた比重が調整されうる、またはトークン分配を統御する機能が調整されうる。いくつかの実施形態において、余剰トークンはバーストモードバケットにのみ追加され、一方別の実施形態においては、トークンはさらに、または代わりに、通常モードバケットに追加されうる。いくつかの実施形態において、作業要求到着率及びプロビジョン能力以外の要因の組合せが、余剰共有リソース能力の公平な分配のために使用されうる。少なくともいくつかの実装例において、トークンを分配するか否か、及びいくつのトークンを分配するかを決定する際、複数の共有リソースの処理能力限度が考慮されうる。
少なくともいくつかの実施形態において、トークンベースの受付制御が使用されるネットワークアクセス可能なサービスを利用するクライアントは、バーストモードの間に行われる処理に対する金額、または今後のバースト時作業量を見越して行われうる処理(トークン共有及び余剰トークン分配等)に対する金額とは異なる金額が、通常モード処理に対して請求されうる。いくつかのこのような実施形態において、通常モードバケット及びバーストモードバケットのそれぞれの価格ポリシーが、トークン消費及び/または譲渡に対応付けられうる。いくつかの実施形態において、サービスの価格設定マネジャーコンポーネントは、様々な条件下における様々なバケットのトークン集合数変更に対応付けられる価格設定ポリシーを定義し、かつ受付制御と連携して(または一部として)実施する責任を担いうる。一実施形態において、特定のトークンバケットに適用されるトークン価格設定ポリシーが特定されうる(例えば、クライアントによって選ばれた価格設定ポリシーに基づいて、またはサービスの内部構成設定に基づいて)。価格設定ポリシーは、ポリシーが適用されるトークン集合数変更の種類と、1以上の適用基準(例えば、特定の時間窓の間のみポリシーが適用されるか否か、またはバーストモード処理の間にいくつかのバケット集合数が特定の閾値より小さくなった時のみポリシーが適用されるか否か)と、トークン集合数に対する特定の変更に関しクライアントに請求する価格を計算するのに使用されうる式または関数とを定義する。いくつかの実施形態において、クライアントは、トークン集合数変更の異なるカテゴリに対して異なる金額が請求されうる。例えば一事例において、クライアントは、特定のバーストモードバケットB1から任意のトークンを消費した場合にある料金が請求され、そしてバケットB2からバケットB1へトークンが譲渡された場合には別の料金が請求される。少なくとも一実施形態において、クライアントは、いくつの(そしてどの種類の)トークンバケットが受付制御に使用されたかに基づいて、異なる金額が請求されうる。例えば、複合トークンバケットを使って多種類のバーストモード様態に対応することを所望するクライアントは、より少ないバーストモードバケットを使用するより単純な技術を利用する意思のクライアントより、多く請求されうる。価格設定マネジャーは、様々なトークンバケットの集合数に対する変更を、経時的に、例えばバーストモード処理の様々な時間帯において、記録しうる。クライアントの請求額は、記録された集合数の変更に基づいて作成されうる。
少なくとも一実施形態において、ネットワークアクセス可能なサービスは、例えば、クライアントがバーストモード及び/または通常モード作動中に受付制御に使用可能なトークンを売る、買う、または交換するために利用しうるプログラム的インターフェイス(1以上のウェブページ、ウェブサイト、グラフィカルユーザインターフェイス、コマンドラインツール、及び/またはAPI等)を実装することで、トークンマーケットプレイスを実現しうる。いくつかのこのようなマーケットプレイスにおいて、例えば、所定の先の時間帯において自身のトークンの一部は使用されないであろうことを認識しているクライアントは、オークション機構を使用した入札のためにトークンの可給性を宣伝しうる。当初の予測よりも多い作業量(ゆえに自身の作業対象のプロビジョン能力より多い作業量)に対応する必要のある別のクライアントは、トークンに対して入札し、(入札が成功した場合)売り手からトークンを購入しうる。少なくともいくつかの実施形態において、ネットワークアクセス可能なサービスの価格設定マネジャー及び/または他のコンポーネントは、このようなオークション及び他のマーケットプレイスの取引を簡易化し、トークン譲渡及び価格の経過を記録し、そしてマーケットプレイスの取引をクライアントに対し作成された請求額に適切に取入れうる。価格マネジャー及び関連コンポーネントの機能性の様々な態様に関する追加詳細もまた以下に提供される。
例示的システム環境
図1aは作業要求到着率の例示的変動を示す図であり、図1bは少なくともいくつかの実施形態による、そのような変動が起こった際トークンバケットを使用して受付制御判断を行いうるシステムを示す図である。図1aにおいて、X軸は時間を表し、Y軸はネットワークアクセス可能なサービスのストレージオブジェクトまたはデータベーステーブル等の作業対象に対する作業要求の到着率110を表す。所定の作業要求により、要求クライアントが作業対象に関連する特定の論理処理または物理処理のセットの実行を所望することが示されうる。例えば、単一の作業要求は、作業対象の一部に対する1以上の読出し処理、1以上の修正処理、一連の計算、作業待ち行列への挿入または作業待ち行列からの除去、またはこのような処理の何らかの組合せに変換されうる。少なくともいくつかの実施形態において、クライアントが作業要求において比較的高い次元の論理処理を示すと、作業対象を実行するサービスは、作業要求が受付けられた場合に実行する必要がありうる低次の物理処理または論理処理のある該当セットを特定する責任を担いうる。図1a及び1bは、作業対象における平均的または典型的なカテゴリの作業要求の到着率及び受付制御を例示する。さらに詳しく後述されるように、一般に到着率は作業要求の異なるカテゴリに関して個別にプロットされ、そして異なる作業要求カテゴリに対してそれぞれの受付制御パラメータが使用されうる。図1aにおいて、作業対象のプロビジョン能力112(画一のまたは平均的な作業要求と仮定する)が、Y軸に「pr」で交わる水平線により表される。図1aのように、到着率は一連の時間間隔にわたって監視されうる(例えば、到着する作業要求の数が毎秒測定され、そして要求数/秒がグラフに描かれうる)。表されるように、作業要求の到着率は時間と共に変化する。一部の時間帯において、到着率がプロビジョン能力prより少ないと、通常期N1、N2、及びN3等のこれらの時間帯において作業対象は通常モードであるとみなされる。バースト期B1及びB2等、到着率がprを超える間、作業対象はバーストモードで作動しているとみなされうる。
いくつかの実施形態において、ネットワークアクセス可能なサービスは、prまでの作業要求率に対応する義務がありうる(例えば、サービスレベル合意により契約上義務がありうる)。図1bに示されるように、サービスの受付コントローラ180は、通常モードの間、受付制御を判断する1以上のバケットを含む通常モードトークンバケットセット120を使用するように構成されうる。受付コントローラ180は、バーストモードの間、通常モードバケットに適用されるパラメータセットとは異なるパラメータセットが適用された1以上の受付制御用のトークンバケットを含むバーストモードトークンバケットセット125を使用するように構成されうる。少なくとも一実施形態において、作業要求170が受信されると、受付コントローラは初めに通常モードバケットのトークン集合数を特定しうる。通常モードバケットのトークン集合数が閾値より小さい場合(例えば、作業要求170を受付けることで消費されるトークン数Nより小さい場合)、受付コントローラは、作業対象102がバーストモードにある、または作業要求170が実行対象として受付けられた場合には、作業対象102がバーストモードに入るだろうと断定しうる。
例えば通常モードバケットセットを使用して、バーストモードパラメータを適用すると決定した際、描写された実施形態において、受付コントローラ180は、バーストモードトークンセット125のうち少なくとも1つのバケットのトークン集合数を特定しうる。トークン集合数が特定の基準を満たす場合、例えば少なくとも1つのバーストモードトークンバケットにおいてNトークンが利用可能である場合、作業要求170が実行対象として受付けられ、そして受付済作業要求に対応する1以上の処理179が開始されうる。バーストモードバケットセット125のトークン集合数が特定の基準を満たさない場合、矢印189により示されるように、作業要求170は拒否されうる。様々な実施形態において、通常モードバケットセット120及びバーストモードバケットセット125の各トークンバケットに対し、各自のパラメータ及びポリシーのセットが適用されうる。例えば、異なるバケットは、異なるトークン消費ポリシー(様々な状況において消費されるトークン数を示す)、及び異なるトークン補充ポリシー(トークンが追加される状況、及び毎秒追加されるトークン数を示す)を有しうる。描写された実施形態において、一般にサービス及び受付コントローラ180は、通常モード処理に対応し、そしてバーストモード処理の間、クライアント要求を受付け完了するためにベストエフォートを行う義務がありうる。
作業対象がそれぞれの定義されたプロビジョン処理能力を必ずしも有さないいくつかの実施形態において、例えば、サービスレベル合意により、サービスプロバイダが、一部または全ての作業対象に関して明確に指定されたある処理能力レベルに対応する義務を負わないいくつかの実施形態において、受付制御のためにトークンバケットを使用する前述のような技術が使用されうることに留意されたい。例えば一実施形態において、サービスプロバイダは、作業要求到着率が毎秒R処理を超えると必ずバーストモードが起こると簡潔に定義し、受付制御のためにバーストモードトークンバケットをこのような条件下で使用しうる。従って、異なる実施形態において、作業対象がバーストモードにあるか否かの判断を行うために取られる手法が異なりうる。いくつかの事例においては、プロビジョン処理能力が通常モードとバーストモードの間の境界線を定義するが、別の実施形態においては、他のバーストモードの定義が使用されうる。
トークンベースの受付制御の概要
図2は、少なくともいくつかの実施形態による、トークンベースの受付制御機構の高次概観図である。トークンを含む単一のバケット202を使用する機構が、簡潔な説明のために示される。前述のように、いくつかの実施形態において、通常モード受付制御用の1以上のバケット、及びバーストモード受付制御用の1以上のバケット等、複数のバケットの組合せが使用されうる。当該機構によれば、データオブジェクト、オブジェクトパーティション、またはパーティションレプリカ等の特定の作業対象102に関連する受付制御目的のために設定されたバケット202(例えば、少なくともいくつかの実施形態において、ソフトウェアプログラム内にデータ構造として実装されうる論理コンテナ)には、矢印204Aにより示されるように、バケット初期化中にトークン208の初期セットが追加されうる。初期集合数は、例えば、作業量の予測、サービスレベル合意、該当するデータオブジェクトを所有または管理するクライアントにより指定されたプロビジョニング予算、または様々な実施形態におけるこのような要因の何らかの組合せに基づいて、決定されうる。いくつかの実施形態において、一部の種類のバケットに対し、初期集合数はゼロに設定されうる。いくつかの実装例においては、少なくとも1つのバケットの初期集合数は、当該バケットに設定された最大集合数に設定されうる。
描写された実施形態において、新規の作業要求170(ストレージオブジェクトまたはデータベースオブジェクトの場合は、読出し要求または書込み要求等)の指示が受付コントローラ180に受信されると、受付コントローラは、N個のトークン(Nは1以上であり、実行内容または構成パラメータに依存する)がバケット202に存在するか否か判断を試みうる。その数のトークンが当該バケットにおいて利用可能な場合、作業要求170は実行対象として受付または許可され、そして当該バケットからトークンが消費または除去されうる(矢印210)。Nトークンが存在しなければ、作業要求170は拒否されうる。例示的実施例において、作業要求170Aは受付けられ、作業要求170Bは拒否され、そして作業要求170C、170D、及び170Eは受付コントローラ180によりまだ検討されていない。
図3を参照して後述するように、バケット202は、矢印204Bにより示されるように、バケットに対応付けられた補充率等の構成パラメータに基づいて経時的に補充または再追加もされうる。いくつかの実装例において、トークン補充処理は消費処理と同時に起こりうる、または時間的に近接して行われうる。例えば、単一のソフトウェアのルーチン内で、要求を受付けることでNトークンが消費され、そして補充率及び前回バケットが補充されてから経過した時間に基づいてMトークンが追加されうる。同様に後述されるように、いくつかのシナリオにおいて、いくつかのバケットはまた、他のバケットの未使用のトークンの数に基づいて追加されうる。いくつかの実施形態において、例えば構成パラメータを使用して、バケットが保持してもよいトークン最大数、及び/またはトークン最小数が制限されうる。異なる実施形態において、特に所定のオブジェクトまたはリソースに対し受付を制御するために多数のバケットが一緒に使用された時に、構成パラメータ設定の様々な組合せを利用して、かなり高度な受付制御スキームが実行されうる。
単純な一例示的シナリオにおいて、毎秒100作業要求という安定した負荷に対応するために、図2のバケット202は、初期集合数が100トークン、最大許容集合数が100トークン、そして最小許容集合数がゼロトークンに設定されうる。Nは1に設定され、そして補充率は毎秒100トークンに設定され、10ミリ秒毎に一度、1トークンが補充目的で追加されうる(最大集合数制限を超えないという前提)。作業要求170が到着すると、各作業要求に1トークンが消費されうる。各秒均一に分散した毎秒100作業要求という定常作業量が適用される場合、補充率及び作業量到着率は釣り合いうる。いくつかの実施形態において、上記のバケットパラメータを考慮した場合、このような定常作業量は無期限に対応されうる。
上記の実施例を拡張させて、到着率及び/または補充率が均一でないとすると、一部の(一般に短い)時間間隔においてバケット202が空の状態になるシナリオが起こりうる(例えば、ある急速に連続した作業要求のセットにより、補充機構が元に戻すことのできるトークン数より多くのトークンが消費される場合)。このような事例において、単一のバケット202のみが受付制御に使用されている場合、到着する作業要求は拒否されうる(または延期後再試行されうる)。作業量の時間的不均一性に対処するために、図1bを参照して説明されたように、追加バーストモードトークンバケットの使用等、異なる実施形態において様々な技術が使用される。
図3は、少なくともいくつかの実施形態による、様々な種類の受付制御ポリシーを実施するのに使用されうるバケット202等のトークンバケットの例示的構成プロパティ302を示す図である。いくつかの実装例において、トークンバケットは、受付コントローラ180のインメモリデータ構造として実装され、必要に応じ永続的ストレージに書込まれうる。このようなデータ構造は、現在のトークン集合数、集合数が最後に修正された時間、及び/または図3に示される様々なパラメータ及びポリシーの値を表すフィールドを備えうる。
トークン消費ポリシー310により、受付制御ためのトークン消費方法が示されうる。いくつかの実施形態において、消費ポリシー310は、異なる受付前ポリシー及び受付後ポリシーを含み、及び/または他のバケットの状態もしくは作業対象の作動モードに依存しうる。例えば、一実施形態において、プロビジョン能力バケットPB(例えば、通常モードバケットセット120内)及びバーストモードバケットBB(例えば、バーストモードバケットセット125内)の、2つのバケットが所定の作業対象に対する受付制御に使用されうる。当実施例において実施されている受付前ポリシーに従って、新規の要求を許可するために、PBの集合数がチェックされ、少なくとも1トークンが存在するか否かが判定される。そして要求が許可された場合、受付後ポリシーに従って、PBの集合数は1つ削減されうる。PBがトークンを有する場合、要求を許可する前にBBの集合数はチェックされなくてもよい。しかしながら、要求が受付けられると、いくつかの実施形態において実施されている受付後ポリシーに従って、1トークンがBBからもなお消費されうる。実施例を続けると、これとは対照的にPBがトークンを全く有していない場合、作業対象はバーストモードにあるとみなされ、BBの集合数がチェックされ、BBが少なくとも1トークンを有するか否かが判定されうる。バーストモードの間、BBが利用可能なトークンを有する時のみ要求は許可され、要求が許可されると、BBからトークンが消費されうる。(いくつかの実装例においては、バーストモードの間に、要求受付の際にPBのトークン集合数も削減され、これによりPBの集合数がマイナスになる可能性がある。)いくつかの実施形態において、所定のバケットから、当該バケットの消費ポリシーに基づいて、異なる数のトークンが異なる種類の処理に対し消費されうる。いくつかの実施形態において、トークン消費ポリシーはまた、該当するデータオブジェクトがしばらく前から作業要求の対象ではなくなった場合、バケットからトークンが削除されるべきか否か(及びその消費率)を示す遊休中崩壊パラメータ、または、ある時間間隔においてトークンが使用されなかった場合、1つのバケットから別のバケットへトークンを譲渡すべきか否かを示す遊休時譲渡パラメータを指定しうる。一実施形態において、老朽ポリシーは、特定の時間間隔に消費されなかったトークンを消費するために使用されうる。例えば、各トークンは有効期間に対応付けられ、この期間を過ぎるとトークンは受付制御目的に使用できなくなる。本明細書において、所定のカテゴリのバケットに適用可能なトークンポリシー(及び後述されるような様々な他のポリシー)は、カテゴリに基づいた名称により特定されうる。例えば、通常モードバケットに適用可能な消費ポリシーは通常モード消費ポリシーと称され、そしてバーストモードバケットに適用可能な消費ポリシーはバーストモード消費ポリシーと称されうる。
描写された実施形態において、プロパティ302は、開始時または初期化時にバケット内に配置されるトークン数を示す初期トークン集合数パラメータ306を含みうる。トークン補充ポリシーパラメータ314は、例えばバケットに対応付けられた作業対象に設定された作業率を維持するのを支持するために、バケットにトークンが追加される率、及び/またはバケットにトークンが追加される状況を示しうる。いくつかの実施形態において、バケットの1以上のパラメータは時間と共に変更されうる。例えば、デフォルトの補充率がバケットに適用されるが、特定の条件下では非デフォルト率が使用されうる。最大集合数パラメータ318はバケットの最大能力を示し、そして最小集合数パラメータ322はバケットの集合数の下限を示しうる。いくつかの実装例において、一部の状況下でバケットの集合数は、マイナスになるとみなされうる(例えば、最小集合数はゼロ未満になりうる)。例えば、作業対象が読出し及び書込み等の入出力処理に対応する一実施形態において、受付コントローラ180は、簡潔化のため、受信クライアント要求はそれぞれおよそ1個の実入出力処理に至ると推測または推定しうる。しかしながら、処理要求Rを受付けた後、いくつかの事例においてRを許可した結果必要となる実作業量は、推測した1入出力処理よりも実質的に大きくありうる。例えば、1読出し処理で遂行されると予測した読出し要求は、最終的に1000読出し処理を要するテーブル走査処理になりうる。このようなシナリオにおいて、予期せぬ追加作業の影響がその後の受付制御判断に確実に反映されるように、追加作業に対応するある数のトークン(例えば、1000−1=999トークン)がバケットから差し引かれ、当該バケットのトークン数は少なくとも一時的にマイナスになりうる。トークン数は、例えばバケットの補充率及び受信要求率に基づいて、最終的にはプラスに戻りうる。トークン不足ポリシーパラメータ324は、トークン不足(すなわちマイナス集合数)が許容される状況、不足状態が許容される時間の長さ、不足から回復するために取られるべき処置等に関する規則を指定しうる。いくつかの実施形態において、異なる種類の処理は異なる受付制御規則を有し、そしてバケットが使用される処理の種類は、適用処理種類パラメータ326において指定されうる。少なくともいくつかの実施形態において、バケットのトークンの使用に関してクライアントに請求する金額を決定するために使用されうる1以上の価格設定ポリシー328が、バケットプロパティ内に示されうる。価格設定ポリシー328が含みうる例示的要素の種類は、図17に示され、さらに詳しく後述される。異なる実施形態においては、図3に示される例示的パラメータのサブセットのみが使用され、一方別の実施形態においては、図3に示されるパラメータ以上の追加バケット構成パラメータが使用されうる。少なくともいくつかの実施形態において、図3に示される様々なプロパティの値及び/または設定は、バーストモード作動に対応するか否かといった他の受付制御設定と同様に、プログラムで設定または修正されうる(例えばウェブサービスコールを使用して)。
未使用トークンの貯蓄
いくつかの実施形態において、適用補充率に従って、定期的に、または作業要求に対する受付制御判断の完了または開始等のトリガーイベントに応じて、所定のトークンバケットにトークンが補充されうる(すなわちバケットにトークンが追加されうる)。このような実施形態において、例えば前の時間間隔において作業要求が平均的にプロビジョン能力より低い率で到着したため、通常モードトークンバケットが、補充される時点でいくつかの未使用トークンを有する場合がありうる。一実施形態において、1以上のバケットからの未使用トークンは、例えばバースト時に後ほど使用できるように、1以上の他のトークンバケットに貯蓄または蓄積されうる。図4は、少なくともいくつかの実施形態による、プロビジョン能力バケットからバーストバケットへ未使用トークンの蓄積の実施例を示す図である。
図4に描写された実施形態において、通常モードバケットセット120は、最大トークン集合数Mが設定されたプロビジョン能力バケット420を備え、一方バーストモードトークンバケットセット125は、M以上の最大トークン集合数Bが設定されたバーストモードバケット422を備える。矢印452で示されるように、プロビジョン能力バケット420は、最大集合数Mを条件に、プロビジョン能力prと等しい率で補充される。従って、例えばprが100処理/秒、M=100、かつ毎秒一度補充処理が行われる場合、毎秒最大100トークンがバケット420に追加されうる。矢印454で示されるように、受信した作業量要求に基づいた率で、バケット420からトークンが消費されうる。2つの時点、T1及びT2(T2はT1の1秒後)を考察する。T1の時点でバケット420は100トークンを有し、そして次の秒の間にそのうちの75トークンが、受信作業要求170に関連する受付制御処理に消費されたと仮定する。当実施例シナリオにおいて、T2の時点でバケット420はまだ25未使用トークンを有する。
描写された実施形態において、矢印460で示されるように、このような未使用トークンはバーストモードバケット422に蓄積されうる。実施例を続けると、従ってT2の時点で25トークンがバケット422に追加されうる。さらに、描写された実施形態において、矢印456で示されるように、トークンは、プロビジョン率prの関数でもありうるバケット422の補充率で(最大集合数限度Bを条件に)バケット422に追加されうる。バーストモード処理の間、作業要求の到着率に基づいた率で、バケット422からトークンが消費されうる。図4の矢印458で示されるように、少なくともいくつかの実施形態において、作動モードに関係なく、作業要求の到着率に基づいて、バケット422からトークンが消費されうる。例えば、作業要求が実行対象として受付けられる度に、通常モードバケット420からいくつかのトークンが消費され、そしてバーストモードバケット422からいくつかのトークンが消費されうる。いくつかの実施形態において、到着率に関係なく、かつ他の受付制御設定に関係なく、作業対象に使用されるコンピューティングデバイスのハードウェア及び/またはソフトウェアの限度に基づく所定の最大対応可能率より高い率では、作業要求を受付けられないことに留意されたい。このような最大限度は、例えば、コンピューティングデバイスに対応能力を超えるストレスが加わっている場合、コンピューティングデバイス上のデータが壊れないように守るために設定されうる。
図4に描写された実施形態において、バーストモードバケット422の集合数は、バケット420においてますます多くのトークンが未使用になるにつれ、経時的に増加する(最大集合数限度B、及び受付済作業要求に対するバーストモードトークンの消費を条件として)。これにより受付コントローラ180は、バケット422の補充率のみがバケット422の集合数に貢献している時に対処可能なバーストよりも、大きいバーストに対処可能になる。未使用トークンを後ほど使用するために貯蓄するこのような技術は、クライアントがプロビジョン能力だけでなくバーストモード処理に関しても請求される実施形態において、バケット間で未使用トークンを物理的に譲渡することでクライアントが全体の費用を削減できるため、特に役立つ。いくつかの実施形態において、同様の種類の未使用トークンの譲渡もまた、他の譲渡元及び譲渡先バケットペアにより対応されうる。例えば、個別のトークンバケットが作業要求のそれぞれのカテゴリに対し保持され、そして特定カテゴリC1用のバケットから未使用トークンが別のカテゴリC2用のバケットへ譲渡されうる。
特定の種類の処理用のトークンバケット
いくつかの実施形態において、所定の作業対象は、異なるカテゴリの処理の作業要求に対応しうる。例えば、一実施形態において、データベーステーブルは読出し及び書込み処理に対応する。「書込み処理」または「書込み」という用語は、データベーステーブル、ファイル、または値等のオブジェクトのデータ及び/またはメタデータに、例えば作成(新規または追加データの書込み)、更新(インプレース上書きまたは例えば一部のライトワンス環境においてデータの新バージョンの作成を伴う既存のデータへの変更)、削除、名前の変更、及び/または移動を含む修正が行われる処理を指しうる。「読出し処理」または「読出し」という用語は、修正を伴わない処理を指しうる。書込み要求に応えるために必要となる総作業量は、読出し要求に応えるために必要となる作業量とは異なりうる。例えば、いくつかの実施形態において、所定のデータベーステーブルまたはテーブルパーティションの多数のレプリカが保持されるため、書込み作業要求が完了したとみなされるには、複数のレプリカにおいて書込みを完了する必要があり、これに対して読出し要求はたった1つのレプリカにのみアクセスすることが求められうる。いくつかの実装例において、書込み処理はログをとる必要があり、またはインデックス変更等の他の副作用を有しうる。しかし読出し処理にこれらは必要ないだろう。その結果、所定作業対象における読出し処理能力は、その書込み処理能力と異なりうる。従って、受付制御判断に関して、読出しと書込みの扱いは異なりうる。図5は、少なくともいくつかの実施形態による、読出し及び書込みの受付制御のためのそれぞれのトークンバケットの使用を示す図である。
描写された実施形態において示されるように、通常モードバケットセット120は、読出しプロビジョン能力バケット502と、別の書込みプロビジョン能力バケット504とを備える。バーストモードバケットセット125は、読出しバーストバケット506と、書込みバーストバケット508とを備える。作業要求が到着すると、受付コントローラは、作業要求が読出しであるか書込みであるか判定し、そして該当する種類のバケットのトークン集合を使用して、(a)当該作業要求を受付けると通常モード作動になるか、バーストモード作動になるか、そして(b)当該作業要求を受付けるのに、適切なバケットにおいて消費に十分なトークンが利用可能であるか否か、を判定しうる。描写された実施形態において、読出しバケットにおけるトークンの消費及び/または補充は、書込みバケットにおける消費及び/または補充から独立しており、そして図3に描写された一部または全てのプロパティ及びポリシーは、各種類のバケットに対し独立して設定されうる。従って、所定の時点において、作業対象は、読出しに関して通常モードで、書込みに関してバーストモードである、またはその逆(すなわち、書込みに関して通常モードで、読出しに関してバーストモード)である場合がありうる。作業対象はまた、読出し及び書込みの両方に関して通常モードでありうる、または読出し及び書込みの両方に関してバーストモードでありうる。いくつかの実施形態において、未使用のトークンは、読出しバケットから書込みバケットへ、またはその反対に譲渡されうる。例えば、図5に描写された実施形態において、時間間隔の終わりに書込みバーストバケット508にいくつかのトークンが未使用のまま残っている時、該当する数のトークンは、読出しバーストバケット506の集合数が閾値を下回る場合に、読出しバーストバケット506へ追加されうる。
共有リソース及び複製管理
いくつかの実施形態において、各作業対象に対し、図4及び5に示される種類のバーストモードトークンバケットのそれぞれのセットが確立されうる。少なくともいくつかの実施形態において、データベーステーブルまたはテーブルパーティション等の所定の作業対象は、他の作業対象により共有される少なくともいくつかのリソースを使用しうる。例えば、テーブルTable1の一部は、テーブルTable2の一部と同じストレージデバイス上に配置されうる。受付制御判断を下す際、作業対象を実行するネットワークアクセス可能なサービスは、共有リソースの能力も考慮に入れる必要がありうる。例えば、一実装例において、所定のストレージデバイスは毎秒N読出し処理以下に対処可能であり、そして当該ストレージデバイスが2つの異なる作業対象WT1とWT2に使用される場合、1つの対象(WT1)の利用可能読出し処理能力は、もう片方の対象(WT2)の読出し作業量に影響されうる。いくつかの実施形態において、多数の作業対象により共有されるリソースの利用可能処理能力が、自身のトークン集合数により表される共有リソースバケットは、各作業対象におけるバーストモード受付制御判断に使用されうる。後述されるように、作業対象の多数のレプリカが保持される実施形態において、特定の種類の作業要求(書込み処理につながる要求等)に対し、複製管理に対応付けられた1以上のバケットも使用されうる。いくつかの実施形態において、複製管理バケットは、いくつかの種類の作業要求の受付制御にのみ使用されうる。例えば、このような実施形態において、これらの複製管理バケットは書込みに使用され、読出しには使用されない。図6は、少なくともいくつかの実施形態による、1以上のローカルバースト限度バケット604と、1以上の共有リソース能力バケット606と、1以上の複製管理バケット608とを含むバーストモードトークンバケットセットを示す図である。
図6に示される三種類のバーストモードトークンバケットは、受付制御のために集合的に使用され、例えば、各種類のバケットは利用可能なトークンがあるか順番に確認され、そして全ての関連バケットがそれぞれのトークン消費ポリシーに従って十分なトークンを含んでいる場合にのみ、作業要求170は受付けられる。異なる実施形態において、異なるバケットが受付制御のために確認される順番は異なる。ローカルバースト限度バケット604は、例えば共有リソースの処理能力限度を考慮せず、かつ複製を考慮せず、孤立しているとみなされる作業対象の利用可能処理能力を表すトークンを含みうる。一実施形態において、作業要求が受信されると、ローカルバースト限度バケット604(複数可)がまず確認されうる。ローカルバースト限度バケットが十分なトークンを含む場合、共有リソース能力バケット606が次に確認されうる。共有リソース能力バケットに十分なトークンが確認され、かつ作業要求に応じることでデータ複製が要求される場合、複製管理バケット608が次に確認されうる。描写された実施形態において、全ての確認済みバケットが十分なトークンを含む場合、作業要求が受付けられうる。確認済みバケットのいずれか1つでも十分なトークンを含まない場合、作業要求は拒否、延期、または再試行されうる。
ローカルバースト限度バケット604が十分なトークンを含まず、示される他の種類のバケットより前に確認されるシナリオにおいて、共有リソース能力バケット606及び/または複製管理バケット608がそれぞれの消費ポリシーに基づいて要求を受付けるのに十分なトークンを含んでいても、作業要求は拒否されうる。いくつかの実施形態において、各ローカルバースト限度バケット604は読出し要求及び書込み要求のために保持され、及び/または各共有リソースバケット606は読出し要求及び書込み要求のために保持されうる。
いくつかの実施形態において、受付制御中に、例えば共有リソースバケットのそれぞれのインスタンスを使用して、いくつかの異なる種類の共有リソースが考慮されうる。例えば、一実施形態において、読出し処理を行うのに必要なメモリバッファの限定数は、作業対象が実装されたサーバにおいて入手可能であり、そして利用可能メモリバッファを表す共有リソース能力バケット606が確立されうる。同様に、別の実施形態において、データ構造の種類(作業対象に使用されている所定のオペレーティングシステムのインスタンスにおいてその限定数が入手可能なファイル記述子等)が各作業処理に使用され、そして利用可能ファイル記述子を表す別の共有リソース能力バケット606が確立されうる。さらに詳しく後述されるように、いくつかの実施形態において、1以上の共有リソースの余剰処理能力(リソースを共有する作業対象のプロビジョン能力の合計に相対する)を表すトークンが、反復手法を使った公平な方法で作業対象間に分配されうる。
一実施形態によれば、作業対象(データベーステーブル、ファイル、またはストレージボリューム等)のコンテンツが、サービスによって1以上の論理パーティションに分配されうる。例えば、データベースサービスのクライアントにより、テーブルはおよそXテラバイト(TB)のデータを保有可能であり、かつ毎秒Y読出しまたは書込み処理の作業量に対応可能であることが指定されうる。そしてデータベースサービスにより、P個の論理パーティションを有するテーブルを設定することが決定され、各論理パーティションがX/Pテラバイト(TB)のデータを記憶し、かつY/P処理というプロビジョン能力限度に対応するのに十分なリソースが、各論理パーティションに最初に割当てられる。(いくつかの実施形態において、例えば、一部のパーティションが他のパーティションに比べて「より負荷の高い」、すなわちより高い平均要求率を有することが検知、または予測された場合に、パーティション間でプロビジョン処理能力の不均一な分配が行われうる。)少なくともいくつかのこのような実施形態において、受付制御判断が論理パーティションレベルで行われうる。各論理パーティションに対応して、データオブジェクトに対するデータ耐久性ポリシーまたはデータ複製ポリシーに従って、パーティションのデータのマスタレプリカと1以上のスレーブレプリカが設定されうる。機器故障、電力損失、及び/または自然災害等の要因によるデータ損失の確率を閾値未満に保つために、耐久性/複製ポリシーは、データ書込みが十分な数の別の物理的位置に確実に複製されるように設計されうる。いくつかの実施形態において、書込み要求に対する受付制御判断はマスタレプリカにおいて行われ、一方読出し要求に対する受付制御判断はマスタレプリカ、またはスレーブレプリカ(特にクライアントが少し古い可能性のあるバージョンのデータからの読出しでも受入れる場合)のいずれかで行われうる。いくつかの実施形態において、クライアントからの書込み要求が受付けられると、複製ポリシーに従って、例えば、書込みが成功したという肯定応答がクライアントに提供される前に、N個のレプリカ(マスタレプリカとN−1個のスレーブレプリカ)において修正データの複製が無事に完了される必要があるだろう。よって、書込み要求の正常完了にはスレーブリソースの使用が必要になるため、書込みに関する受付制御判断中に、スレーブ(複数可)における利用可能処理能力が(マスタと同様に)考慮される必要があるだろう。一実施形態において、設定されたスレーブレプリカの数は、複製ポリシーで求められる最小数を超えうる。複製ポリシーは、書込みが成功したとみなされる前に、書込みの定足数Q個の永続的コピーが作成されることを要求しうるため、最小(Q−1)個のスレーブレプリカが必要となる可能性がありうる。しかしながら、このような実施形態において、読出し負荷の均衡、高い可用性等の様々な理由から、保持されるスレーブレプリカの数はQ−1を超えうる。様々な実施形態において、特定のレプリカのスレーブまたはマスタ指定は、時間と共に変化しうることに留意されたい。例えば、所定の論理パーティションのマスタがインスタンス化されたデバイスが故障、または到達不可能になった場合、前にスレーブとして指定された別のレプリカがマスタとして選択されうる。いくつかの実施形態において、スレーブレプリカの数は、例えば、データオブジェクトを所有するクライアントからの要求に応じて、当該データオブジェクトの存続期間中に変更されうる。レプリカが必ずしもマスタまたはスレーブとして指定されないいくつかの実施形態において、ピアツーピア環境においても、トークンベースの受付制御に関する技術が適用されうる。このような実施形態において、受信書込み要求に対する受付制御判断が行われたレプリカは、本明細書に説明されるように(行われる処理の種類に関して)マスタレプリカに該当しうる。従って、レプリカが概してお互いに同等な責任を有するピアツーピア複製を使用するいくつかの実施形態において、所定のピアP1に書込み要求が受信された場合、少なくとももう1つのピアP2の利用可能処理能力に関する情報を使用して、書込み要求を実行対象として受付けるか否かが判断されうる。
前述のように、書込みが複製される少なくともいくつかの実施形態において、書込みの受付制御中に、複数のレプリカ(例えばマスタと少なくとも1つのスレーブ)における利用可能処理能力が考慮される必要があり、これに応じて1以上の複製管理バケット308が使用されうる。例えば、ローカルバースト限度バケット604は孤立しているとみなされるマスタレプリカにおける利用可能処理能力を表しうるが、複製管理バケット308はマスタから見た1以上のスレーブレプリカにおける利用可能処理能力を表しうる。
少なくともいくつかの実施形態において、複製管理バケット608(複数可)におけるスレーブ(複数可)の状態の情報をリフレッシュするために、スレーブ能力更新プロトコルが使用されうる(例えばマスタにおける複製管理バケット608(複数可)のトークン集合数が、スレーブから受信した情報に基づいて更新されうる)。いくつかの実施形態において、マスタでバケットが使用される方法と同様の方法で(ただし同一ではない)、スレーブにおいてもトークンバケットが処理能力管理のために使用されうる。このような一実施形態において、スレーブ能力更新プロトコルに従って、スレーブはマスタに対し、1以上のスレーブローカルトークンバケット(プロビジョン能力バケット及び/またはバーストモードバケットを含みうる)の集合数スナップショット(すなわち時点表示)を提供しうる。例えば、マスタにおける共有リソース能力バケット606と同様に、1つの特定スレーブ側トークンバケットは、少なくとも一部のスレーブデータが記憶される共有ストレージデバイスにおける利用可能能力を表し、そしてこのようなバケットの集合数のスナップショットがマスタに提供されうる。異なる実施形態において、スレーブからスナップショットを提供するために、様々な手法のいずれかが使用されうる。例えば、マスタにより書込み複製が要求された場合、スナップショットはスレーブからマスタへ送る書込み肯定応答に添付またはピギーバックされうる、またはスレーブはスナップショットを、マスタに当該スレーブが稼働していることを知らせるためにマスタへ送られる必要のあるハートビートメッセージに添付しうる。
複合トークンバケット
前述のように、異なる種類の作業要求到着バーストがネットワークアクセス可能なサービスに与える影響は異なりうる。サービスは非常に高いバースト率を短い時間対処可能であるが、より低いバースト率には長い時間耐えうる。いくつかの実施形態において、受付コントローラ180は、異なる種類のバーストがサービスに与える影響に基づいて、異なる種類のバーストの継続時間を限定するように構成され、そして受付制御を支援するためにバースト時作業要求到着様態は複数のカテゴリに分類されうる。図7は、少なくともいくつかの実施形態による、受付制御のための作業要求バーストのカテゴリ分類の実施例を示す図である。
図7において(図1aと同様に)、X軸は時間を表し、Y軸は所定の作業対象102における作業要求到着率110を表す。例えば、毎秒(または毎N秒)受信される作業要求の数を監視し、1秒あたりの要求数を計算し、そして時間間隔毎の1秒あたりの要求数を表す点をつなぐことで、図7のようなグラフがプロットされうる。作業対象のプロビジョン能力112は、Y軸にprにおいて交差する水平線により表される。作業対象は、到着率がpr以下である限り通常モードで作動し、そして到着率がprを上回る度にバーストモードで作動すると想定される。作業対象は、T0からT7までの時間に、T0とT1の間の時間帯、T2とT3の間の時間帯、T4とT5の間の時間帯、及びT6とT7の間の時間帯等、いくつかの時間帯で通常モードにある。しかしながら、3つの時間帯(T1からT2、T3からT4、及びT5からT6)において、作業対象はバーストモードにある。グラフで表されるバーストB狭幅1(T1−T2間隔)とB狭幅2(T5−T6間隔)の形は同様であり、どちらの形もバーストB広幅1の形とは異なる。バーストピーク率702A(B狭幅1の間の最大作業要求到着率)及びバーストピーク率702C(B狭幅2の間の最大作業要求到着率)は、バーストピーク率702B(B広幅1の間の最大作業要求到着率)より大幅に高い。
描写された実施形態において、受付コントローラ180は、2つの基礎トークンバケットを含む複合バーストモードトークンバケットを維持するように構成されうる。後述されるように、基礎トークンバケットの1つは、プロビジョン能力prと比べて非常に高い到着率の短期バースト(B狭幅1またはB狭幅2等)を許可するために、かつこのような高い到着率が非常に長く続くことを防止するためにも使用されうる。複合トークンバケットのもう1つの基礎トークンバケットは、B広幅1等のより低いピーク率でより長いバーストを許可するために使用されうる。適用可能なパラメータ及び/またはポリシー(例えば、補充率)は、基礎バケットにより異なる。少なくともいくつかの実施形態において、バーストモードの間に作業要求を実行対象として受付けるために、両方の基礎バケットからトークンが消費されうる。
図8は、少なくともいくつかの実施形態による、バーストモード受付制御のためのピークバーストバケット(PBB)802と持続バーストバケット(SBB)804とを含む複合トークンバケット801の使用の実施例を示す図である。描写された実施形態において示されるように、複合トークンバケット801は、作業対象102のためのバーストモードトークンバケッセット125の一部を成す。各バケット802と804は各自のバースト率(バケットがモデルとする最大到着率を表す)及び各自のバースト時間窓(モデルにされたバーストの継続時間を示す)により特徴づけられる。ピークバースト率(pbr)パラメータは、PBBを使って対応する最大到着率を表し、ピークバースト時間窓サイズ(pbw)パラメータは、作業対象がこのような到着率に対応可能であるべき継続時間を示す(補充処理なし等の特定条件を仮定する)。持続バースト率(sbr)パラメータは、理想的には長い持続バースト時間窓(sbw)の間対応するべきバースト到着率(pbrより低い)を表す。様々な実施形態において、それぞれの時間窓は一般に、それぞれのバケットがバーストに対応する継続時間の相対的長さを示しうる一方、実際にそれぞれの率のバーストに対応する実継続時間は、時間窓に必ずしも一致し得ないことに留意されたい。よって、少なくともいくつかの実施形態において、時間窓は、対象とするバーストの継続時間を示すと言われうるが、必ずしも実バースト継続時間に等しいわけではない。PBB802とSBB804の最大トークン集合数は、バースト率と時間窓の積を計算することで事例ごとに取得される。例えば、PBBの最大集合数は(pbr*pbw)であり、そしてSBBの最大集合数は(sbr*sbw)である。矢印856、858により示されるように、複合バケット801の各バケットから実際にトークンが消費される率は、作業要求の到着率(少なくともバーストモードの間に、そしていくつかの実施形態においては作業対象がバーストモードと通常モードのどちらにあるのか関係なく)に依存しうる。少なくともいくつかの実施形態において、要求が受付けられると、PBB802及びSBB804の両方からトークンが消費される。すなわちPBB及びSBBからトークンが消費される率は同一である。
非常に高い到着率のバーストの長過ぎる持続を確実に許可しないために、所定の作業要求を実行対象として受付ける際、描写された実施形態の各バケットからトークンが消費されうる。前に提供した実施例を繰り返すと、プロビジョン能力(pr)が毎秒100処理(100処理/秒)であり、ピークバースト率(pbr)が1000処理/秒であり、ピークバースト時間窓サイズ(pbw)が6秒であり、持続バースト率(sbr)が200処理/秒であり、そして持続バースト時間窓サイズ(sbw)が60秒であるシナリオを考察する。従って、PBBの最大集合数は1000*6、すなわち6000トークンであり、またSBBの最大集合数は、200*60の積、すなわち12000トークンに設定される。例示的シナリオにおいて、所定の要求を受付けるために、PBBとSBBに対しそれぞれ1トークンが要求される。PBB及びSBBの両方が満杯である(PBBは6000トークンを有し、SBBは12000トークンを有する)時間Tに始まる作業要求Bのバーストを考察する。そしてPBBは毎秒200トークン補充され、一方SBBは毎秒100トークン補充されると仮定する。バーストBが1000要求/秒の要求到着で構成されている場合、PBBの集合数が毎秒約800トークン(1000消費し、200補充される)の率で減少し、一方SBBの集合数が毎秒約900トークン(1000消費し、100補充される)減少するため、Bの要求は7から8秒の間受付けられうる。この時間を過ぎると、複合バケットは1000要求/秒に対応不可能になる。しかしながら、バーストBが毎秒200要求の要求到着で構成されている場合、PBBは毎秒正味トークンの損失はなく(200消費し、200補充される)、一方SBBは毎秒100トークン(200消費し、100補充される)損失しうる。このように当例示的シナリオにおいて、より低いバースト率(200要求/秒)は、急激なバースト(7から8秒間の1000要求/秒のバースト)より、長い時間(120秒)対応しうる。
前述のように、様々な実施形態において、複合トークンバケット801の当例示的使用に関する算術は、到着率の変動、作業対象の通常モードへの復帰、及び/または異なる種類の要求に対し異なる数のトークンを必要とする消費ポリシー等の様々な要因により、実際さらに複雑でありうる。
描写された実施形態において、例えばPBBの補充率は、プロビジョン能力prの関数(f1(pr))であり、そして作業対象のプロビジョン能力バケットにおける未使用トークンの数「u」の関数(f2(u))である。同様に、SBBの補充率は、プロビジョン能力の関数(f3(pr))及びuの関数(f4(u))である。一実装例において、PBB、SBB、またはこれら両方のいずれかの補充率は、プロビジョン能力バケットにおける未使用トークンの絶対数に基づく代わりに、未使用トークンがプロビジョン能力バケットに蓄積する率に基づきうる。いくつかの実施形態において、前の実施例のように、PBBの最大集合数はSBBの最大集合数よりも小さく設定されうる一方、PBBの補充率はSBBの補充率よりも高く設定されうる。異なる実施形態が、様々な種類の関数f1、f2、f3、f4の所望する任意の組合せを使用しうる。
様々な実施形態において、パラメータ(pbr、pbw、sbr、及びsbw等)並びに関数(f1、f2、f3、及びf4)の定義は調整可能または設定可能である。例えば受付コントローラ180は、パラメータの値及び関数の定義を、設定ファイルから、またはネットワークアクセス可能なサービスの管理者からの入力により、特定するように構成されうる。受付コントローラは、パラメータ値及び関数を特定し、最大集合数を計算または設定し、パラメータ通りにバケット802、804にトークンを追加し、そして受信作業要求を待ち受けうる。バーストモードの間に作業要求が受付けられると、PBB及びSBBのいずれか、またはこれら両方のトークン集合数に少なくとも一部基づいて、作業要求は実行対象として受付けられうる(または拒否されうる)。作業要求が受付けられた場合、PBB及びSBBの2つのバケットのそれぞれの消費ポリシーに基づいて、1以上のトークンがPBB、SBB、またはこれら両方のいずれかから消費されうる。図12に関してさらに詳しく後述されるように、PBB及びSBBは、様々な時点においてそれぞれの補充率に基づいて補充されうる。少なくともいくつかの実施形態において、関数f1、f2、f3、及びf4のうちのいくつかは、同一の関数でありうる。例えばf1(pr)=prの場合に同一の関数でありうる。一実施形態において、関数f1、f2、f3、及びf4のうちのいくつかは、別の一部の関数と同一でありうる。例えば、この4つの関数は異なるという要件はないだろう。いくつかの実施形態において、プロビジョン能力バケットの未使用トークンの数「u」は補充率に寄与し得ない。例えば、補充率は未使用トークンの蓄積とは無関係である場合もありうる。少なくともいくつかの実施形態において、PBB及び/またはSBBは、通常モードで作動中に、これらの補充ポリシーに従って(及びこれらの最大トークン集合数限度を条件に)補充され、作業要求到着率がバーストモードの閾値より低い間でも、PBB及び/またはSBBにトークンが蓄積される。このような通常モードの間のバーストモードバケットの補充は、例えばシステムが今後のバーストに対処できるように準備をするのに役立ちうる。
いくつかの実施形態において、作業対象を実行するサービスは、異なる作業要求カテゴリに対するそれぞれのパラメータセットを使用して、ピーク及び持続バーストモードの受付制御を行うことを所望しうる。例えば、読出しには、書込みとは異なるピークバースト率(または持続バースト継続時間)の使用が適切でありうる、または優先度ベースのそれぞれの作業要求カテゴリには、異なるピークバースト率(または持続バースト継続時間)の使用が適切でありうる。例えば、極めて時間依存性の高いある作業要求カテゴリに対し、他の時間依存性の低い作業要求カテゴリと比べて、より高いピークバーストに対応できることがサービスで所望されうる。いくつかの実施形態において、受付コントローラ180は、複数の複合バケットを実行して、このような使用事例に対処しうる。図9は、少なくともいくつかの実施形態による、作業処理のそれぞれのカテゴリ専用のピークバースト及び持続バーストバケットの使用を示す図である。
描写された実施形態において示されるように、バーストモードバケットセット125には、そのローカルバースト限度バケット604集合の中に、それぞれ1以上の作業要求カテゴリ専用の複合バケット801A、801B、及び801Cを含む複数の複合バケット801が含まれうる。例えば、複合バケット801Aは、カテゴリC1の要求に対する受付制御のために使用され、複合バケット801Bは、カテゴリC2の要求に対する受付制御のために使用され、そして複合バケット801Cは、カテゴリC3及びカテゴリC4の要求に対する受付制御のために使用されうる。異なる実施形態において、カテゴリの定義はサービスに依存しうる。例えば、1つのサービスでは、行われる処理の種類に基づいてカテゴリが定義され(例えば読出し及び書込みは別のカテゴリになりうる)、別のサービスでは、リソースの平均消費量に基づいてカテゴリが定義され(例えば、短い処理対長い処理)、別のサービスでは、クライアントが指定した優先度またはサービスが割当てた優先度に基づいてカテゴリが定義されうる。
各複合バケット801は、pbr、pbw、sbr、及びsbwのパラメータ設定のそれぞれの(異なりうる)セットを有する、少なくとも1つのPBB802と少なくとも1つのSBB804とを含みうる。例えば、複合バケット801AはPBB802AとSBB804Aとを含み、複合バケット801BはPBB802BとSBB804Bとを含み、一方複合バケット804CはPBB802C、802Dと単一のSBB804Cとを含む。複合バケット801Cの場合、カテゴリC3の作業要求のバーストモード受付制御は、PBB802C及びSBB804Cを使用して管理され、一方カテゴリC4の作業要求のバーストモード受付制御は、PBB802D及び共有SBB804Cを使用して対処される。従って、当例示的シナリオにおいて、カテゴリC3のバーストモード作業要求が受信されると、PBB802C及びSBB804Cの集合数が確認され、そしてカテゴリC4のバーストモード作業要求が受信されると、PBB802D及びSBB804Cの集合数が確認される。異なる作業要求カテゴリ(または作業要求カテゴリの組合せ)に対する個別の複合バケットを実行することで、サービスは、単一の複合バケットが使用された場合に実行可能なバーストモード様態の制御と比べて、より細やかな粒度でバーストモード様態を制御可能である。図9のバーストモードバケットセット125はまた、1以上の共有リソース能力バケット606(例えば、バーストモード受付制御中に共有リソースの能力限度を確実に考慮する)と、1以上の複製管理バケット608(例えば、複製する必要のある書込み等の処理に対する受付制御判断を、複数のレプリカにおける利用可能処理能力に少なくとも一部基づいて確実に行う)とを含みうる。
バーストモード受付制御の方法
図10は、少なくともいくつかの実施形態による、ネットワークアクセス可能なサービスにおいて作業要求に対しトークンベースの受付制御機構を実行するために行われうる処理態様を示すフロー図である。構成要素1001で示されるように、例えばクライアントからのプロビジョニング要求に応じて、作業対象に適用される通常モード処理能力限度が決定される。例えば、データベースサービスのクライアントが、毎秒N読出しまたは書込み処理に対応可能なテーブルが作成されるよう要求すると、これに応じて当該テーブルの通常モード処理能力限度はNに設定されうる。サービスの受付コントローラ180は、例えばデフォルト設定に基づいて、またはクライアントに要求されたもしくはクライアントと取り決めた要件に基づいて、通常モードバケットセット及びバーストモードバケットセットに使用される様々な他のパラメータ(バケットの数、初期トークン集合数、補充率等)を決定しうる。そして通常モードバケットセット120及びバーストモードバケットセット125のバケットは、例えばインスタンスが生成され、そしてトークンが追加される等、初期化されうる(構成要素1006)。
受付コントローラにおいて次の作業要求が受信される(構成要素1010)。少なくとも1つの通常モードバケットのトークン集合数が確認されうる。通常モードトークン集合数が閾値基準T1を満たす場合(構成要素1014にて検出)、1以上のトークンが通常モードトークンバケット(複数可)から消費され(すなわち、トークン集合数は変更されうる)、そして作業要求が実行対象として受付けられうる(構成要素1016)。単純な一実装例において、例えば、通常モードトークンバケットは、閾値基準Tを満たすために少なくとも1トークンを有する必要があり、そして受付済作業要求毎に1トークンが消費されうる。いくつかの実施形態において、通常モード作動中に作業要求が受付けられると、1以上のバーストモードバケットから(1以上の通常モードバケットからと同様に)トークンが消費されうる。一般に消費されるトークンの数は、バケット(複数可)で実施されているトークン消費ポリシーを含む様々な実施形態の要因の組合せに、及び/または作業要求に応じるために必要となりうる作業量の見積りに依存しうる。少なくともいくつかの実施形態において、受付コントローラ180は、例えばクライアントにより作業要求内で指定された詳細、過去に実際要求された同様の要求の作業量の蓄積された経歴または統計等に基づいて、このような見積もりを作成するように構成されうる。いくつかの実施形態において、実施されている補充ポリシーによって、様々なトークンバケット(例えば、通常モードバケット、バーストモードバケット、またはこれら両方のいずれか)は、受付制御判断が行われた時点で任意で補充されうる(すなわちこれらのバケットの補充ポリシー及び最大集合数限度に従って、これらのバケットにトークンが追加される)。図12に関して後述されるように、異なる実施形態において、トークンバケット補充につながる特定の時間またはイベントは異なる。通常モードトークン集合数が閾値基準T1を満たさない場合(同様に構成要素1014にて検出)、受付コントローラ180は、作業要求を受付けた場合に作業対象はバーストモード作動となり、これに応じて1以上のバーストモードトークンバケットのトークン集合数が特定されなくてはならないと結論付けうる。
描写された実施形態において、受付コントローラ180は、少なくとも1つのバーストモードトークンバケットのトークン集合数を特定しうる。バーストモードトークン集合数が閾値基準T2を満たす場合(構成要素1018にて判定)、1以上のトークンがバーストモードバケット(複数可)から消費され、そして作業要求がバーストモードにおける実行対象として受付けられうる(構成要素1020)。単純な一実装例において、例えば、バーストモードトークンバケットは、閾値基準T2を満たすために少なくとも1トークンを有する必要がありうる。従って、少なくともいくつかの実装例において、通常モード及びバーストモード両方のバケットに対するトークン集合数閾値が同じ場合もありうる。一般にバーストモードトークンバケットから消費されるトークンの数もまた、バーストモードバケット(複数可)で実施されているトークン消費ポリシーを含む様々な実施形態の要因の組合せに、及び/または作業要求に応じるために必要となりうる作業量の見積りに依存しうる。バーストモード受付判断が行われると、作業要求の通常モード受付に応じた処理の場合のように、1以上のバケットが、これらバケットの補充ポリシーに基づき、そしてこれらバケットの最大トークン集合数限度を条件に、任意で補充されうる。
通常モード(構成要素1016)またはバーストモード(構成要素1020)のいずれかで作業要求が受付けられると、作業要求に対応する1以上の処理が開始されうる(構成要素1022)。いくつかの実施形態において、処理が完了すると、受付コントローラ180は、実際に行われた作業量と、消費するトークン数を決定するのに使用された作業見積りを、非同期的に比較しうる(構成要素1024)。元の作業見積りが間違っていた場合、これに応じて、該当する作業要求の受付制御に使用された1以上のバケットにおけるトークン数が調整されうる。見積りが実際に行われた作業よりも小さい場合、受付制御に使用されたバケットから追加でいくつかのトークンが取除かれうる。いくつかの実施形態において、このように追加で消費されるトークンの数は、作業見積りと実作業の違いに基づいて計算されうる。見積りが大きすぎた場合、いくつかのトークンが受付制御に使用されたバケットから取除かれうる。
描写された実施形態において、通常モードトークンバケットセットの集合数が基準T1を満たさず、かつバーストモードバケットセットのトークン集合数が基準T2を満たさない場合、作業要求は拒否、延期、または再試行されうる(構成要素1080)。いくつかの実施形態において、作業要求を受付けない判断が下された場合、実施されている補充ポリシーによって、通常モードバケット(複数可)、バーストモードバケット(複数可)、またはこれら両方のいずれかに対し、1以上のトークンが任意で追加されうる。受付制御判断が行われた後(例えば、作業要求は受付けられたか、拒否されたかのいずれか)、受付コントローラは次の作業要求を待ち受け、そして構成要素1010以降に該当する処理が繰り返されうる。
図11は、少なくともいくつかの実施形態による、ネットワークアクセス可能なサービスにおいて、複合バケットを含む複数のバーストモードトークンバケットを使用してバーストモード処理に対処するトークンベースの受付制御機構を実行するために行われうる処理態様を示すフロー図である。構成要素1101に示されるように、受付コントローラ180は、所定の作業対象における高い到着率の短期バースト及び低い到着率の長期バーストのバーストモード受付制御に使用するいくつかのパラメータを決定しうる。決定されたパラメータには、例えば、対応するピークバースト率(pbr)、ピークバースト率に対応する継続時間を示すピークバースト時間窓サイズ(pbw)、持続バースト率(sbr)(一般にpbrより低いが、必須ではない)、及び持続バースト時間窓サイズ(sbw)(一般にpbwより小さいが、必須ではない)が含まれうる。少なくともいくつかの実施形態において、例えば共有リソース能力バケット及び/または複製管理バケットを含む他のバケットが設定されるべきか、様々なバケットの初期集合数設定等の他のパラメータもまた決定されうる。少なくともいくつかのパラメータは、例えば管理者による入力またはサービスのオートチューニングに応じて設定可能であり、そしていくつかの実装例において1以上のパラメータが設定ファイルを介して読み出されうる。
構成要素1106に示されるように、少なくとも1つのピークバーストバケット(PBB)と1つの持続バーストバケット(SBB)とを含む複合バケットは、例えばバケットのそれぞれの初期集合数306等のパラメータ設定に基づいてバケットのインスタンスを生成し、トークンを追加することで、初期化されうる。描写された実施形態において、PBBの最大トークン集合数はpbrとpbwの積に設定され、SBBの最大トークン集合数はsbrとsbwの積に設定されうる。PBB及び/またはSBBの補充率は、作業対象のプロビジョン処理能力に少なくとも一部基づいて設定されうる。いくつかの実施形態において、PBB及び/またはSBBの補充率は、プロビジョン能力バケットまたは別の通常モードバケットにおいて未使用トークンが蓄積する率、及び/またはこのようなバケットにおける未使用トークンの数にも基づきうる。
バーストモードの間に受付コントローラにて次のバーストモード作業要求が受信されうる(構成要素1110)(すなわち、作業要求が受信され、そして受付コントローラは、プロビジョン能力バケット等の通常モードバケットのトークン集合数を使用して、または作業対象の作動モードを示すある別のインジケータを使用して、作業対象がバーストモード状態にあると判定しうる)。受付コントローラはPBB及び/またはSBBのトークン集合数を特定し、消費ポリシー及び/または作業要求に対応付けられる見積作業量に基づいて、作業要求を受付けるのに十分なトークンが利用可能か否かを確認しうる。描写された実施形態において、PBB及び/またはSBBに十分なトークンが存在する場合(構成要素1114にて検出)、受付コントローラは、検討中の作業要求のために集合数を同様に確認する必要のある別のバケットがバーストモードトークンバケットセットに含まれるか否かを判断しうる。例えば、いくつかの実施形態において、バーストモードトークンバケットセットは、1以上の共有リソース能力バケット606及び/または1以上の複製管理バケット608を含みうる。追加のバーストモードトークンバケットが実装されていて、かつ作業要求に関連するこれらの残りのバーストモードトークンバケットのそれぞれに十分なトークンが確認される場合(構成要素1118にて検出)、各関連バケットから適切な数のトークンが消費され(例えば、適用消費ポリシーに従って)、そして作業要求が実行対象として受付けられうる(構成要素1120)。少なくともいくつかの実施形態において、いくつかの追加バーストモードトークンバケットは特定の作業要求カテゴリにのみ関連しうることに留意されたい。例えば、一実施形態において、複製管理トークンバケット608の集合数は、書込み要求受付制御のためにのみ確認され、このような実施形態において、読出し要求を受付けるか否か判断する際は確認され得ない。従って、いくつかの実施形態において、バーストモードトークンバケットが存在したとしても、受信された全ての作業要求の受付制御のために当該バケットが使用されなければならない、とは意味し得ない。
描写された実施形態において、複合トークンバケットペア(すなわちPBB及び/またはSBB)(構成要素1114にて検出)または関連追加バーストモードトークンバケット(構成要素1118にて検出)のいずれにおいても消費されるのに十分なトークンが利用可能でない場合、作業要求は拒否、延期、または再試行されうる(構成要素1138)。いくつかの実施形態において、作業要求が受付けられたか、拒否されたかに関係なく、受付制御に使用される1以上のバケット(例えば通常モードトークンバケットセット120のバケット及び/またはバーストモードバケットセット125のバケットを含む)は、受付制御判断が行われた後に、対応する補充ポリシーに従って補充されうる(構成要素1140)。所定の作業要求に対応する自身の処理を完了後、受付コントローラ180は次の作業要求が到着するのを待ち受け、そしてバーストモード時に受信された次の作業要求に対し、構成要素1110以降に対応する処理が繰り返されうる。
異なる実施形態において、トークン補充処理(すなわち所定のトークンバケットに対しトークンを追加する処理)は、異なるイベントに応じて、または異なるスケジュールに基づいて、行われうる。図12は、少なくともいくつかの実施形態による、受付制御のために行われうるトークンの消費、補充、及び譲渡処理の態様を示すフロー図である。構成要素1201に示されるように、受付コントローラは、バケット集合数の変更につながりうるトリガーイベントの種類を特定しうる(例えば、構成パラメータを調べることによって)。いくつかの実施形態において、新規作業要求の到着及び/または対応する受付制御判断の完了が、トークン集合数の変更を引き起こしうる。一実施形態においては、バケットにおける最期の集合数変更からの時間間隔(例えばN1ミリ秒またはN2秒)の経過が、トークン集合数を引き起こしうる。さらに別の実施形態においては、時間間隔の経過、作業要求の到着、及び/または作業要求受付制御の完了の組合せが、トークン集合数の変更を引き起こしうる。次のトリガーイベントの発生が検出されうる(構成要素1206)。例えば通常モードバケット及びバーストモードバケットを含む様々なトークンバケットの現在の集合数が特定されうる(構成要素1210)。いくつかの実施形態において、様々なトークンバケットに対する読出し及び書込みは、全て単一のアトミック処理(データベーストランザクションと同類)で行われ、そしてこのような実施形態において、当該アトミック処理は、現在のトークン集合数の読出しから始まりうる。
描写された実施形態において、トリガーイベントがトークンの消費または破棄を伴う場合(構成要素1214にて検出)、各バケットの消費されるまたは破棄されるトークン数が決定され(構成要素1217)、そしてバケット集合数(複数可)が適宜調整されうる。前述のように、様々な実施形態において、受付けられた各作業要求に対し、いくつかのトークンが消費されうる。いくつかの実施形態において、トークンは最大存続期間を有し、それぞれの最大存続期間中ずっと未使用のトークンは、トークン老朽ポリシーに従って破棄されうる。
少なくともいくつかの実施形態において、1つのバケットに未使用のまま残るトークンは、別のバケットに「譲渡」されうる。例えば、プロビジョン能力バケットの未使用トークンは、1つまたは複数のバーストモードバケットに蓄積または貯蓄されうる。様々な実施形態において、トークンの「譲渡」には、例えば特定の時点にプロビジョン能力バケットに未使用のNトークンが見つかった場合、バーストモードバケットにNトークン分追加され、かつプロビジョン能力バケットのトークン集合数はN分削減される、論理処理が含まれることに留意されたい。すなわち、このような実施形態において、譲渡元及び譲渡先のトークン集合数が調整され、トークンは実際に送信または移動等され得ない。いくつかの実施形態において、譲渡元バケットに未使用のNトークンが見つかった場合、Nトークンは複数の譲渡先バケットのそれぞれに追加されうる(例えば、プロビジョン能力バケットにおけるたった1つの未使用のトークンの検出により、複合トークンバケット801のPBB及びSBB両方の集合数は増加するに至る)。このような譲渡が行われると(構成要素1220にて検出)、譲渡元バケット(複数可)の集合数は削減され、かつ譲渡先バケット(複数可)の集合数は増加されうる(構成要素1223)。
必要に応じて、様々なバケットに対し、それぞれの補充ポリシーに従ってトークンが追加され(構成要素1227)、そして構成要素1210に対応する処理において、アトミック処理すなわちトランザクションが開始されていた場合、当該アトミック処理は終了されうる(構成要素1230)。いくつかの実施形態において、トークンが消費、破棄、または譲渡されたかに関係なく、このような補充処理が行われうる(すなわち、このような実施形態において、構成要素1214及び1220において判断された肯定的及び否定的結果の両方に対し、補充処理が続いて行われうる。)このような実施形態において、単一のアトミック処理にて説明された様々なトークン集合数の調整を行うことで、受付コントローラは、多数のバケット組合せにわたって所望するレベルの一貫性を確保しうる。受付コントローラはその後次のトリガーイベントを待ち受け、そして次のトリガーイベントが検出されると、構成要素1206以降に対応する処理が繰り返されうる。
前述のように、少なくともいくつかの実施形態において、受付制御判断の結果、及び/または作業要求の受付に伴い消費されるトークン数は、作業要求が受付けられた場合に行われるはずの作業量の見積りに少なくとも一部基づきうる。いくつかの実施形態において、見積りが不正確であると判明する場合もあり、受付コントローラ180は、例えば受付けられた作業要求の作業が完了し、作業量の不一致が(もしある場合)明らかになった時に、このような見積りエラーを補償するように構成されうる。図13は、少なくともいくつかの実施形態による、受付済作業要求に対応する作業処理が完了した後に、1以上のトークンバケットにおけるトークン数を調整するために行われうる処理態様を示すフロー図である。構成要素1301に示されるように、受付コントローラは、作業要求に対応する作業の完了を示す次の通知を受信しうる。このような通知は、例えば作業対象が実行されるサービスの管理コンポーネントにより受付コントローラに対し非同期的に提供され、そして作業要求に対して実際に行われた作業量の計量を含みうる。
描写された実施形態において、受付コントローラ180は、実際に行われた作業量に関して、元の見積りが大きすぎたのか小さすぎたのかを判定しうる。見積りよりも多くの作業が行われた場合(構成要素1304にて判定)、受付コントローラは、過小見積りに対する補償として、1以上のトークンバケットから差し引くトークン数を決定し(構成要素1308)、これに応じて当該バケットの集合数を下方修正しうる。場合によっては、当該下方修正により、トークン集合数がマイナスになりうる。少なくともいくつかの実施形態において、最終的にはトークン集合数は補充処理によりプラスの値に戻りうるが、所定のバケットにおけるトークン集合数がマイナスの状態の間、新規の作業要求の受付判断は所定のバケットの集合数に基づいて行われるため、新規の作業要求は拒否されうる。
少なくとも一実施形態によれば、元の作業見積りが大きすぎた場合(構成要素1312にて判定)、受付コントローラ180は任意で、1以上のバケットに追加するトークン数を決定し、これに応じてバケット集合数を設定しうる(構成要素1316)。描写された実施形態において、受付コントローラは、作業見積りの正確度に関する記録を保持するように構成されうる。例えば、期間を通して受付けられた一部または全ての作業要求に対する見積り及び実作業量の記録が、データベースまたはログに保持されうる。従って、見積りが正確であろうがなかろうが、かつエラーがあった場合は当該エラーの種類に関わらず(例えば、見積りが大きすぎようが小さすぎようが)、受付コントローラは作業見積りエラーに関する記録を更新しうる(構成要素1323)。このような記録維持は、例えば、受付コントローラはエラーに基づいて見積手順を適合させるため、経時的な見積りの正確度の向上に役立ちうる。いくつかの実施形態において、このような記録は、作業要求のサブセット(例えばランダムサンプル)に関してのみ保持されうる、またはそのエラーの大きさが閾値を超える作業要求に関してのみ保持されうる。描写された実施形態において、記録の更新後、受付コントローラは次の完了に関して知らせが来るのを待ち、構成要素1301以降に対応する処理が繰り返されうる。いくつかの実施形態において、図13に示される処理と同様の処理が、通常モードバケットだけでなくバーストモードバケットにおいても行われうる。少なくとも一実施形態において、図13に示される種類のバケット集合数に対する遡及訂正は、受信するクライアント作業要求の受付制御判断において低い優先順位で、またはバックグランドタスクとして、行われうる。
いくつかの実施形態において、所定の作業対象の利用可能処理能力は、受信作業要求以外の要因に影響されうる。例えば、作業対象の状態が復元される障害からの復旧等のある種類の管理処理、または様々な種類の保守処理により、クライアント要求に対して利用可能な処理能力は低下しうる。図14は、少なくともいくつかの実施形態による、管理イベントに応じてバーストモード受付制御パラメータを修正するために行われうる処理態様を示すフロー図である。構成要素1401に示されるように、受付コントローラ180は、1以上の作業対象の利用可能処理能力の低下につながりうる復旧処理の開始等のバックグラウンドイベントまたは管理イベント(すなわち、クライアント作業要求が直接の原因で起こらないイベント)の通知を受信しうる。それから受付コントローラは、イベントを考慮して、バースト対応(例えばプロビジョン処理能力よりも高い率での対応)を一時的に無効にするか否かを判断しうる。バースト対応が無効化される場合(構成要素1404にて決定)、イベントが完了するまで通常モード受付制御のみが対応されうる(構成要素1408)。
バースト対応が完全に無効化されない場合(同様に構成要素1404にて決定)、いくつかの実施形態において、受付コントローラは、例えば1以上のバケットからいくつかのトークンを取除く、または補充率を一時的に下方修正する等して、許容バースト対応量を制限するように構成されうる。このような実施形態において、受付コントローラは、差し引くトークンの数、及び/または補充率を下げる程度を決定しうる(構成要素1412)。これに応じて1以上のバケットの集合数が調整され、及び/または補充率が決定通りに修正されうる。少なくとも一実施形態において、場合によっては、所定のバケットの集合数は調整の結果マイナスになりうる。そして受付コントローラは、管理またはバックグラウンドイベントが完了したことを示す通知を待ち受けうる(構成要素1415)。イベントの完了後、少なくともいくつかの実施形態において、受付コントローラは、イベントが原因で行われた一部または全ての変更を任意で元に戻しうる(構成要素1418)。例えば、一部のバケットの集合数は増やされ、及び/または補充率は元の値に戻されうる。いくつかの実施形態において、イベント通知の受信前に使用されていた元のパラメータによるバーストモード受付制御が再開される。少なくともいくつかの実施形態において、通常モード受付制御は(バーストモードとは対照的に)、バックグラウンドまたは管理イベントが起こっている間、影響を受けずに継続されうることに留意されたい。少なくともいくつかの実施形態において、管理イベントの間、補充率(修正された可能性あり)に従って、バーストモードバケットに対しトークンが継続して追加されうる。
所定の作業対象に関するバーストモード受付制御を統御する少なくともいくつかのパラメータ(補充率、最大バケット集合数等)は、時間と共に修正される必要がありうる。図15は、少なくともいくつかの実施形態による、トークンベースのバーストモード受付制御に使用されるパラメータを調整するために行われうる処理態様を示すフロー図である。描写された実施形態において、構成要素1501に示されるように、1以上の作業対象に関する作業要求到着率、受付率、及び/または拒否率が監視されうる(例えば、受付コントローラにより、または作業対象(複数可)を実行するサービスと提携する最適化エンジンにより)。受付、拒否、及び到着率に関する収集されたデータは、作業対象から収集された、または作業対象に対応付けられたリソース使用計量と共に、分析されうる。分析により、バーストモード受付制御を統御するパラメータが変更されるべきであることが示唆された場合(構成要素1504にて判定)、受付コントローラまたは別のサービスコンポーネントにより、パラメータ変更を実行した場合の見積費用が特定されうる(構成要素1508)。分析によりパラメータ変更は必要ないと示唆された場合、構成要素1501の監視処理が再開されうる。
いくつかの事例において、費用(または少なくともクライアントに請求されうる費用の一部)は、ごく少額またはゼロでありうる。このようなシナリオにおいては、作業対象を設定したクライアントとの更なる対話なしに、パラメータ変更が行われうる。別の事例においては、一または複数のクライアントは、提案されたパラメータ変更の可能性のある費用及び可能性のある効果に関して通知されうる(構成要素1510)。1以上のバーストモードパラメータのパラメータ変更要求をクライアントが返答した場合(構成要素1512)、パラメータ変更が実行されうる(構成要素1516)。受付コントローラは、到着率、受付率、及び拒否率の監視を再開しうる(構成要素1501)。いくつかの実施形態において、図15に示されるものと同様の受付制御パラメータ変更が、構成要素1501及び1504に示される監視された計量の分析に直接関係のない理由で、導入されうることに留意されたい。例えば、いくつかの実施形態において、クライアントは所定の作業対象のプロビジョン処理能力の変更を要求し、そして当該作業対象のプロビジョン処理能力の変更要求が受付けられると、受付制御パラメータ(少なくともいくつかはプロビジョン処理能力の関数でありうる)は自動的に変更されうる。別の実施形態においては、作業対象を実行するサービスの管理者が、ウィンドウズ(登録商標)のメンテナンス、アップグレード、機器変更等、様々な他の理由で、少なくともいくつかの受付制御パラメータを少なくとも一時的に変更しうる。少なくともいくつかの実施形態において、クライアントはパラメータのサブセットにのみアクセス可能であるため、パラメータ変更に対する実質的管理制御が可能となる。
作業対象間トークン共有
前述のように、少なくともいくつかの環境において、作業要求は時間に関してだけでなく、対象とした特定のデータサブセットに関しても不均一に分散しうる。図16は、少なくともいくつかの実施形態による、作業要求到着率の不均一性と共に、サービスにより管理されるデータの異なるサブセットに関する作業要求の例示的不均一分散を示す図である。描写された実施形態において、データオブジェクト2010A(例えばデータベーステーブルを含みうる)はO1−P1、O1−P2、O1−P3の3つのパーティションを含み、一方別のデータオブジェクト2010BはパーティションO2−P1を含む。各パーティションは、各自のプロビジョン能力(例えば、読出し/秒、書込み/秒等、毎秒対応される作業要求の数により表される)を有する個別の作業対象とみなされうる。プロビジョン能力はPC1等と称されるオブジェクトにより示される(パーティションO1−P1、O1−P2、O1−P3、及びO1−P4のプロビジョン能力は、それぞれPC1、PC2、PC3、及びPC4である)。描写された実施形態において、受信作業要求を受付けるか拒否するかに関する受付制御判断は、各パーティションの各自のトークンバケットセットを使って、パーティションごとに個別に行われる。いくつかの実施形態において、各パーティションは、例えば各自の通常モードトークンバケットセット及びバーストモードトークンバケットセットを有しうる。データオブジェクト2010A及び2010Bは単一のクライアントエンティティに所有され、または割当てられ、そしてあるクライアントアプリケーションセット等の共通目的のために使用されうる。従って、データオブジェクトの所有者の観点からすると、4つのパーティションは全て同一のデータセットの一部とみなされうる。一般的に4つのパーティションは、サイズ(すなわち、各パーティションにおいて保有されるデータ量)及び/またはプロビジョン能力においてそれぞれ異なりうる。
時間窓T0−T1の間に各パーティションすなわち各作業対象に到着する作業要求の率Wが、図16に含まれるグラフで示される。矢印2051、2052、2053、及び2054で示されるように、パーティションO1−P1、O1−P2、O1−P3、及びO2−P1における作業要求到着率が、曲線W1、W2、W3、及びW4でそれぞれ表される。各パーティションのプロビジョン能力もまた示される。O1−P1の場合、作業要求到着率W1は描写された時間窓の間、一貫してプロビジョン能力PC1より低い。O1−P2に関しては、到着率W2は時間帯T0−T1の大部分の間、プロビジョン能力PC2を超えている。従って、O1−P2は示された時間帯の大部分においてバーストモードであり続けたであろう。O1−P3に関しては、到着率は概してプロビジョン能力PC3に近く、そしてO2−P1の到着率W4はほんのわずかの間、プロビジョン能力PC4を超える。O1−P2における作業要求拒否率R2により示されるように、例えば受付制御におけるバーストモードバケットの使用にもかかわらず、いくつかの作業要求がO1−P2において拒否された可能性がある。
示されるように、異なるパーティションを対象とした作業要求の到着率は、同一の時間間隔の間でも、実質的に異なりうる。一部のパーティション(例えば、O1−P1)はその通常モードトークンも全て使い切ってすらいないのに対し、同一オブジェクトの(または同一の所有者の別のオブジェクトの)他のパーティションは、1以上のバーストモードバケットを実装しているにもかかわらず、作業要求を拒否しなければならないほど大きな作業量を有しうる。従って、描写された実施形態において、4つのパーティションはトークン共有グループ2002の構成員とみなされ、そして示された空間的不均一性の影響を低減するために、グループ2002において反復トークン共有プロトコルが実行されうる。
トークン共有プロトコルが契機となって、いくつかまたは全てのパーティションすなわち作業対象(例えば、各パーティションの受付コントローラ)により、トークン共有反復の評価を試みるべきであるか否かに関する判断が行われる(例えば、一定の間隔で、またはランダムな長さの時間が経った後に)。すなわち、O1−P2等の所定の作業対象は、様々な基準のいずれかに基づいて、現在のバケット集合数と最近の作業量とを考慮した上で、トークンを交換可能な1以上のパートナー作業対象を見つけ出すことが有意義であるか否かを判断しうる。トークン共有の評価を行うという判断が下された場合、作業対象は、現在のプロトコル反復においてトークン共有イニシエータの役割を担い、そして1以上のバケット種類に関するトークン集合数情報を交換するための1以上のパートナー作業対象(同一のトークン共有グループの構成員)を特定しうる。イニシエータ及びパートナーピアのトークン集合数の分析後、イニシエータから関与する第二ピアの方向に、またはその反対方向に、いくつかのトークンが譲渡されるべきか否かに関する、第二の判断が行われうる。従って、例えば図16において、O1−P2はイニシエータとなり、そしてバーストモードトークンバケットに関するトークン集合数情報をO1−P1と交換しうる。O1−P2のバーストモードバケットが、O1−P1の対応するバーストモードバケットよりも大幅に少ないトークン数を有する場合、O1−P1はO1−P2に対しN個のトークンを譲渡すべきであると、O1−P1及びO1−P2はお互いに断定しうる。これに応じて、O1−P2のバケットにNトークンが追加され、そしてO1−PのバケットからNトークンが削除されうる。トークンの追加により、O1−P2は図16に示されるより大きな作業量に対応可能となり、一方O1−P1におけるトークンの削減は、O1−P1における低い要求率を考えると、悪影響を少しもたらしていないだろう。その後、引き続くトークン共有プロトコルの反復において、必要であればある別のピア作業対象が、大きく負荷がかかることになったいずれの作業対象にでもトークンを譲渡しうる。例えば、O1−P2はその後、他のパーティションのいずれかにトークンを譲渡する立場にありうるが、O1−P1は他のパーティションにトークンを提供する代わりに、トークンを要求するに至りうる。いくつかの実施形態において、論理的に譲渡されるトークンの正確な数は、例えばトークン集合数の違いに基づいて、及び/または作業対象のうちの1つにより要求されるトークン数に基づいて等、所定の譲渡に関わる作業対象間における双方の合意により決定されうる。
少なくともいくつかの実施形態において、このようなトークン譲渡に「ゴシッププロトコル」が使用されうる。このような実施形態において、各作業対象は、ランダムな長さの時間が経った後、イニシエータとして作動し、そして無作為抽出法を使用して、集合数情報交換を行う別の作業対象を特定するように構成されうる。いくつかの実施形態において、トークン譲渡に(トークン集合数情報交換にも)関与するか否かに関する判断は、各作業対象によって自主的に行われうる。トークン共有グループの構成員は、異なる実施形態における様々な要因に基づいて決定されうる。例えば、いくつかの実施形態において、所定クライアントC1は、自身のデータオブジェクトO1、O2、及びO3は1つのトークン共有グループG1の構成員とみなし、データオブジェクトO4及びO5は別のトークン共有グループG2の構成要素とみなすが、データオブジェクトO6のトークンは共有しないことを示しうる。いくつかの実施形態において、ネットワークアクセス可能なサービスにより、少なくともいくつかのトークン共有グループ構成員決定が行われるが、別の実施形態においては、クライアントからの明確な要求があった時にのみ、所定の作業対象セットに対しトークン共有が実行されうる。いくつかの実施形態において、いくつかの異なるクライアントが必要に応じて、それらのデータオブジェクト間でトークンを共有することを判断しうる。すなわち、トークン共有グループの全ての構成員が、同一のクライアントエンティティ(企業組織またはネットワークアクセス可能なサービスの個人ユーザ等)に所有されている必要はない。
例示的トークン共有プロトコル反復
図17は、少なくともいくつかの実施形態による、データアクセスの空間的不均一性の影響を緩和するために実行されうるトークン共有プロトコルの例示的反復を示す図である。3つのピア作業対象(例えば、テーブルパーティション)ピアA、ピアB、及びピアCが、示された実施例における同一のトークン共有グループの構成員であり、そしてそれぞれがトークン共有に関わる単一のトークンバケット(例えば、バーストモードバケット、または通常モードバケット)を有する。連続するプロトコルの反復の発生に伴う3つのピアのバケットのトークン集合数が、図の上部から下部に向かって増加する時間と共に経時的に示される。実施例を簡潔にするために、プロトコルの反復1から順方向に開始し、補充率、作業要求の受付、または他の要素から起こるトークン集合数の変化は無視し、そしてトークン共有プロトコルを実行した結果起こるトークン集合数の変化にのみ着目する。
図17に示される時間帯の始めに、各ピアは1000トークンをバケットに有する。プロトコルの第一反復が始まる時点で、矢印2150で示される受信作業要求によりピアAは50トークンのみを有するが、ピアB及びピアCはまだ1000トークンを有する。示された実施例において、反復毎に、当該ピアのうちの1つがもう1つ別のピアとトークン集合数情報の交換を開始する(いくつかの実施形態において、所定の反復には多数のピアの対が関与しうる。図17においてはプロトコルの作動に関する単純化された実施例のみが提供される)。関与する2つのピアが、それぞれのトークン集合数P1及びP2を比較し、そして(ここではP1>P2と仮定する)、トークンの多いピアからトークンの少ないピアに対し(P1−P2)/2トークン(整数に丸められたトークン数)を譲渡することを決定する。様々な実装例において、譲渡されるトークン数は様々な異なる要因に基づいて決定されうる。例えば(P1−P2)/2以外の式または関数が使用されうる。
従って、示された実施例における反復1の間、ピアC(1000トークンを有する)はピアA(50トークン)と集合数情報交換を開始し、そしてトークン譲渡サイズが(1000−50)/2=475に決定される。よって、ピアCからピアAへの矢印によって示されるように、475トークンがピアAのバケットに追加され、475トークンがピアCから取除かれる。譲渡の後、ピアA及びピアCの両方が525トークンを有する。
反復2において、イニシエータとして作動するピアB(1000トークン)とピアA(525トークン)の間でトークン集合数情報が交換され、(1000−525)/2すなわち約237トークンがピアBからピアAへ譲渡されるに至る。その結果、ピアAはこの時点で合計763トークンを有し、そしてピアBは762トークンを有する。(描写された実施形態においては、端数のトークンに非対応のため、反復2の終了時点でピアAとBのトークン数には1の差がある。別の実施形態においては、端数のトークン数に対応可能であるため、この場合にはピアA及びピアBの両者が762.5トークンを有しうる。)
反復3において、ピアA(763トークン)及びピアC(525トークン)が再びトークン集合数情報を交換し、そしてピアAは(763−525)/2=119すなわち119トークンをピアCへ譲渡する。反復4において、ピアB(762トークン)はピアC(644トークン)へ59トークンを譲渡し、そして反復5においては、ピアB(703トークン)がピアA(644トークン)へ29トークンを譲渡する。追加の反復(図示せず)により、トークンの多いピアからトークンの少ないピアへさらなるトークンの譲渡が行われうる。図17に示される例示的反復は、描写された実施形態において実施される特定のトークン共有プロトコルの高次特徴を示すことを目的とし、より一般に、または別の実施形態に対し必ず適用可能であるプロトコルルールを含むことを目的としないことに留意されたい。
所定の作業対象が正確にいつ、どのような状況でトークン集合数情報交換を開始するべきか、集合数情報交換をどの他の作業対象と行うべきか、そして(もしあれば)譲渡すべきトークン数を決定するのに何の基準が使用されるべきかに関する判断は、全て異なる実施形態における異なる基準セットに基づいて行われうる。いくつかの実施形態において、例えば、所定の作業対象における受付コントローラまたは他のサービス管理コンポーネントにより、当該作業対象における拒否率が閾値より大きいことが明らかとなった場合、トークン共有プロトコルの新規反復が開始されうる。別の実施形態においては、あるセットのバケット(例えばバーストモードバケット)のトークン数が閾値より小さくなった場合、トークン共有プロトコルの新規反復が開始されうる。いくつかの実装例において、前述のように、プロトコルの反復はランダムに選択された作業対象からランダムな時間に開始され、そして集合数情報を交換する作業対象もまたランダムに選択されうる。少なくとも一実施形態において、連続するトークン共有プロトコル反復があまりにも頻繁に実行されることで生じうる負荷を低減するために、トークン共有に関する制限ポリシーが実施される。これにより、例えばX秒またはX分毎に、所定作業対象が任意の他の作業対象に対し譲渡可能な、または任意の他の作業対象から受取可能な最大トークン数が、Tmax個に制限される。別の実装例において、同一の作業対象ペア間における行き戻りトークン譲渡をある最大率までに制限する等、別の制限ポリシーが適用されうる。例えば、作業対象WT1及びWT2は、15分毎に最大K回トークン譲渡に関与してもよい。いくつかの事例において、作業対象ペアWT1及びWT2の間で、時間Tkより前の特定の時間窓内にあるトークン譲渡が起こった場合、時間Tkにおいて新規のトークン譲渡は許可され得ない。
図17に示される実施例において、譲渡されるトークン数は、トークン数が多いピアとトークン数が少ないピアの差の半分として単純計算される。別の実施形態においては、譲渡サイズは、例えば各作業対象がトークン譲渡に関して最小トークン集合数を有する等(このため最小レベルに達すると、別の作業対象が自分よりも小さいトークン数を有していてもトークンは全く譲渡されない)、別の要因に基づいて決定され、または譲渡されるトークン数は、作業対象における最近の作業量レベル、もしくは作業対象におけるプロビジョン能力に少なくとも一部基づきうる。少なくともいくつかの実施形態において、別の作業対象へのトークンの贈与は任意で行われうる。例えば、所定の作業対象WT1がピアWT2よりもより多くのトークンを有していたとしても、WT1はWT2に対しトークンを譲渡する義務はないだろう(例えば、近いうちにWT1において重い作業要求バーストが起こると予想されるため、別の作業対象へトークンを譲渡することは適切ではない)。
データ複製役割に対応する環境におけるトークン共有
いくつかの実施形態において、前述のように、データベースサービスまたはストレージサービスは、クライアントのデータの多数のレプリカを記憶し、そして異なるレプリカは作業要求の受付制御に関して異なる役割を担いうる。例えば、作業要求が読出し及び書込みを含む環境において、いくつかのレプリカは読出しだけでなく書込みに対しても受付制御の責任を担い、一方他のレプリカは読出しのみ対処しうる。このような実施形態において、トークン共有プロトコルが実行されるピア作業対象のグループは、少なくとも一部はレプリカの役割により決定されうる。図18は、少なくともいくつかの実施形態による、データパーティションが複製される環境において確立されうるトークン共有ピアグループの実施例を示す図である。
オブジェクト2201A、2201B、2201C及び2201D等のデータオブジェクト2201(例えば、データベーステーブルまたはストレージボリューム)は、それぞれ1以上の論理パーティションを備え、それぞれの論理パーティションに対応して、2つ以上の物理レプリカが、サービスのデータ耐久性要件に従って記憶されうる。描写された実施形態において、物理レプリカのうちの1つは「マスタ」レプリカ(または単純にマスタ)と称され、そして残りのレプリカは「スレーブ」レプリカ(または単純にスレーブ)と称されうる。描写された実施形態において、マスタレプリカは、書込みを含む作業要求の受付制御の責任を担い、一方読出し要求は、いずれのレプリカにおいても(スレーブレプリカ(複数可)だけでなくマスタにおいても)実行対象として受付けられうる。従って、所定の論理パーティションに対する書込み要求は、マスタレプリカに向けられ、このマスタレプリカにて当該書込みを受付けるか拒否するかに関する判断が行われうる。書込みが受付けられると、対応するデータ修正は、まずマスタにおいて行われ、それからスレーブへ広められうる。図18に示される実施形態において、読出し要求はいずれかのレプリカに向けられうる(その結果、スレーブで読まれたあるデータは、直近の書込み要求による変更がスレーブにおいて複製されていないことを考慮すると、最新のものではあり得ない)。各物理レプリカは、例えばマスタレプリカにはマスタバケット、そして各スレーブレプリカにはスレーブバケットセットというように、受付制御用の関連トークンバケットセットを有しうる。所定の物理レプリカに割当てられた「マスタ」及び「スレーブ」の役割は、時間と共に変更しうる。例えばマスタへの接続障害または接続切断のため、スレーブがマスタ役に昇進しうる。別の実施形態においては、マスタ及びスレーブ役に対応付けられる責任は異なりうる。例えば、いくつかの実施形態においては、読出しの受付制御もマスタにおいて行われうる。
図18に示される実施形態において、データオブジェクト2201Aは、物理パーティションO1−P1、O1−P2、O1−P3を有する。所定の論理パーティションOx−PyのマスタレプリカはOx−Py−Mと称され、k番目のスレーブレプリカはOx−Py−Skと称される。O1−P1−Mと称されるO1−P1のマスタレプリカは、サービスのストレージノード2210Aに属するストレージデバイス2202Aに配置される。O1−P1−S1と称されるO1−P1のスレーブレプリカは、ストレージノード2210Bのストレージデバイス2202Bに配置される。データオブジェクト2201Bは論理パーティションO2−P1及びO2−P2を有し、データオブジェクト2201Cは論理パーティションO3−P1及びO3−P2を有し、そしてデータオブジェクト2201Dは論理パーティションO4−P1〜O4−Pnを有する。描写された実施形態において、一般に同一の論理パーティションの多数のレプリカは、データ耐久性のため、同一のストレージデバイスまたは同一のストレージノードに記憶され得ない。このような耐久性由来の制約を除いては、レプリカは一般に、描写された実施形態において、十分な利用可能な領域を有するどの(例えば、ランダムに選ばれた)ストレージデバイスまたはストレージノードにでも記憶可能である。例えば、ストレージデバイス2202Aはまた、データオブジェクト2201Bの論理パーティションO2−P1のスレーブレプリカO2−P1−S1と、データオブジェクト2201Cの論理パーティションO3−P1のスレーブレプリカO3−P1−S2とを含み、一方ストレージデバイス2202Bは、スレーブレプリカO4−P2−S2とマスタレプリカO2−P1−Mとを含み、そして同様にストレージノード2210Bに属するストレージデバイス2202Cは、マスタレプリカO1−P3−Mと、スレーブレプリカO2−P1−S1及びO4−P1−S1を含む。(空間に限りがあるため、データオブジェクト2201A〜2201Dのいくつかのパーティションのいくつかのレプリカのみが図18に示される)。
各物理レプリカは、スレーブ、マスタのいずれも、レプリカに対する作業要求の受付制御用の各自のトークンバケットセットを有する。例えば、マスタレプリカO1−P1−M、O2−P1−M、及びO1−P3−Mはそれぞれ、マスタバケットセット2252A、2252B、及び2252Cを有する。ストレージデバイス2202AのスレーブO2−P1−S1及びO3−P1−S2は、スレーブバケットセット2272A及び2272Bを有し、一方スレーブO1−P1−S1及びO4−P2−S2はスレーブバケットセット2272C及び2272Dを有し、そしてスレーブO2−P2−S1及びO4−P2−S1はスレーブバケットセット2272E及び2272Fを有する。各バケットセットは、前述のバケットと同様の、例えば1以上の通常モードトークンバケット及び/またはバーストモードトークンバケット(場合によっては、複合バーストモードトークンバケットを含む)を含む、1以上のトークンバケットを有しうる。個別のトークンバケットが読出し及び書込み用に構成され(例えば、図5に示されるように)、かつスレーブレプリカが書込みの受付制御には関与しないいくつかの実施形態において、スレーブバケットセット2272は読出しトークンバケットのみを含み、一方マスタバケットセット2252は読出しバケット及び書込みバケットの両方を含みうる。
マスタ役及びスレーブ役は異なる受付制御責任を担うことから、描写された実施形態において、所定のマスタレプリカは他のマスタレプリカのみとトークン共有プロトコルに関与することが許され、同様に、スレーブレプリカは他のスレーブレプリカのみとトークンを共有しうる。従って、図18に示されるレプリカは、トークン共有ピアグループ2242A及び2242Bの2つに分類されうる。トークン共有ピアグループ2242Aは、マスタO1−P1−M、O2−P1−M、及びO1−P3−M等の、あるデータオブジェクトセットのマスタレプリカを含みうる。オブジェクト2201A〜2201Dの、図18に図示されていない別のマスタレプリカは、グループ2242Aに同様に含まれうる。トークン共有ピアグループ2242Bは、スレーブO2−P1−S1、O3−P1−S2、O1−P1−S1、O4−P2−S2、O2−P2−S1、及びO4−P1−S1を(図18に図示されていない別のスレーブレプリカと同様に)有しうる。従って、描写された実施形態において、マスタレプリカは他のマスタとトークン集合数情報を交換し、他のマスタへトークンを譲渡し、他のマスタからトークンを受理し、そしてスレーブレプリカは他のスレーブとトークン集合数情報及び/またはトークンを交換しうる。マスタはスレーブよりも多くの受付制御責任を担うことから、マスタにおけるトークンの損失または獲得は、スレーブにおけるトークンの損失または獲得とは異なる影響を与えうるという仮定のように、例えばスレーブのトークン値と比較したマスタのトークン値に関する仮定が、このような制限に反映されうる。いくつかの実施形態においては、このような役割ベースの制限は実施され得ないため、マスタはさらに、または代わりに、スレーブへトークンを譲渡し、その反対も行われうる。
二次インデックスのためのトークン共有
いくつかの実施形態において、トークンベースの受付制御は、最近人気の様々な種類の「NoSQL」サービスのいずれかの非リレーショナルデータベースサービスに対し実行されうる。多数のこのようなデータベースサービスにおいて、一般に所定のテーブルの異なる行は、異なる列コラムセットを有しうる。従って、少なくともいくつかの事例において、各行は(主キー、値)対とみなされ、主キーコンポーネントは一次インデックスに使用され、一方値コンポーネントは各コラムに対応する値のある任意集合を含みうる。多くの場合にクライアントは、自分の非リレーショナルデータの二次インデックス、すなわち主キー以外のコラムのインデックスの使用を所望しうる。いくつかの実施形態において、このような二次インデックスは、導出テーブルを使用して実装されうる。例えば、所定のテーブル(ベーステーブルと称されうる)に対応するデータの少なくともあるサブセットは、二次インデックスを介した素早いアクセスに対応する導出テーブルとしても編制されうる。いくつかの事例においては、ベーステーブルの全てのコラムが導出テーブルに複製されることはない。いくつかの実施形態において、ベーステーブル及び1以上の二次インデックスに使用された導出テーブルは、受付制御用のトークンバケットをそれぞれ有する1以上の論理及び/または物理パーティションをそれぞれ含みうる。いくつかの実施形態において、ベーステーブルのパーティション及び導出テーブルのパーティションは、前述のプロトコルと同様のトークン共有プロトコルのピアとして関与しうる。いくつかの実装例において、ベーステーブルのそれぞれのサブセット(例えば、それぞれのパーティション)に対して、個別の二次インデックス(及び個別の導出テーブル)が設定されうる。別の実装例においては、ベーステーブルの全てのパーティションに対応するデータを含む単一の導出テーブルが、所定の二次インデックスに対して設定される。後者のシナリオにおいて、ベーステーブル全体(ベーステーブルのサブセットではなく)に対応するデータにアクセス可能になるため、二次インデックスは「グローバル二次インデックス」またはGSIと称されうる。
図19は、少なくともいくつかの実施形態による、二次インデックスの作業量管理に対応するための、データベースサービスにおけるトークン共有の使用の実施例を示す図である。描写された実施形態において、ベーステーブル2310はN個のパーティションBT−P1、BT−P2、・・・、BT−PNを含む。導出テーブル2320はベーステーブルのGSIに対応するように設定され、かつ当該導出テーブルはパーティションGSIT−P1、GSIT−P2、・・・、GSIT−PQを含む。図19においてレプリカは図示されていないが、いくつかの実装例において、ベーステーブル2310及び/または導出テーブル2320のパーティションは、データ耐久性のために複製されうる。一般に、所定のベーステーブル用に設定された各GSIに対し、別の導出テーブルが作成されうる。ベーステーブルパーティションに関してはBTPC1、BTPC2、・・・と称される構成要素により、そして導出テーブルに関してはSIPC1、SIPC2、・・・と称された構成要素により示されるように、ベーステーブルの各パーティション及び導出テーブルの各パーティションは、各自のプロビジョン能力を有する。描写された実施形態において、受付制御判断はいずれのテーブルの各パーティションに対し独立して行われ、そして各パーティションはトークンバケットのセット(1以上の通常モードトークンバケット及び/またはバーストモードトークンバケット)を有しうる。いくつかの事例において、ベーステーブルに対し導出テーブルとは異なる種類のバケットが実装されうる。例えば、ベーステーブルは複合バーストモードバケットを使用し、一方導出テーブルは単純(非複合)バーストモードバケットを使用しうる。
少なくともいくつかの実施形態において、クライアントの書込み要求に対応する更新は、まずベーステーブルにおいて行われ、その後導出テーブルに広げられる。例えば、パーティションBT−P1用の更新送信バッファ2325A、パーティションBT−P2用の更新送信バッファ2325B、パーティションBT−P3用の更新送信バッファ2325C、及びパーティションBT−PN用の更新送信バッファ2325N等、各ベーステーブルパーティションに対して更新送信バッファが確立されうる。ベーステーブルパーティションで行われた更新は、伝達のために(矢印2350で示されるように)対応する送信バッファの待ち行列に入れられ、そして最終的には、導出テーブルのデータに適用される前に、導出テーブルパーティションの対応する更新受信バッファ2330(例えば、受信バッファ2330A、2330B、2330C、及び2330Q)に受信されうる。一般に、ベーステーブルと導出テーブルのパーティションの間に一対一のマッピングはあり得ない。例えば、パーティションBT−P1における所定の更新は、導出テーブルパーティションGSIT−P3においてデータを修正することを要求し、一方パーティションBT−P1における別の更新は、GSIT−P1への修正に至りうる。ベーステーブルにまず適用され、それから導出テーブルに適用される書込みと対照的に、読出しは、その読出し要求の性質によって、ベーステーブルへの参照なしに導出テーブルのみで遂行されうる。例えば、GSIのキーに関して作成された読出しクエリは導出テーブルを使用して応答されうるが、他のキーに基づいた読出しクエリは、ベーステーブルまたは導出テーブルのいずれかを使用して応答されうる。
少なくともいくつかの実施形態において、ベーステーブル及び導出テーブルに対し、プロビジョン能力がそれぞれ独立して割当てられうる。従って、一実施形態において、クライアントがテーブル作成を要求する場合、クライアントは下記と同様の命令文の論理的同値を使用して、ベーステーブルのプロビジョン能力を指定し、確立されるべきGSI(複数可)の指示を提供しうる。
ハッシュキーk1、毎秒読出し=12、毎秒書込み=8のテーブルT1を作成、
ハッシュキーk2のグローバルインデックスG1;
当実施例において、主キー(この場合ハッシュキー)がk1であり、かつプロビジョン処理能力が毎秒12読出し処理及び毎秒8書込み処理であるベーステーブルT1が作成される。クライアントはまた、異なるハッシュキーk2のグローバル二次インデックスG1が作成されるように指示しているが、当該GSIのプロビジョン処理能力は指定していない。このようなシナリオにおいて、データベースサービスは、クライアントにより指定されたベーステーブルの総プロビジョン処理能力に基づいて、ベーステーブルパーティションにプロビジョン処理能力を割当てうる。そして導出テーブルのパーティション(GSIに使用される)に対しては、さらなるクライアントとの対話なしに、プロビジョン能力を割当てなければならないだろう。様々な実施形態において、データベースサービスは、数多くの異なる手法のいずれかを使用して、導出テーブルのパーティションのプロビジョン能力を決定しうる。
当実施例の目的のため、2つのパーティションBT−P1及びBT−P2がベーステーブルに設定され、そして2つのパーティションGSIT−P1及びGSIT−P2がインデックスG1に対応する導出テーブルに設定されると仮定する。一手法において、クライアントに指示された総プロビジョン能力は、一緒に用いられるベーステーブルと導出テーブルの両方で処理されるべき読出し及び書込みの数を表すと仮定されうる。この場合、12読出し/秒はBT−P1、BTR−P2、GSIT−P1、及びGSIT−P2のそれぞれに対し3読出し/秒に分割され、8書込み/秒は同様に当該4つのパーティションのそれぞれに対し2書込み/秒に分割されうる。別の手法において、データベースサービスは、クライアントが要求したプロビジョン能力はベーステーブルにのみ適用し、そして導出テーブルのパーティションにおける追加の読出し及び書込みはプロビジョニングされる必要があると仮定しうる。この2つ目の手法において、BT−P1及びBT−P2のそれぞれに、6読出し/秒及び4書込み/秒のプロビジョン能力が割当てられ、一方GSIT−P1及びGSIT−P2のそれぞれには、「v」読出し/秒及び「w」書込み/秒のプロビジョン能力が割当てられうる。v及びwは、いくつかのヒューリスティックに基づいて、または同様のGSIによる以前の経験に基づいて、推定されうる。
いくつかの実施形態において、クライアントはGSIに対し明確にプロビジョン能力を指定(及び支払い)可能でありうる。例えば、クライアントはテーブルの作成を要求する際、以下の論理的同値を指定しうる。
ハッシュキーk1、毎秒読出し=12、毎秒書込み=8のテーブルT1を作成、
ハッシュキーk、毎秒読出し=6、毎秒書込み=6のグローバルインデックスG2;
当実施例において、クライアントはGSIに所望するプロビジョン読出し及び書込み率を、ベーステーブルのプロビジョン読出し及び書込み率とは別に指示し、そしてこれに応じてデータベースサービスが、ベーステーブル及び導出テーブルのパーティションにプロビジョン能力を割当てうる。いくつかの実装例において、ハッシュキー以外のインデックスキー(例えば、範囲キー)がさらに、または代わりに指定されうることに留意されたい。少なくとも一実施形態において、既存のテーブルに対しGSIが作成されうる。例えばクライアントは、ベーステーブルが作成される時に必要とするGSIのセットに決める必要はないだろう。
時間と共に、ベーステーブルのパーティション及び導出テーブルのパーティションに対する作業量は大幅に変動し、そして所定の時間間隔において、読出し及び/または書込み要求は、両種類のテーブルのパーティション中に不均一に分配されうる。空間的不均一性による悪影響(作業要求拒否等)を低減するために、ベーステーブル2310及び導出テーブル2320の全てのパーティションは、単一のトークン共有ピアグループ2342の構成員となる。よって、パーティションBT−Px及びGSIT−Pyはそれぞれ、各自のトークンバケットのトークン集合数情報の交換に関与し、そして双方の合意に基づいて前述のようなトークン譲渡に関与しうる。
例示的トークン共有メッセージシーケンス
図20a〜20dは、少なくともいくつかの実施形態による、トークン共有プロトコルの関与者間の例示的メッセージシーケンスの流れを示す図である。前述のように、トークン共有プロトコルにより、1つの作業対象(例えば、テーブルパーティション)は、第二作業対象とトークン集合数情報の交換を開始し、そして双方合意後、トークンの論理的譲渡(すなわちトークンオブジェクトの移動は全くなしに、両作業対象のトークン集合数の変更)が行われうる。本明細書において、集合数情報交換を開始する作業対象は「トークン共有イニシエータピア」またはTSIPと称され、一方集合数情報の受信者は「トークン共有パートナーピア」またはTSPPと称されうる。図20a〜20dに示される実施形態において、TSIP2402とTSPP2405の間で、少なくとも三種類のメッセージ、トークン共有要求メッセージTSReq、トークン共有受付メッセージTSAcc、及びトークン共有拒否メッセージTSRejが流れうる。
図20aに描写された対話において、TSIP2402は選ばれたTSPP2405へTSReqメッセージ2410を送信する。TSReqメッセージ2410は、TSIP2402の特定バケット(例えばバーストモードバケット)のトークン集合数を示す情報を含みうる。いくつかの実装例において、TSReqメッセージはまた、TSIPが取得を所望する追加トークン数の指示も含みうる、または場合によっては、TSIPがTSPP2405に提供しうるトークン数の指示も含みうる。これに応じて、TSPP2405は受付メッセージTSAcc2420を送信する。TSAccメッセージ2420は、例えば、TSPPのトークン集合数、及び/またはTSPP2405がTSIP2402に提供する意思のあるトークン数(またはTSPPがTSIPから受取る意思のあるトークン数)を示しうる。描写された実施形態において、TSReq及びTSAccが交換された後、TSIP及びTSPPの両者は、双方合意譲渡に従って、それぞれのトークン集合数を修正しうる。
図20bに描写された対話において、TSIP2402は同様のTSReqメッセージ420を送信し、しかしこの事例においてTSPP2405は、提案されたトークン譲渡を当該TSPPは受入れられないことを示す拒否メッセージTSRej2430をTSIPに返信する。これに応じて、TSIP2402は、自身のニーズ次第で、ある別のパートナーピアとトークン集合数情報交換の開始を試みうる、またはトークン共有プロトコルの別の反復が開始されるまで待ちうる。いくつかの実装例において、TSReqメッセージに対するTSPPからの返答が特定の時間窓内にない場合、拒否に相当するとみなされうる。一実施例において、TSIP2402は、TSPP2405が要求したトークン譲渡に対応不可能であると想定する前に、数回TSReqメッセージを再送しうる。
図20cにおいて、TSPP2402はTSPP2405に対し、同種類の情報(例えば、TSPPのトークン集合数、及び任意で、要求したトークン譲渡の性質またはサイズの指示)を含むTSReq2410Aを送信する。TSPP2405は要求を受信し、そして修正申込み、すなわちTSReq2410Aに示される内容と異なる内容の譲渡の要求を行うことを決断する。よって、TSPP2405は、TSPPのトークン集合数と、TSPPが所望するトークンの譲渡方向及び譲渡数の指示とを示す別のTSReq2410Bを返信する。TSIP2402はTSReq2410Aを受信し、修正譲渡案を受入れるためにTSAccメッセージ2420を送信し、そして両サイドにおいてそれぞれのトークン集合数が適宜調整されうる。
図20dにおいて、TSPP2402はTSReq2410Aを送信し、そしてTSPPは、図20cに示される方法と同様の方法で、自身のTSReq2410Bを返信する。この事例において、TSIP2402はTSReq2410Bを拒否し、そしてTSPP2405に拒否を知らせるために拒否メッセージTSRej2430を送信する。
異なる実施形態において、図20a〜20dに示される種類の対話に対し、変更及び拡張が実行されうることに留意されたい。例えば、いくつかの実施形態においては、TSAccメッセージが送信された後、追加の受入確認メッセージが返信されうる。一実装例において、TSRej拒否メッセージを送信する際、送信者は受信者に対し、どの他の作業対象が拒否したトークン譲渡の良い候補者になりうるか(例えば、他の作業対象との最近の通信に基づいて)に関するヒントを提供しうる。別の実装例において、TSIPは、所望する譲渡トークン数、または所望する譲渡方向を自身のTSReqメッセージにおいて示し得ない。その代りTSIPのトークン集合数を示す情報のみが提供され、いずれの方向でも譲渡は適切か否かの判定がTSPPに委ねられうる。このようなシナリオにおいて、TSPPによりどの譲渡も適切ではないと決定された場合、TSPPは単に拒否メッセージを送信するか、またはTSReqを完全に無視しうる。そしてTSPPによりトークン譲渡が適切であると決定された場合、図20cまたは20dのように、TSPPは自身のTSReqをTSIPに対し返信しうる。いくつかの実施形態において、TSIPは、追加トークンが必要な場合にのみTSReqメッセージを送信し、自身のトークンの一部を使用できる場合は送信しないように構成されうる。別の実施形態においては、TSIPは、TSIPが追加のトークンを必要とする、または他にトークンを譲渡する意思があることを示すTSReqメッセージを送信しうる。
トークン共有方法
図21は、少なくともいくつかの実施形態による、バーストモード処理のトークン共有に対応するために行われうる処理態様を示すフロー図である。構成要素2501に示されるように、通常モードバケット及びバーストモードバケットを含むトークンバケットは、トークン共有グループの構成員として選定された、いくつかの作業対象(テーブルパーティション等)それぞれの受付制御用に構成されうる。いくつかの実施形態において、トークン共有グループの構成員は暗黙の存在でありうる。例えば、所定のテーブルの全てのパーティションは、デフォルトでトークン共有グループの構成員とみなされうる。いくつかの実施形態において、構成員はストレージオブジェクトの所有権に基づきうる。例えば、特定クライアントに所有される全てのテーブルの全てのパーティションは(二次インデックスに使用される任意の導出テーブルと同様に)、トークン共有グループの構成員とみなされうる。別の実施形態においては、クライアントは、所定のトークン共有グループに含めたい特定の作業対象を指示可能である。いくつかの実施形態において、いくつかの異なる協働クライアントエンティティは、それぞれの作業対象をトークン共有グループに含めることを決定しうる。図18の説明で前述されたように、データオブジェクトが複製され、かつ異なるレプリカが受付制御に関する異なる役割(マスタ及びスレーブ役)に割当てられたいくつかの実施形態において、所定のトークン共有グループは、1つの役割に対応するレプリカのみを含み、他の役割に対応するレプリカは含まない。いくつかの実施形態において、トークン共有は、特定の種類のトークンバケットにのみ許可されうる。例えば、いくつかの実装例において、バーストモードバケットのみがトークン共有に関与可能である、または読出しトークンバケットのみがトークン共有に関与可能である。
いくつかの実施形態において、トークン共有プロトコルが、図17に示される方法と同様の方法で、反復して実行されうる。所定の作業対象W1は少しの間、受信作業要求の受付制御判断を行い、そして受付けた作業要求に対応する作業を実行する等、一般的な処理(トークン共有と関係のない処理)を行いうる。前回の反復からある長さの時間が経ったこと、W1の1以上のバケットのトークン数が閾値レベルに達したという判断、及び/またはW1における作業要求の拒否率が閾値レベルに達したという判断等、1以上の基準が満たされた結果(構成要素2504)、トークン共有プロトコルの反復が開始されうる。
描写された実施形態において、プロトコルの反復の間、W1は実現する可能性のあるトークン譲渡のパートナーピア作業対象を連続的に1以上特定し、そして1以上のトークン共有メッセージを一度に1つのパートナーに対し送信する(例えば、図20に示される方法と同様の方法で)。W1及びパートナーの1以上のバケット(例えば、バーストモードバケット)のトークン集合数が比較され、そしてW1とパートナーの間でいくつかのトークンを譲渡するか否かに関する決定が、これら2つの作業対象の合意により行われうる。よって、構成要素2507に示されるように、W1は、トークン共有グループの構成要素のある作業対象を、実現する可能性のあるトークン譲渡に関して連絡を取る次のパートナーW2として選択しうる。様々な実施形態において、どの具体的な作業対象が選ばれるべきかを特定するのに異なる技術が使用されうる。例えば、いくつかの実施形態において、ゴシップコントロールが使用され、そしてパートナーはランダムに選択されうる。別の実施形態においては、トークン共有グループの作業対象の中から一番長い時間W1が連絡を取っていなかった特定の作業対象を選ぶ(「最長未連絡時間」手法と称されうる)等、より決定論的選択技術が使用されうる、またはラウンドロビン手法が使用されうる。一実装例において、特定の時間窓の間に、イニシエータと所定の作業対象の間でトークン譲渡が起こっていない場合にのみ、所定の作業対象はパートナーとして選択可能でありうる。
トークン譲渡により影響を受ける可能性のあるバケット(複数可)のトークン集合数を比較するために、パートナーピアと1以上のメッセージが交換されうる(構成要素2510)。いくつかの実施形態において、メッセージ(複数可)は、トークン集合数情報の代わりに、またはトークン集合数情報に加えて、要求トークン数、または譲渡において受入れ可能なトークン数範囲、ならびに所望するトークン譲渡方向も示しうる。少なくとも一実施形態においては、トークン集合数の比較は必要ではないだろう。その代りに、例えば、パートナーピアにいくつかのトークンを提供するか、またはパートナーピアにいくつかのトークンを要求するかに関する決定が、イニシエータピアW1のトークン数に基づいて、または他の基準もしくは閾値に基づいて、行われうる。同様に、このような実施形態において、パートナーピアからの応答も、トークン数の比較なしで生成されうる。イニシエータピアW1またはパートナーピアW2において1以上の基準が使用され、トークン譲渡は合意されるべきか否か、もし合意されるのであれば、いくつのトークンが譲渡されるべきか(すなわち、譲渡サイズ)、そしてどちらの方向に譲渡されるべきか(譲渡方向)が決定されうる。例えば、いくつかの実施形態において、W2等の所定の作業対象は、W2のトークンバケット集合数がある閾値より下である場合、W2がW1よりも多くのトークンを有していたとしても、トークンを譲渡する意向を持ち得ない。または、W2が過去の傾向から近い将来に作業要求のバーストを予測している場合、W2はW1にトークンを贈与する意向を持ちえない。いくつかの実施形態において、作業対象は、単純にトークン集合数の違いに基づいてトークンを共有するように構成されうる。例えば、W2がW1より多くのトークンを有する場合、W2はいくつかのトークンをW1と共有(例えば、図17に示されるようにトークン集合数の違いの半分を譲渡)しなければならない。少なくとも一実施形態において、「スラッシング」動作(例えば、所定の作業対象ペア間で行き戻りの激しい譲渡)を避けるために、所定の作業対象間の譲渡の回数(または譲渡されるトークン数)は、特定の率を超えては許可され得ない。譲渡サイズは、イニシエータピアとパートナーピアの間の合意により決定されうる。いくつかの実施形態において、ピアのうちの1つが少なくともTトークンを与えてもよいという場合にのみ、トークン譲渡は実施されうる。Tはプロトコルの設定可能なパラメータでありうる。従って、非常に小さい数のトークンを譲渡しようとしても意味がないとみなされうる。
トークン譲渡基準が満たされた場合(構成要素2514にて判定)、決定された譲渡サイズに等しい数のトークンが、当該作業対象のうちの1つの作業対象(例えば、イニシエータまたはパートナーのいずれか)の1以上のバケットに追加され、そして等しい数のトークンが、もう一方の作業対象の1以上のバケットの対応セットから取除かれうる(構成要素2518)。ほとんどの場合、トークンはトークン集合数の多いピアからトークン集合数の少ないピアへと譲渡されうる。しかしながら、少なくともいくつかの実施形態において、逆の方向の譲渡も許容されうる(例えば、一例示的シナリオにおいて、W1がW2よりも少ないトークンを有していても、W2が予測される大きなバーストを見越したトークンを要求した場合、W1はW2にトークンを譲渡しうる)。
描写された実施形態において、トークン譲渡が合意されたか否かに関わらず、他のパートナー作業対象に連絡を取るか否かに関する決断が下されうる。例えば、いくつかの実施形態において、W1はNトークンの獲得を所望するが、しかしW2からはMトークンのみ(M<N)が入手可能であったため、W1は追加のトークンを他のパートナーから取得することを試みることを望む場合がある。いくつかの実施形態において、所定の時間内にW1等の所定のイニシエータが連絡しうる異なるパートナーの数に関して、上限が設定されうる。追加のピアと連絡を取る場合(構成要素2522にて決定)、例えば構成要素2507に関して前述された手法と同様の手法を使って、次のパートナーが特定され、そして構成要素2510、2514、及び2518に対応する処理が次のパートナーと一緒に行われうる。
追加のパートナーと連絡を取らない場合(同様に構成要素2522にて決定)、例えばイニシエータが所望する数のトークンを取得(または贈与)できた場合、トークン共有プロトコルの反復は完了したとみなされうる(構成要素2526)。描写された実施形態において、イニシエータは、次の反復が開始されるまで通常処理を再開し(構成要素2504)、次の反復が開始されると、構成要素2507以降に対応する処理が繰り返されうる。
共有リソースの余剰能力を表すトークンの分配
前述のように、いくつかの実施形態において、データベースサービスにより管理されるいくつかのデータベーステーブルパーティション等、所定のネットワークアクセス可能なサービスのいくつかの作業対象は、クライアント要求に応じて行われる作業を成し遂げるために、1以上の共有リソース(例えば、ディスクドライブまたは他のストレージデバイス)を使用するように構成されうる。一般に、共有リソースに作業対象を割当てる場合、サービスは、共有リソースのいずれかにより対応可能な処理能力限度が、作業対象のプロビジョン能力の合計を確実に超えるようにする。バケット集合数が処理能力を表すいくつかの実施形態において、これは、共有リソースは追加作業要求を処理可能であっても、1以上の作業対象は受信作業要求を受付できない(例えば、バーストモードバケットの使用にも関わらず)というシナリオに帰着しうる。よって、少なくともいくつかの実施形態において、共有リソース(複数可)の余剰処理能力を表すトークンが、後述される公平な方法で、作業対象間に分配されうる。図22は、少なくともいくつかの実施形態による、リソースを共有する作業対象のプロビジョン能力の合計より大きい処理能力限度を有する共有リソースの実施例を示す図である。
図22に描写された実施形態において、リソース3044は、少なくとも4つの作業対象3001A、3001B、3001C、及び3001Dにより共有される。これらの作業対象は、リソース3044に関するリソース共有グループ3070の構成員と呼ばれうる。共有リソース3044は、作業対象のプロビジョン能力の合計(PC1+PC2+PC3+PC4)を超える処理能力限度SRTL3020を有する。図22の下部のグラフは、矢印3051、3052、3053、及び3054で示されるように、時間間隔T0−T1における当該4つの作業対象のそれぞれの作業要求到着率を示す。示されるように、作業対象3001Aの作業要求到着率W1は、時間間隔T0−T1の間、プロビジョン能力PC1よりも低い。作業対象3001Bの作業要求到着率W2は、時間間隔の大部分の間、プロビジョン能力PC2を超えている。そしてその結果、拒否率R2で示されるように、いくつかの作業要求が拒否されている。このような拒否は、各作業対象において、前述のようなバーストモードトークンバケットが使用されても起こりうる。作業対象3001Cは、ゼロ到着率W3で示されるように、作業要求の受信が全くない。作業対象W4においては、到着率W4は、時間間隔T0−T1の一部でプロビジョン能力を超えるが、しかし拒否は起こっていない(例えば、バーストモードトークンバケットの使用の結果)。
いくつかの実施形態において、トークン分配器3080は、共有リソース3044の未使用処理能力を表す任意の追加トークン(すなわち、バケット補充率に基づいて既に生成されたトークンの数を超えるトークン)が、所定の時間帯においてリソース共有グループの作業対象3001間に分配されるべきか否かを決断するように構成されうる。さらに、示された実施形態において、トークン分配器3080は、各作業対象に提供されるべきこのようなトークンの数を決定する責任を担いうる。いくつかの実施形態において、「余剰」トークンは必要に応じて作成され、一方別の実施形態においては、共有リソースに対応付けられたバケットが共有オブジェクトの処理能力を表すトークンを含むように構成され、そして余剰トークンはこのようなバケットから分配されうる。
トークン分配器3080は、作業対象のそれぞれのプロビジョン能力、ならびに作業対象3001のいくつかの最近の活動の計量(すなわち、作業要求到着率)という要因も考慮する、公平な分配ポリシーを実施しうる。少なくともいくつかの実施形態において、所定のクライアントが特定の作業対象にアクセスするのに請求される金額は、当該作業対象のプロビジョン能力の関数であるため、それぞれのプロビジョン能力は、分配アルゴリズムに因数として含まれうる。従って、作業対象を管理するサービスは、少なくともある程度、リソース共有グループ3070の構成員のプロビジョン能力に準じて、共有リソースの未使用能力に関連する余剰トークン等の資産または特典の分配を試みうる。同時に、最近全く作業要求を受信していない3001C、または最近少しの作業量を受けた作業対象3001A等の作業対象にトークンを分配することは特に有意義ではなく、このような軽い負荷の作業対象はいかなる追加のトークンを受けても有効利用できないことから、トークン分配器3080は最近の作業量レベルを考慮しうる。いくつかの実施形態において、様々な作業対象における最近の時間帯にわたる拒否率、今後予期される作業要求到着率等、他の要因も考慮されうる。
少なくともいくつかの実施形態において、トークン分配器3080は、ある時間間隔におけるリソース共有グループの様々な構成員に関する到着率の計量を収集し、それからその次の時間間隔においてトークンを分配するか否か、及びどのように分配するかを決定しうる。従って、トークン分配器は、時間帯Tm(例えば、T0−T1)における作業対象に関する到着率の比、ならびに作業対象に関するプロビジョン処理能力の比を決定しうる。少なくともいくつかの実施形態においては、到着率及びプロビジョン処理能力のいずれの比も必ずしも計算される必要はなく、その代りに到着率及びプロビジョン処理能力を示す、または到着率及びプロビジョン処理能力に関連する他の計量が使用されうる。そして時間帯Tnにおける受付制御用に作業対象間で分配されるトークンの合計数が、共有リソース3044の処理能力限度に少なくとも一部基づいて決定されうる。例えば、一実施形態において、当該トークン合計数は、作業対象のプロビジョン能力の合計(例えば、図22の実施例のPC1+PC2+PC3+PC4)を、共有リソースの処理能力限度(図22のSRTL3020)から減じることにより計算されうる。トークンの合計数は、少なくとも(a)それぞれの作業要求到着率の比または計量、及び(b)作業対象のプロビジョン能力に応じて、作業対象に分配されうる。それから追加のトークンは、作業対象のバケット補充率に基づいて生成されうるトークンと共に、時間帯Tnに(及び/またはその後の時間帯に)要求受信作業対象において受付制御に使用されうる。少なくともいくつかの実施形態において、余剰トークンは作業対象がバーストモード処理に対処するのを手伝うことを第一目的としうるため、作業対象のバーストモードトークンバケットにのみ余剰トークンは分配されうる。別の実施形態においては、トークンは、バーストモードトークンバケットと同様に、またはバーストモードトークンバケットの代わりに、通常モードトークンバケットに分配されうる。いくつかの実施形態において、トークンは読出しトークンバケット等の特定の種類の作業要求に関するトークンバケットに分配されうる。
作業要求到着率に加え、トークン分配器が決断する際に考慮しなければならないプロビジョン能力を含む他の要因は、時間間隔ごとに変化しうることに留意されたい。例えば、いくつかの実施形態において、クライアント(またはサービス)は任意の時点に所定の作業対象のプロビジョン能力を変更しようと決断しうる。さらに、所定のリソースへのアクセスを共有する作業対象の数も変化しうる。例えば、いくつかの実施形態において、ストレージデバイスを共有するために任意の時点にテーブルパーティションが追加されうる、または既存のパーティションが削除されうる。従って、このような実施形態において、トークン分配器は、作業要求到着率の計量を取得することに加えて、様々な種類の設定変更の経過を記録する必要がありうる。
いくつかの実施形態において、リソース共有者に分配すべきトークン数を決定する際、いくつかの異なる共有リソースの処理能力限度が考慮されうる。図23は、少なくともいくつかの実施形態による、サービス(データベースサービスまたはより一般的なストレージサービス等)のストレージノードにおいて作業対象により共有されうる異なる種類のリソースの実施例を示す図である。示されるように、ストレージノード3110は、それぞれプロビジョン能力PC1、PC2、及びPC3を有する少なくとも3つのデータオブジェクトパーティション(すなわち作業対象)O1−P1、O2−P3、及びO3−P2が記憶される共有ストレージデバイス3102を含みうる。描写された実施形態において、共有ストレージデバイス3102は、処理能力限度SRTL3120Aを有しうる。
パーティションO1−P1、O2−P3、またはO3−P2に対する作業要求は、ストレージデバイスに加えて、ストレージノード3310内またはストレージノード外に配置された別の共有リソースの使用も必要でありうる。例えば、オペレーティングシステムバッファ、ソケット、Iノード、またはアプリケーションレベルオブジェクト(例えば、様々な種類のロックのいずれか)等の共有データ構造3115は、作業処理を行うのに必要であり、そしてこのような共有データ構造は、それぞれ各自の処理能力限度SRTL3120Bを有しうる。描写された実施形態において、共有揮発性メモリ3116(例えば、ストレージノードのメインメモリ)の一部は作業処理に必要であり、そしてメモリは自身の処理能力限度3120Cを有しうる。共有処理要素3118(例えば、CPUまたはコア)は、作業要求に対応する作業処理を行うのに使用され、そして処理要素は自身の処理能力限度3120Dを有しうる。作業要求及び対応する応答は、処理能力限度がSRTL3120Eのネットワークインターフェイスカード等の共有ネットワークデバイス3122の使用を要しうる。処理能力限度3120Fの共有ネットワークリンク3132は、作業要求に必要でありうる。いくつかの事例においては、処理能力限度3120Gの構成データベース等の外部リソース3136へのアクセスもまた、少なくとも一部の作業処理において必要とされうる。
描写された実施形態において、余剰トークンが一部または全ての種類のリソースを共有する作業対象に分配されるか否かに関して決定する際、トークン分配器は、全ての適用可能な共有リソースのそれぞれの処理能力限度の関数を計算するように構成されうる。いくつかの事例において、当該計算は、例えば様々なSRTLのうち最小SRTLを特定し、そしてこの最小値を、共有リソースの組合せに関連する有効処理能力限度として使用することを伴いうる。図23に示される異なる種類の共有リソースの全てが任意の実装例において使用されるとは限らない。いくつかの実施形態において、図23に示されていない他の種類の共有リソースが使用されうる。
図24は、少なくともいくつかの実施形態による、リソースを共有する作業対象に分配する余剰トークンの数を計算するために行われる処理の実施例を示す図である。示されるように、トークン分配器3080は、有効共有リソース処理能力限度3230を、1以上の共有リソースのそれぞれのSRTL3220(例えば、3220A、3220B、...3220N)の関数f1として計算しうる。例えば、いくつかの実装例において、有効SRTLとして最小SRTLが選択され、一方別の実装例においては、ある別の関数が使用されうる。描写された実施形態において、到着率モニタ3227(複数可)は、リソース共有グループの様々な作業対象3201(例えば、3201A、3201B、及び3201C)における関連作業要求到着率を示す計量3240を特定する責任を担いうる。例えば、一実装例において、余剰トークン分配に関する決定はN分毎に一度行われるため、これに応じてN分の時間窓に関して計量3240が特定されうる。いくつかの実施形態において、到着率モニタ3277は、作業対象のそれぞれの受付コントローラ180内に取込まれうる。
図24に描写された実施形態において、トークン分配器3080は、共有リソースにおける余剰処理能力を表す余剰トークン3240の数を、有効SRTL3230及びリソース共有グループの作業対象のプロビジョン能力の関数f2として特定しうる。従って、一実装例において、例えば、所定の時間窓Tmにおける有効SRTL3240が毎秒X処理であり、かつ作業対象のプロビジョン能力の合計(例えば、図24においてPC1+PC2+PC3)は所定の時間窓Tmにおいて毎秒Y処理であったとすると、(m+1)番目の時間窓T(m+1)において分配される余剰トークンは、X−Yとして計算されうる。別の実装例においては、さらに複雑な関数f2が使用されうる。少なくともいくつかのシナリオにおいて、複数の共有リソースのSRTL(ゆえに有効SRTL3230)は、時間と共に変化しうることに留意されたい。同様に、作業対象のプロビジョン能力もまた、例えばクライアント要求によって、時間と共に変化しうる。その結果、少なくともいくつかの実施形態において、余剰トークン3240の数もまた変動しうる。いくつかの実施形態における少なくとも一部の時間窓に関して、例えば少なくとも一時的に共有リソースにおいて利用可能な余剰能力がないというように、所定の時間窓中に分配される余剰トークンの数がゼロでありうることに留意されたい。
分配する余剰トークン3240の数が特定されると、トークン分配器3080は次に(もしあれば)各作業対象に提供すべきトークンの数を決定しうる。所定の作業対象の分配余剰トークン(DET)3242(例えば、作業対象3201AにDET3242A、作業対象3201BにDET3242B、及び作業対象3201CにDET3242C)は、作業対象の到着率計量3240及び作業対象のプロビジョン能力の関数f3として計算されうる。時間窓Tmにおける3つの作業対象3201A、3201B、及び3201Cのそれぞれの到着率計量値が、A1、A2、及びA3である例示的シナリオを考察する。一実装例において、各作業対象kに関して、到着率比は、A_ratio_k=(Ak/(A1+A2+A3))として特定され、かつプロビジョン能力比は、P_ratio_k=(PCk/(PC1+PC2+PC3))として特定されうる。さらに、(m+1)番目の時間窓に分配する余剰トークンの合計数がEであると仮定する。作業対象kに分配される余剰トークンDETkは、以下のように計算されうる(alphaは定数):DETk=E×((alpha×A_ratio_k)+((1−alpha)×P_ratio_k)))。当実施例において、alphaは、到着率とプロビジョン能力という2つの異なる考慮要素に対し与えられる比重を表す。いくつかの実施形態において、トークン分配器3080は、例えば到着率と対応する拒否率との実測傾向に応じて、時間と共にalphaを調整しうる。少なくともいくつかの実施形態において、m番目の時間窓における合計到着率が閾値を超える場合にのみ、余剰トークン3240は(m+1)番目の時間窓において分配されうる。例えば各到着率が作業対象のプロビジョン能力より低い場合は、余剰トークンは(m+1)番目の時間窓において分配され得ない。一実施形態において、余剰トークンを分配する際、長時間にわたる到着率が考慮されうる。例えば、5分の時間窓の間に所定の作業対象に分配すべきトークン数を決定する際、トークン分配器3080は、当該作業対象に関して取得した前の60分間の到着率計量を考慮しうる。いくつかの実施形態において、所定の時間間隔に所定の作業対象における到着率がゼロの場合(例えば、図2の作業対象3001Cは時間間隔T0−T1において遊休状態にある)、その次の時間間隔において当該作業対象に対し、そのプロビジョン能力に関係なく、トークンは全く分配されえない。
共有リソースの余剰能力を表すトークンの分配方法
図25は、少なくともいくつかの実施形態による、リソースを共有する作業対象に余剰トークンの公平分配を実施するために行われうる処理態様を示すフロー図である。構成要素3301に示されるように、作業対象セットは、クライアント作業要求に対応する処理を行う際、1以上の共有リソースを使用するように構成されうる。このような作業対象をリソース共有グループと称しうる。各共有リソースは、各自の処理能力限度SRTLを有しうる。例えば前述のものと同様の1以上の通常モードバケット及び/または1以上のバーストモードバケットを含むトークンバケットの各セットは、リソース共有グループの各作業対象の受付制御用に構成されうる(構成要素3304)。少なくともいくつかの実施形態において、補充率、最大トークン集合数等、トークンバケットの様々なパラメータは、作業対象に対応付けられたそれぞれの処理能力に少なくとも一部基づきうる。
作業要求到着率計量、拒否率計量、プロビジョン能力の変更、及び/または共有リソースの処理能力限度の変更等、いくつかの計量が、リソース共有グループの構成員及び共有リソース(複数可)のために収集されうる。いくつかの実施形態において、時間窓ベースのトークン分配プロトコルが実施され、1以上の時間窓の所定セットにおいて取得された計量は、後続の時間窓のあるセット間におけるトークン分配に使用される。描写された実施形態において、時間窓tj+1におけるトークン分配を決定するために、時間窓tjにおいて計量が収集されうる(構成要素3307)。時間窓tj+1において分配される余剰トークンの合計数(DET合計)は、共有リソース処理能力限度(SRTL)及び作業対象のプロビジョン能力の関数として特定されうる(構成要素3310)。例えば、一実装例において、有効SRTLが計算され(例えば、複数の共有リソースが考慮されている場合、個々のSRTLのうち最小のSRTL)、そしてDET合計は、有効SRTLから作業対象のプロビジョン能力の合計を減じることで計算されうる。
少なくともいくつかの実装例において、特定の時間窓においてDET合計がゼロである、すなわち分配する余剰トークンが全くない場合もありうる。DET合計がゼロを超える場合(構成要素3313にて判定)、例えば作業対象のそれぞれの到着率及び/またはそれぞれの処理能力に関連する計量の関数として、各作業対象kに提供されるトークンDET−kの数が計算されうる(構成要素3316)。例えば、図24の説明に併せて考察されたように、異なる作業対象の到着率計量及びプロビジョン能力計量に比重alphaを割当てる関数は、DET−k値を取得するために、いくつかの実施形態において使用されうる。その後、作業対象に対応付けられた1以上のバケットのトークン集合数が、決定されたDET−k値に基づいて調整されうる(構成要素3319)。トークンが追加された後、受付制御判断が以前のように行われうるが、少なくともいくつかの余剰トークンを受取った作業対象においては、多くの作業量に対応する能力が向上している。いくつかの実施形態において、余剰トークンはバーストモードトークンバケットにのみ追加され、一方別の実施形態においては、余剰トークンは、バーストモードバケットの代わりに、またはバーストモードバケットに加えて、通常モードトークンバケットに追加されうる。少なくともいくつかの実施形態において、個別のトークンバケットが、読出し対書込み等の異なる種類の作業要求用に維持されうる。このような場合、余剰トークンは、いくつかの実施形態においては、ある種類のバケットにのみ(例えば読出しバケットにのみ、または書込みバケットにのみ)分配され、別の実施形態においては、全ての種類のバケットに分配されうる。
少なくともいくつかの実施形態において、前述の分配余剰トークン数(DET)を特定するのに使用される、図24に示される関数f1、f2、及びf3等の様々な関数及び式は、例えばトークン分配器3080または管理者により、時間と共に調整されうる。例えば、トークン分配技術の成果は、高い到着率の時間帯における様々な作業対象の拒否率、様々な共有リソースの使用レベル等のいくつかの計量を監視することで評価され、これに応じて到着率計量対プロビジョン能力計量に割当てられる比重alphaが調整されうる、または時間窓のサイズが調整されうる。
少なくともいくつかの実施形態において、単一または複合トークンバケットと、作業対象間のトークン共有と、共有リソースの余剰能力の公平分配との使用を含む、前述のような受付制御に関連する様々な技術は、プロバイダネットワークにより提供される複数のサービスにおいて使用されうる。一部または全ての技術の組合せが、所定の実施形態において使用されうる。例えば複合バーストモードトークンバケットの使用は、作業対象間のトークン共有及び余剰トークンの分配と組み合わせられうる。インターネット及び/またはその他のネットワークからアクセス可能な1以上のこのようなサービス(様々な種類のクラウドベースのストレージ、コンピューティングまたはデータベースのサービス等)を分散したクライアントセットに提供するために、会社や公的機関等の事業体が構築したネットワークは、プロバイダネットワークと称されうる。所定のプロバイダネットワークには、プロバイダによって提供されるインフラストラクチャ及びサービスを実装、構成及び配給するのに必要な物理及び/または仮想化コンピュータサーバ、1以上のストレージデバイスをそれぞれ有するストレージサーバ、ネットワーク機器等の集合といった、様々なリソースプールを提供する多数のデータセンタ(異なる地域にわたって分散しうる)が含まれうる。その一部が異なるデータセンタまたは異なる地域においてインスタンス化または実行されうるいくつかの異なるハードウェア及び/またはソフトウェアコンポーネントは、様々な実施形態において、受付制御技術を実行するために集合的に使用されうる。
バーストモード処理に対するトークンベースの価格設定
いくつかの実施形態において、バーストモードに対応するようにクライアントのために行われた作業に対して、クライアントは、通常モード処理に使用されるものとは異なる価格設定方法に基づいて請求されうる。前述のように、いくつかの実施形態において、作業対象間のトークン共有及び共有リソース能力を表す余剰トークンの分配はまた、バーストモード作業量に対応するために実施され、そしてトークン共有及び/または余剰トークン分配に対する請求額もまた、通常モード処理に対する請求額とは異なりうる。図26は、少なくともいくつかの実施形態による、バーストモード処理のために実行されうる価格設定マネジャー4080の例示的コンポーネントを示す図である。示されるように、通常モードトークンバケットセット120及びバーストモードトークンバケットセット125のインスタンスが、作業対象に対し生成されうる。受付コントローラ180は、例えば様々な実施形態に関して前述のものと同様の技術または技術の組合せを使用して、通常モードトークンバケットセットの1以上のプロビジョン能力バケット420のトークン集合数、及び/またはバーストモードトークンバケットセット125の1以上のバーストモードバケット422のトークン集合数に基づいて、受信作業要求を受付けるか否か決定する責任を担いうる。
図16に示される実施形態において、価格設定マネジャー4080は、バーストモードトークンバケットセット125及び/または通常モードトークンバケットセット120のトークンの使用に対応付けられた1以上の価格設定ポリシーを実施するように構成されうる。1以上のバーストモード価格設定ポリシー4005B及び1以上の通常モード価格設定ポリシー4005Aが、作動モードに依存して、1以上のバケットのトークンの消費及び/または譲渡に関してクライアントに請求する額を決定するのに使用されうる。通常モード処理に関して、例えばプロビジョン処理能力までの率のトークン使用に関しては、通常モード価格設定ポリシー4005Aに従った不変すなわち固定価格が適用され、一方バーストモード価格設定ポリシー4005Bは、後述のように少なくともいくつかの実施形態において、より変動的でありうる。価格設定マネジャー4080は、受付コントローラ180からトークン集合数の変化に関する情報を収集し、及び/または受付コントローラ180に受付制御判断を行う際に考慮すべき制約に関する情報を知らせるように構成されうる(例えば、価格設定マネジャー4080は、バーストモード間の特定のバーストモードバケット422のトークンの消費に対し、特定のバーストモード価格設定ポリシーに従って、受付コントローラの判断に影響を与えうるクライアントの予算制約が適用されることを、受付コントローラに知らせうる)。
いくつかの実施形態において、価格設定マネジャー4080は、いくつかの異なるサブコンポーネントを含みうる。例えば、インターフェイスマネジャー4020は、一実施形態において、クライアント入力に基づいた価格設定ポリシー選択等のクライアントとの様々な価格設定関連対話に使用されうる、または後述の種類の様々な態様のマーケットプレイス取引を行うのに使用されうる、1以上のウェブページ、API、GUI(グラフィカルユーザインターフェイス)、コマンドラインツール等のプログラム的インターフェイスセットを実行する責任を担いうる。インターフェイスマネジャー4020はまた、いくつかの実装例において、価格設定マネジャー4080と受付コントローラ180の間の通信等、ネットワークアクセス可能なサービスにおけるいくつかの種類の内部対話の責任も担いうる。いくつかの実施形態において、トークンマーケットプレイスが確立され、これにより一部のクライアントは、他のクライアントが買い取れる余剰トークンの可給性を宣伝することが可能になる。少なくともいくつかのこのような実施形態において、いくつかの種類のマーケットプレイス取引に関して、トークンの価格は不変すなわち固定であり、一方他の取引に関しては、トークン価格は変動的に決定されうる(例えば、オークションと同様の技術を使用する、または時間窓に基づく)。描写された実施形態において、価格設定マネジャー4080のマーケットプレイスマネジャーコンポーネント4040は、マーケットプレイス取引に対応する責任を担いうる。
描写された実施形態において、1以上の計量コンポーネント4030は、受付コントローラ180からトークン使用/消費計量を収集するように構成されうる。少なくとも一実施形態において、受付コントローラ180の複数のインスタンスが実行され(例えば、各作業対象に対し1つの受付コントローラインスタンス、またはN作業対象に対し1つのインスタンス)、そしてこのような実施形態において計量コンポーネントは、複数の受付コントローラ180からトークン使用データを集計しうる。いくつかの実施形態において、トークンの消費または譲渡に関する価格は、作業要求を遂行するために使用される様々なリソースのリソース使用レベル(例えば、プロセッサ使用レベル、ストレージデバイス使用レベル、またはネットワーク使用レベル)に基づいて変動しうる。トークン価格設定がリソース使用レベルの関数であるこのような実施形態において、計量コンポーネント4030はまた、ネットワークアクセス可能なサービスに構築されたインフラストラクチャの様々な部分から使用情報を収集しうる。請求額ジェネレータ4050は、受付コントローラ(複数可)から収集された様々なトークン関連計量を分析し、そして実施されている1つまたは複数の価格設定ポリシーに基づいて、クライアントに請求する請求額を生成するように構成されうる。いくつかの実施形態において、価格設定マネジャー4080は、例えば価格設定ポリシー詳細及び/または請求履歴情報が保存されうる価格設定データベース4060を含みうる。いくつかの実施形態において、価格設定データベース4060は傾向分析にも使用され、例えば、以前の価格設定変更に基づいた、及び/または請求履歴から導き出される使用パターンに基づいた、変動価格設定のコンポーネントを決定しうる。少なくとも一実施形態によれば、価格設定マネジャー4080の1以上のサブコンポーネントは、受付コントローラ180内に取込まれうる。いくつかの実施形態において、価格設定マネジャー4080は、1以上のコンピューティングデバイスに分散された複数のソフトウェア及び/またはハードウェアコンポーネントを含みうる。
トークンベース価格設定ポリシー要素
図27は、少なくともいくつかの実施形態による、トークンベースの価格設定ポリシー4005の例示的要素を示す図である。いくつかの実施形態において、受付制御に使用される異なるバケットに、それぞれの価格設定ポリシーが適用されうる。すなわち、クライアントが請求される価格は、通常モードトークンバケットセット120の異なるバケットによって、及び/またはバーストモードトークンバケットセット125の異なるバケットによって、異なりうる。描写された実施形態において、バケットセットの1以上のバケットに対応付けられた所定の価格設定ポリシー4005に関して、例えばバケットにおける1以上のトークン集合数変更処理に対するクライアント請求額を決定するために価格設定ポリシーが使用される条件を示す、1以上の適用基準4105が指定されうる。単純な一実装例において、例えば、特定の価格設定ポリシー4005がバーストモードバケット422から消費される全てのトークンに適用されうる。このようなシナリオにおいて、適用基準4105は、「消費される各トークンに対しこの価格設定ポリシーを適用する」という論理的同値を単純に示しうる。いくつかの実施形態においては、ある他の1つまたは複数のバケットのトークン集合数に基づいた基準(例えば「バケットB2のトークン集合数がB2低−B2高の範囲内にある場合にのみ、バケットB1のトークン消費に対しこの価格設定を適用する」という論理的同値)、クライアントの予算に基づいた基準(例えば「C1の残りのバーストモードトークンの予算が価格Aを上回る場合にのみ、C1のバケットB1に対しこの価格設定を適用する」という論理的同値)、時間窓に基づいた基準(例えば「平日の午前1時から午前6時までの時間帯においてバケットB1から消費されるトークンに対しこの価格設定を適用する」)等、より複雑な適用基準4105が指定されうる。いくつかの事例において、適用基準は使用されるバケットの数及び種類に依存する。例えば、一部の価格設定ポリシーは、複合トークンバケットがバーストモード受付制御にも使用されている場合にのみ、所定の共有リソース能力バーストモードバケットB1に対して適用されうる。
一般的にトークン集合数の変更(例えば、トークン消費または譲渡)に対応付けられた価格設定は、不変価格設定コンポーネント4108(例えば、特定の時間帯において特定の料金でバーストモードトークンを特定数まで消費するための先払料金)と、変動価格設定コンポーネント4111(例えば、平日の異なる時間窓によって変動しうる料金、または需要と供給に基づいて変動しうる料金)とを含みうる。描写された実施形態において、一部の価格設定ポリシーは、不変及び変動価格設定コンポーネントの両方を含み、一方別のポリシーは、不変コンポーネントのみ、または変動コンポーネントのみを含みうる。少なくともいくつかの実施形態において、ある特定の種類のトークン譲渡または売買に関する変動価格設定は、オークションを利用して実行されうる。少なくとも一実施形態において、少なくとも一部のトークンバケットの価格設定は、需要と供給に基づいて変わりうる。例えば、入札時に特定のクライアントの付け値が現在のスポット価格以上である場合にのみ、当該クライアントにトークンが供給されうるという、バーストモードトークンの「スポット」価格設定ポリシーが実施されうる。
いくつかの実施形態において、複数のクライアントが所定のトークン取引に関与しうる。例えば、価格設定マネジャー4080がトークンマーケットプレイスを実施する実施形態において、クライアントC1は、クライアントC1の所有するいくつかのトークン(例えば、バーストモード処理に使用可能なトークン)が他のクライアントに販売可能であることを示したい場合がある。価格設定マネジャー4080は、トークンの可給性を宣伝し(またはトークンを購入する可能性のある候補者の特定クライアントに知らせ)、そして別のクライアントC2がC1からトークンを購入しうる。このようなシナリオにおいて、クライアント間の支払振替は、価格設定マネジャー4080により、例えば描写された実施形態においてはクライアント間支払振替ポリシー4117(特定種類のトークンバケット用の、クライアントAの価格設定ポリシーに、クライアントC2の価格設定ポリシーに、または両クライアントポリシーに含まれうる)に従って、簡易化されうる。クライアント間支払振替ポリシー4117は、例えば、買い手または売り手のいずれかが売買に関して負いうるサービス料、及び/またはクライアント間の支払いが処理されるスケジュール(例えば、1つのスケジュールに従って週に一度蓄積された支払が決済すなわち振替えられうる)を示しうる。いくつかの実施形態において、トークンは価格設定目的で、通貨の論理的同値として使用されうる(少なくとも一時的に)。例えば、クライアントC1はサービスにNトークンの借りがあり(または別のクライアントにNトークンの借りがあり)、そして当該負債は実際の通貨を使用して、または代替トークンを使用して返済されうる(例えば、Nトークンの負債は、N+kトークンを振替えることで返済されうる。この時kトークンは負債の「利息」を表し、負債者が当該負債を返済するのにかかった時間に基づいて計算される)。異なるクライアントが所有する作業対象も含む多数の作業対象によってトークンが共有されるいくつかの実施形態において、クライアント間支払振替ポリシーはまた、図17に示された例示的トークン共有プロトコル等の前述のものと同様のトークン共有技術にも適用可能でありうる。
少なくともいくつかの実施形態において、受付コントローラ180は、少なくとも一部の種類のトークンバケットに関して、将来の受付制御判断の確実な保証を何も提供できない。例えば、前述のように、バーストモード受付制御に関して「ベストエフォート」手法が使用されるが、一般に作業要求は通常モード間よりもバーストモード間において拒否される確率が高い。いくつかの実施形態において、価格設定ポリシー4005は、価格設定ポリシーに従って取得または消費されたトークンに適用されうる1以上のベストエフォート制約4120の指示を含みうる。一例を挙げれば、受付コントローラのベストエフォートにもかかわらず、かつバーストモードトークンをいくつか取得するためにクライアントが負った料金にもかかわらず、例えばバーストモードの間に作業対象が共有物理または論理リソースの処理能力限度に達した場合、作業要求は拒否または延期されなければならない可能性があることを、制約4120はクライアントに知らせうる。よって、ベストエフォート制約4120は、一部の(一般に珍しい)状況において、クライアントのトークン購入は、クライアントの全作業要求に対する高い受付率または高品質の応答を確保するのに十分でない可能性があることを示す、クライアントへのリマインダーとして役立ちうる。いくつかの実施形態において、少なくとも一部のクライアントは、価格設定ポリシー4005において示される割引ポリシー4124に従って割引を提案されうる。例えば、クライアントに責任のない様々な制約または原因のいずれかにより、クライアントが購入済バーストモードトークンのX%以下しか使えない場合、一部または全ての購入済バーストモードトークンがクライアントに返済されうる。一実施形態においては、数量割引(例えば、購入済みトークンの総数に基づいた払戻し)に対応可能であり、そして割引ポリシー4124がこのような割引の料金を示しうる。様々な実施形態において、図27に示される一部の種類の要素は、所定の価格設定ポリシー4005に含まれず、及び/または図27に示されない他の要素が含まれうる。
トークン価格設定方法
図28は、少なくともいくつかの実施形態による、バーストモード処理の請求額を決定するために行われうる処理態様を示すフロー図である。構成要素4201に示されるように、描写された実施形態において、前述の種類の1以上のモード(通常モード及びバーストモード等)で作動するように構成された1以上の作業対象における作業量管理のために、いくつかのトークンバケットのインスタンスが生成されうる。作業対象において作業要求を実行対象として受付けるか否かに関する判断は、1以上のバケットのトークン集合数に基づいて行われ、そして作業要求を受付ける判断は、例えば1以上のバケットのいくつかのトークンの消費を伴いうる。構成要素4204に示されるように、一部または全てのバケットのトークン集合数の変更に至る処理に適用する1以上の価格設定ポリシーは、例えばクライアントのポリシー選択要求に価格設定マネジャー4080が応じることによって、またはネットワークアクセス可能なサービスの内部構成パラメータに基づいて、決定されうる。例えば、価格設定ポリシーはクライアントに、バーストモードの間のバケットB1のトークン消費に関して、1つのバケットB1から別のバケットB2へのトークン譲渡に関して、バケット補充率及び/または最大トークン集合数限度の短期的または長期的変更に関して、またはこれらの種類の変更のある組合せに関して、請求される額を示しうる。一部の価格設定ポリシーはバーストモードの間にのみ適用され、一方他の価格設定ポリシーは通常モードの間にのみ適用されうる、または将来のバーストモードに対する備えに適用されうる(前述のように通常モードバケットからバーストモードバケットへの未使用トークンの譲渡、作業対象間のトークン共有、または余剰トークンの分配等)。少なくとも一実施形態において、通常モード価格設定ポリシーは、プロビジョン処理能力を上限とする作業要求を受付けるのに消費されうるプロビジョン能力バケット420のトークンに対する定額料金を含みうる。このような料金は、プロビジョン能力バケットから使用される実際のトークン数にかかわらず、変化し得ない。いくつかの実施形態において、一部の価格設定ポリシーは、例えば価格設定マネジャー4080において、または価格設定マネジャー4080により実行されるプログラム的インターフェイスを使用して対応されうるトークンマーケットプレイスを利用して行われる取引に対し適用可能でありうる。
各価格設定ポリシーは、例えば、ポリシーに対する1以上の適用基準(ポリシーが適用されるバーストモード等の処理モード(複数可)と、ポリシーが適用されるのに満たされなければならない他の特定条件とを指定しうる)と、トークン集合数の変更に至る処理に対応付けられた1以上の不変もしくは変動価格設定コンポーネントまたは価格設定額とを含みうる。いくつかの実装例において、絶対価格設定額の代わりに、例えば要因の組合せによる関数の形の価格設定式が、価格設定ポリシーにおいて指定されうる。いくつかの実施形態において、価格設定ポリシーは、クライアント間支払振替ポリシー、割引ポリシー等、図27で示されたものと同様の1以上の追加要素を含みうる。価格設定マネジャー4080は、価格設定ポリシーに対応付けられた様々なバケットにおけるトークン集合数の変更と、トークン集合数のどの変更一式に対してどの価格設定ポリシーが適用されたかを示す情報とを、様々な時間帯において収集、集約、記録するように構成されうる(構成要素4208)。異なる実施形態において、トークン集合数の変更に関するデータ集合に対し、様々な集約技術のいずれかが使用されうる。例えば、いくつかの実施形態において、所定のバケットのトークン集合数に関わる全ての変更はそれぞれ記録され、一方別の実施形態においては、トークン数は定期的にサンプリングされうる、または予定された時間間隔で収集されうる。いくつかの実装例において、クライアントが全く課金されない一部の種類のトークン集合数変更がありうることに留意されたい。例えば、少なくとも一部のクライアントに対し、一部のトークン処理は無料でありうる。
いくつかの実施形態において、ある時間間隔においてトークン集合数に変更がない場合、クライアントはバケットのトークンに対して課金されず、一方別の実施形態においては、クライアントは少なくともある種のトークンに対し、それらが未使用で残ったとしても(例えば、所定の時間間隔において所定のバケットのトークン集合数が変化しなかったとしても)課金されうる。一実施形態において、請求額はトークンの異なるカテゴリによって変動しうる。例えば、通常モードの間、またはバーストモードの間、または通常及びバーストの両モードの間、書込みは読出しより料金が高くありうる、またはその逆も同様でありうる。描写された実施形態において、1以上のバケットのトークン集合数変更の記録に少なくとも一部、かつ1つまたは複数の価格設定ポリシーに少なくとも一部基づいて、クライアントに対し請求額が生成されうる(構成要素4212)。様々な実施形態において、前述のトークンベースの受付制御の一部または全ての異なる態様に対し、例えば複数のカテゴリのバーストに対応する複合トークンバケットの使用に適用されるポリシー、優先度ベースカテゴリのトークンバケットに適用されるポリシー等を含む、価格設定ポリシーが選択されうることに留意されたい。
図29は、少なくともいくつかの実施形態による、条件付きバーストモード価格設定に関連する処理態様を示すフロー図である。描写された実施形態において、バーストモードバケットセット125は、ローカルバースト限度バケット604及び1以上の共有リソース能力バケット606を含む複数のバケットを備え、そして異なる価格設定ポリシーが複数のバーストモードバケットのうちの1つのバケットのトークン集合数に、別のバーストモードバケットの集合数に基づいて、適用されうる。作業対象に対する次の作業要求が受信される(構成要素4301)。作業対象がバーストモードで作動していない場合(構成要素4304にて検出)、例えば1以上の通常モードトークンバケットのトークン集合数に基づいて、通常モード価格設定ポリシーを使用して作業要求に適用される価格設定が決定される(構成要素4308)。例えば、いくつかの実施形態において、前述のように通常モードの間、作業対象のプロビジョン処理能力に比例する定額先払料金が、プロビジョン処理能力を作業要求到着率が超えない限り、消費される実際のトークン数に関係なく、クライアントに課金されうる。
同様に構成要素4304で検出されるように、作業対象がバーストモードで作動している場合、描写された実施形態において、少なくとも1つの共有リソース能力バケット606のトークン集合数が特定されうる。1つまたは複数の共有リソース能力バケットが、実施されている消費ポリシーに基づいて十分な数のトークンを含む場合(構成要素4312)、作業対象に適用可能なローカルバースト限度バケット604のトークン集合数が次に確認されうる。描写された実施形態において、ローカルバースト限度バケット604の集合数は、例えば、作業対象は孤立しているとみなした時の(共有リソースを考慮しない)作業対象に割当てられた処理能力限度に基づいた利用可能処理能力を示しうる。描写された実施形態において、作業要求を実行対象として受付けるための価格設定は、共有リソース能力バケット(複数可)及びローカルバースト限度バケットの両方の集合数に依存しうる。共有リソース能力バケット(複数可)及びローカルバースト限度バケットの両方が、それぞれの消費ポリシーに基づいて十分なトークンを含む場合(構成要素4312及び4316にて判定)、作業要求は受付けられ、1以上のトークンが両方の種類のバケットから消費され、そして第一バーストモード価格設定ポリシーが適用されうる(構成要素4320)。描写された実施形態において、1つまたは複数の共有リソース能力バケットは十分なトークンを含むが、ローカルバースト限度バケットは含まない場合、作業要求はなお実行対象として受付けられうる。1以上のトークンが共有リソース能力バケット(複数可)から消費され、そして第二バーストモード価格設定ポリシーが適用されうる(構成要素4324)。共有リソース能力バケット(複数可)及びローカルバースト限度バケットの両方が十分なトークンを含まない場合、作業要求は拒否、再試行、または延期されうる(構成要素4328)。受付制御判断が行われ、受付け(構成要素4320または4324)または拒否(構成要素4328)のいずれかに結果が決まった後、次の受信済作業要求が、例えば構成要素4301以降に対応する処理を実行することで対応されうる。図29に示される条件付きバーストモード価格設定手法は、例えば、ローカルバースト限度バケットの最大集合数は控えめに設定され、一方で共有リソース能力バケット(複数可)においてその利用可能処理能力が表される共有リソースは、少なくとも一部の時間帯において、ローカルバースト限度バケットのみを使用した場合に対応可能な作業要求到着率よりも高い作業要求到着率に対応可能でありうる環境において使用されうる。共有リソースを使用するいくつかの作業対象の作業量が時間と共に大幅に変動する場合、ローカルバースト限度バケットが空であっても、短期バーストに対応するのに十分な能力が共有リソースにおいて利用可能になる時間帯がありえ、そして少なくともこのようなシナリオにおいては第二価格設定ポリシーが役立ちうる。図29に示されるものと同様の価格設定技術はまた、前述の共有リソースの余剰能力を表すトークンの公平分配の技術と共に使用されうる。
図30は、少なくともいくつかの実施形態による、価格設定ポリシーのクライアント選択を可能にするために実行されうる処理態様を示すフロー図である。構成要素4401に示されるように、ウェブページ、ウェブサイト、またはAPI等の1以上のプログラム的インターフェイスが実行され、これによりクライアントは複数の対応価格設定ポリシーの中から選択することができる。少なくともいくつかの実施形態において、価格設定マネジャー4080のインターフェイスマネジャーサブコンポーネントが、当該インターフェイスの実行の責任を担いうる。いくつかの実施形態において、複数の価格設定ポリシーがバーストモード処理において利用可能であり、一方別の実施形態においては、複数のポリシーが通常モード及びバーストモードの両処理において対応されうる。少なくともいくつかの実施形態において、特定の種類のパラメータ変更(補充率または最大トークン集合数限度の短期的または長期的変更等)に特定的に適用する価格設定ポリシーは、インターフェイスを介して選択可能でありうる。利用可能な価格設定ポリシーの表示、または記入もしくはパラメータ化可能なポリシーテンプレートが、クライアントに提供されうる(構成要素4404)。例えば、一実装例において、異なる価格設定ポリシーの様々な要素(図27に示される要素等)に関する詳細は、ウェブサイトを介して提供されうる。
作業量のニーズ及び/または予算に基づいて、所定のクライアントは使用する選択ポリシー及び/またはパラメータを、例えば実行インターフェイスのうちの1つを使用して提出した価格設定ポリシー要求を介して、指示しうる(構成要素4408)。このような要求に応じて、価格設定マネジャー4080は、クライアントのために選択価格設定ポリシー及び/またはパラメータの実行を開始しうる(構成要素4412)。少なくともいくつかの実装例において、例えば、価格設定マネジャー4080は、価格設定ポリシーの使用を開始するために、受付コントローラ180と通信しうる。
図31は、少なくともいくつかの実施形態による、バーストモードトークンのマーケットプレイスを有効にするために実行されうる処理態様を示すフロー図である。描写された実施形態において、構成要素4501に示されるように、バーストモード受付制御及び/または通常モード受付制御に使用可能なトークンの宣伝、販売、購入、共有、または譲渡に関わる様々な種類の取引に対応するために、ウェブページ及び/またはAPI等の1以上のプログラム的インターフェイスが実行されうる(例えばインターフェイスマネジャー4020により)。マーケットプレイスマネジャー4040(例えば、価格設定マネジャーのサブコンポーネント)は、実行インターフェイスを介して1以上のクライアントから、トークンの販売、オークション、または購入の提案等、トークン取引提案の通知を受信し(構成要素4504)、そして当該提案を他のクライアントに公表または宣伝しうる。少なくともいくつかの実施形態において、価格設定マネジャー及び/または受付コントローラは、トークンが必要なクライアント(例えば、最近の時間間隔において、作業要求に関して通常の拒否率よりも高い拒否率を経験したクライアント)を認識しており、そしてこのようなトークン消費候補者とトークン提案を合わせることが可能でありうる。
マーケットプレイスマネジャー4040は、固定価格またはオークションの落札に基づいた、あるトークンセットの販売または譲渡に関わる取引等の取引完了の通知を、1以上のインターフェイスを介して受信しうる(構成要素4508)。これに応じて、描写された実施形態において、マーケットプレイスマネジャー4040は、例えば1以上の譲渡元バケットのトークン数を削減し、及び/または1以上の他のバケットのトークン数を増加させることによって、影響を受けたバケット(複数可)のトークン集合数を変更しうる(構成要素4512)。クライアントに課金される請求額(例えば所定のマーケットプレイス取引の買い手クライアント及び売り手クライアントの両方にかかるサービス料を含みうる)は、取引の詳細及び1つまたは複数の適用価格設定ポリシー4005に従って生成されうる(構成要素4516)。
少なくともいくつかの実施形態において、前述のように、データベーステーブル等の作業対象は複数の論理パーティションに分割され、そして受付制御は、各パーティションで使用されているそれぞれの受付制御パラメータセット及びトークンバケットにより論理パーティションレベルにおいて行われうる。例えば、1テラバイトのデータを含む大きなデータベーステーブルは、各自の受付制御用トークンバケットセットを有する、各250メガバイトの4つの論理パーティションで構成されうる。いくつかの実装例において、同様に前述のように、例えばデータ耐久性のため及び/または高い可用性のために、各論理パーティションの多数の論理レプリカが保持されうる。いくつかのシナリオにおいて、クライアント作業量は必ずしもパーティション間に均一に分散し得ない。その結果、所定の時点に、ある使用頻度が高いパーティションにおけるトークンバケット(バーストモードバケット422等)の利用可能トークン数は、他の使用頻度の低いパーティションにおける対応するトークンバケットの利用可能トークン数より大幅に少ない可能性がある。従って、非常に不均等な作業量により起こりうる作業要求拒否の数を減らすために、異なるパーティションの受付コントローラ180(複数可)は、いくつかの実施形態において、図16〜図21を参照して説明されたようなトークン共有プロトコルを使用し、そしてパーティションを所有または使用するクライアントは、パーティション間トークン共有に関する価格設定ポリシーに従って、トークン共有に対し課金されうる。図32は、少なくともいくつかの実施形態による、作業対象の異なるパーティション間のトークン譲渡に対して価格設定を行うために実行されうる処理態様を示すフロー図である。
図32の構成要素4601に示されるように、作業対象(データベーステーブルまたは論理ボリューム等)は、各自の通常モードバケットセット及び各自のバーストモードバケットセット等、それぞれが各自の受付制御用トークンバケットを有するパーティションの集合として構成されうる。従って、描写された実施形態において、各パーティションは独立的に設定可能な受付制御パラメータを有する個別の作業対象としてみなされうる。価格設定マネジャー4080は、異なるパーティションのバケット間のトークン譲渡に適用する価格設定ポリシーを決定するように構成されうる(構成要素4604)。例えば、NトークンをパーティションP1のバーストモードトークンバケットBB1から、パーティションP2のバーストモードトークンバケットBB2へ譲渡するための価格設定ポリシーは、クライアントの入力に基づいて、または設定可能なパラメータに基づいて特定されうる。このようなトークン譲渡は、トークン集合数が閾値を下回ったことの検出、前回パーティション間のトークン譲渡の必要性が検討されてから特定の時間が経ったことの検出、作業要求に対する閾値拒否率の検出等、異なる実施形態において様々な種類のトリガーイベントの発生に基づいて実行されうる。構成要素4608に示されるように、パーティション間のトークン譲渡を試みるべきであるか否かを調べるトリガーイベントが検出されうる。
どれか1つのパーティションのトークン数が閾値T1を下回っているかを調べるために、サブセットまたは全てのパーティションのトークン集合数が調査されうる。描写された実施形態において、トークン数が閾値T1を下回るパーティション「p」が見つかり(構成要素4612にて判定)、かつ別のパーティション「q」のトークン集合数が閾値T2を上回ることが判明した(構成要素4616にて判定)場合、いくつかのトークンがパーティション「q」からパーティション「p」に譲渡されうる(構成要素4620)。いくつかの事例において、閾値T1を下回るトークン数を有する複数のパーティションが見つかり、及び/またはT2を上回るトークン集合数を有する複数のパーティションが見つかった場合、多数の譲渡元及び譲渡先バケットペアの間でトークン譲渡が開始されうる。例えば、一実装例において、パーティションp、q、r、sの現在のトークン集合数に関する所定の調査において、パーティションp及びrは閾値T1を下回るトークン集合数を有していることがわかり、一方パーティションqはT2+Nトークンを有していることがわかり、そしてパーティションsは譲渡するのに十分なトークンを有していない場合、N/2トークンがパーティションp及びrに追加され、パーティションqはNトークン分削減されうる。1つまたは複数の譲渡の記録が保持され、そして最終的に譲渡に関してクライアントに請求する請求額が、記録(複数可)及び価格設定ポリシーに基づいて生成されうる(構成要素4624)。パーティション間でトークンを譲渡するか否かに関する判断が行われた後(肯定的判断、否定的判断のいずれでも)、次のトリガーイベント及び/または異なる譲渡元と譲渡先パーティションペアに対し、構成要素4608以降に対応する処理が繰り返されうる。
前述のように、少なくともいくつかの実施形態において、受付制御に使用されるトークンバケットはそれぞれ、補充率、最大トークン集合数等の設定可能パラメータセットを有しうる。いくつかの実施形態において、クライアントは、所定のトークンバケットに対応付けられた1以上のパラメータの短期間または長期間の変更を所望しうる。例えば、クライアントは、翌日または翌週に非常に高い作業要求バーストが不定期に起こりうることを予測可能であり、そしてこのようなバーストに対応するために余分に支払う意思を有しうる。従って、いくつかの実施形態において、トークンバケット補充率の変更及び/または他の構成設定の変更を行うための価格設定ポリシーが対応されうる。図33は、少なくともいくつかの実施形態による、トークンバケットの構成設定の変更に対して価格設定を行うために実行されうる処理態様を示すフロー図である。構成要素4701に示されるように、初期ポリシー及びパラメータは、例えば作業対象が初期化される時に、通常モードバケット及びバーストモードバケットを含む1以上のトークンバケットに対し設定されうる。バケット(複数可)のパラメータ変更に対する価格設定ポリシーが特定され(構成要素4704)、クライアントはパラメータ変更に関連する費用を知らされうる。例えば特定の時間窓において補充率または最大トークン集合数を変更するといった、1つまたは複数の特定バケットに対する1以上のパラメータの変更要求が受信されうる(構成要素4708)。当該要求に基づいてパラメータが変更され(構成要素4712)(例えば、当該時間窓の間はパラメータに対し新しい値が使用され、当該時間窓が終了すると初期値が再度適用されうる)、そして実行されたパラメータ変更及び価格設定ポリシーに基づいて、最終的に請求額が生成されうる(構成要素4716)。
様々な実施形態において、図10〜15、図21、図25、及び図28〜33のフローチャートに示される処理は、示されるものとは異なった順序で実行可能、及び/または並列して実行可能であることに留意されたい。いくつかの実施形態において、本明細書において示される1以上の処理は省略可能であり、及び/または図示されていない他の処理も実行可能である。
活用事例
トークンベース受付制御及びバーストモード処理の価格設定に関する前述の技術は、様々な異なるシナリオにおいて役立ちうる。例えば、いくつかのデータベース環境において、クライアントは、非常に大きい(テラバイトまたはペタバイトレベルの)テーブルまたはテーブルセットを有し、そして当該テーブルにおいて一部の時間帯にのみ(他の時間帯ではなく)非常に高い入出力率を命令しうる。同様に、他のネットワークアクセス可能なサービス(汎用ストレージサービス、コンピューティング集約サービス等)もまた、高い作業量の一時的期間を経験しうる。一般に、データベーステーブル等の所定の作業対象に対する作業量の経時的な変化を予測することは非常に難しいだろう。クライアントは時々または稀にしか起こらない高い作業量レベルに対し支払いたくないだろう。同時に、サービスのプロバイダは非常に高いレベルの作業要求を長い時間にわたって対処するのに十分なリソースを備えておきたくないかもしれないが、しかし多数の要求を拒否することなく、または顧客要求の応答時間を大幅に増加することなく、到着率における一時的バーストに可能な限り対応したいだろう。本明細書で説明される種類のトークンベース受付制御手法を使用することで、プロバイダはリソースを無駄にせずに、要求到着率におけるバーストの大部分(全てではなくとも)に対応可能でありうる。トークン共有技術及び共有リソースの余剰能力の公平分配の使用はまた、不均等に分散した作業要求到着率にクライアントが対処することを支援しうる。
バーストモード処理及び/または通常モード処理に対する柔軟な(例えばクライアント選択の)価格設定の対応は、様々な種類の不均一な作業量に対応する間もクライアントの予算優先性が守られるという、クライアントの信頼感を高めうる。トークンマーケットプレイスにおいてトークンを購入及び販売できることは、クライアントが時に不正確な作業量予測をしても、このような不正確さに対するペナルティは最小化できるという可能性を高めうる
例示的コンピュータシステム
少なくともいくつかの実施形態において、トークンベース受付コントローラ、トークン分配器、価格設定マネジャー、及び/または様々な種類の作業対象を実行する技術を含む、本明細書で説明される1以上の技術の一部または全てを実施するサーバは、1以上のコンピュータアクセス可能な媒体を含む、またはこのような媒体にアクセスするように構成された汎用コンピュータシステムを含みうる。図34は、このような汎用コンピューティングデバイス8000を示す。図示された実施形態において、コンピューティングデバイス8000は、入出力インターフェイス8030を介してシステムメモリ8020に接続された1以上のプロセッサ8010を含む。コンピューティングデバイス8000はさらに、入出力インターフェイス8030に接続されたネットワークインターフェイス8040を含む。
様々な実施形態において、コンピューティングデバイス8000は、1つのプロセッサ8010を含むユニプロセッサシステム、またはいくつか(例えば2つ、4つ、8つまたは別の好適な個数)のプロセッサ8010を含む多重プロセッサシステムでありうる。プロセッサ8010は、命令を実行可能な任意の好適なプロセッサでありうる。例えば、様々な実施形態において、プロセッサ8010は、多種の命令集合アーキテクチャ(ISA)(例えばx86、PowerPC、SPARC、MIPS‐ISA、またはその他の好適なISA等)のいずれかを実施する汎用または組込みプロセッサでありうる。多重プロセッサシステムにおいて、各プロセッサ8010は一般に、必ずしもではないが、同一のISAを実施しうる。
システムメモリ8020は命令と、プロセッサ8010(複数可)がアクセス可能なデータを記憶するように構成されうる。様々な実施形態において、システムメモリ8020は、静的ランダムアクセスメモリ(SRAM)、同期式動的RAM(SDRAM)、不揮発性/フラッシュメモリ、またはその他の種類のメモリ等、任意の好適なメモリ技術を使用して実行されうる。図示された実施形態において、前述の方法、技術及びデータ等、1以上の所望する機能を実行するプログラム命令及びデータは、システムメモリ8020においてコード8025及びデータ8026として記憶されることが示される。
一実施形態において、入出力インターフェイス8030は、プロセッサ8010と、システムメモリ8020と、データオブジェクトパーティションの物理レプリカを記憶するのに使用される様々な種類の永続的及び/または揮発性ストレージデバイス等、ネットワークインターフェイス8040もしくは他の周辺インターフェイスを含む任意の周辺デバイスとの間の入出力トラフィックをデバイス内で調整するように構成されうる。いくつかの実施形態において、入出力インターフェイス8030は、あるコンポーネント(例えば、システムメモリ8020)からのデータ信号を、別のコンポーネント(例えば、プロセッサ8010)が使用する好適な形式に変換するのに必要な任意のプロトコル、タイミング、または他のデータの変換を行いうる。いくつかの実施形態において、入出力インターフェイス8030は、例えば周辺構成要素相互接続(PCI)バス規格、または汎用シリアルバス(USB)規格等、様々な種類の周辺バスを介して取り付けられるデバイスのサポートを含みうる。いくつかの実施形態において、入出力インターフェイス8030の機能は、例えばノースブリッジとサウスブリッジといった2つ以上の別々のコンポーネントに分割されうる。また、いくつかの実施形態において、システムメモリ8020に対するインターフェイス等、一部または全ての入出力インターフェイス8030の機能性は、プロセッサ8010に直接取込まれうる。
ネットワークインターフェイス8040は、コンピューティングデバイス8000と、例えば図1aから図33において示されたような他のコンピュータシステムまたはデバイス等、1つまたは複数のネットワーク8050に接続された他のデバイス8060との間において、データが交換できるように構成されうる。様々な実施形態において、ネットワークインターフェイス8040は、例えばイーサネット(登録商標)ネットワークの類の任意の好適な有線または無線汎用データネットワークを介した通信に対応しうる。さらに、ネットワークインターフェイス8040は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等の電気通信/電話ネットワークを介した、またはファイバチャネルSAN等のストレージエリアネットワークを介した、または任意の他の好適な種類のネットワーク及び/またはプロトコルを介した、通信に対応しうる。
いくつかの実施形態において、対応する方法及び装置の実施形態を実施するために図1aから図33に関して前述のように、システムメモリ8020は、プログラム命令及びデータを記憶するように構成されたコンピュータアクセス可能媒体の一実施形態でありうる。しかしながら別の実施形態において、プログラム命令及び/またはデータは、異なる種類のコンピュータアクセス可能媒体上で受信され、送信され、記憶されうる。一般に、コンピュータアクセス可能媒体には、例えば入出力インターフェイス8030を介してコンピューティングデバイス8000に接続されるディスクまたはDVD/CDといった、磁気媒体または光学式媒体等の非一時的な記憶媒体及びメモリ媒体が含まれうる。非一時的なコンピュータアクセス可能記憶媒体には、コンピューティングデバイス8000のいくつかの実施形態にシステムメモリ8020または別の種類のメモリとして含まれうるRAM(例えば、SDRAM、DDR、SDRAM、RDRAM、SRAM等)、ROM等の任意の揮発性または不揮発性媒体も含まれうる。さらに、コンピュータアクセス可能媒体には、送信媒体すなわち信号が含まれ、このような信号にはネットワーク及び/または無線リンク等の通信媒体を介して伝達される電気、電磁またはデジタル信号等があり、当該信号伝達はネットワークインターフェイス8040を介して実行されうる。図34に示されるような多重コンピューティングデバイスの一部または全ては、様々な実施形態において説明される機能性を実行するために使用されうる。例えば、様々な異なるデバイス及びサーバ上で作動するソフトウェアコンポーネントは、共同して機能性を提供しうる。いくつかの実施形態において、説明された機能性の一部は、汎用コンピュータシステムを使って実行されるのに加えて、または代わって、ストレージデバイス、ネットワークデバイス、または専用コンピュータシステムを使って実行されうる。本明細書で使用される「コンピューティングデバイス」という用語は、少なくとも全てのこの種類のデバイスを指し、かつこの種類のデバイスに限定されない。
前述の内容は以下の項目を参照することで、より理解されるだろう。
(第1項)
1以上のコンピューティングデバイスを備えるシステムであって、コンピューティングデバイスは、
第一作業対象及び第二作業対象が、実行対象として受付けられた作業要求応じて共有リソースを使用するように設定し、第一作業対象は第一プロビジョン処理能力率を有し、第二作業対象は第二プロビジョン処理能力率を有し、そして共有リソースは処理能力限度を有し、
第一作業対象及び第二作業対象が、作業要求の受付制御用のそれぞれのトークンバケットセットを有するように設定し、各トークンバケットセットは作業要求を実行対象として受付けるか否かを決定するのに使用されるトークン集合を有する1以上のバケットを備え、
(a)第一時間間隔において第一及び第二作業対象が作業要求を受信した相対率を示す到着率比と、(b)第一及び第二プロビジョン処理能力率に少なくとも一部基づいたプロビジョン処理能力比と、(c)第二時間間隔において受付制御用の第一及び第二作業対象のバケットセット間で分配するトークンの合計数とを特定し、合計数は共有リソースの処理能力限度に少なくとも一部基づき、
到着率比及びプロビジョン処理能力比に少なくとも一部基づいて、第一作業対象の特定バケットに、合計数を超えない特定数のトークンを追加し、
第一作業対象の特定バケットのトークン集合数に少なくとも一部基づいて、第二時間間隔において、第一作業対象に対する特定の作業要求を実行対象として受付ける
ように構成された、システム。
(第2項)
トークンの合計数は、共有リソースの処理能力限度から第一及び第二プロビジョン処理能力率の合計を減算することで、少なくとも一部決定される、第1項に記載のシステム。
(第3項)
第一作業対象のバケットセットは、作業要求到着率が閾値より低い通常モード作動中に受付制御のためにトークン集合数が調べられる通常モードバケットと、作業要求到着率が閾値以上のバーストモード作動中に受付制御のためにトークン集合数が調べられるバーストモードバケットとを備え、特定バケットはバーストモードバケットを含む、第1項に記載のシステム。
(第4項)
第一作業対象はネットワークアクセス可能なサービスにより管理される第一ストレージオブジェクトの少なくとも一部を備え、第二作業対象はネットワークアクセス可能なサービスにより管理される第二ストレージオブジェクトの少なくとも一部を備え、共有リソースは第一作業対象及び第二作業対象が記憶されるストレージデバイスを備える、第1項に記載のシステム。
(第5項)
特定の作業要求は(a)読出し処理、または(b)書込み処理を1以上含む、第1項に記載のシステム。
(第6項)
1以上のコンピュータデバイスにより、
第一作業対象及び第二作業対象が、実行対象として受付けられた作業要求応じて共有リソースを使用するように設定し、第一作業対象は第一プロビジョン処理能力率を有し、第二作業対象は第二プロビジョン処理能力率を有し、
第一作業対象及び第二作業対象が、作業要求の受付制御用のそれぞれのトークンバケットセットを有するように設定し、各トークンバケットセットは作業要求を実行対象として受付けるか否かを決定するのに使用されるトークン集合を有する1以上のバケットを備え、
(a)第一時間間隔における第一及び第二作業対象の作業要求到着率を示す第一計量と、(b)第一及び第二プロビジョン処理能力率に関連する第二計量とを特定し、
第一計量、第二計量、及び共有リソースの処理能力限度に少なくとも一部基づいて、第一作業対象の特定バケットに特定数のトークンを追加し、
第一作業対象の特定バケットのトークン集合数に少なくとも一部基づいて、第二時間間隔において、第一作業対象に対する特定の作業要求を実行対象として受付ける
ことを含む方法。
(第7項)
1以上のコンピューティングデバイスにより、
共有リソースの処理能力限度に少なくとも一部基づいて、第一及び第二作業対象のバケットセットに分配されるトークンの合計数を決定し、分配されるトークンの特定数は合計数を超えない
ことをさらに含む第6項に記載の方法。
(第8項)
トークンの合計数は、共有リソースの処理能力限度から第一及び第二プロビジョン処理能力率の合計を減算することで、少なくとも一部決定される、第7項に記載の方法。
(第9項)
第一作業対象のバケットセットは、作業要求到着率が閾値より低い通常モード作動中に受付制御のためにトークン集合数が調べられる通常モードバケットと、作業要求到着率が閾値以上のバーストモード作動中に受付制御のためにトークン集合数が調べられるバーストモードバケットとを備え、特定バケットはバーストモードバケットを含む、第6項に記載の方法。
(第10項)
第一作業対象はネットワークアクセス可能なサービスにより管理される第一ストレージオブジェクトの少なくとも一部を備え、第二作業対象はネットワークアクセス可能なサービスにより管理される第二ストレージオブジェクトの少なくとも一部を備え、共有リソースは第一作業対象及び第二作業対象が記憶されるストレージデバイスを備える、第6項に記載の方法。
(第11項)
第一作業対象はネットワークアクセス可能なマルチテナントデータベースサービスにより管理される第一テーブルパーティションの少なくとも一部を備え、第二作業対象はネットワークアクセス可能なマルチテナントデータベースサービスにより管理される第二テーブルの少なくとも一部を備える、第6項に記載の方法。
(第12項)
共有リソースはソフトウェアモジュールのデータ構造を備える、第6項に記載の方法。
(第13項)
特定の作業要求は(a)読出し処理、または(b)書込み処理を1以上含む、第6項に記載の方法。
(第14項)
1以上のコンピューティングデバイスにより、
第一計量、第二計量、及び処理能力限度の特定関数に少なくとも一部基づいて、分配されるトークンの特定数を決定し、
第一及び第二作業対象に関連する1以上の追加計量を監視し、
1以上の追加計量に少なくとも一部基づいて、特定関数を修正する
ことをさらに含む第6項に記載の方法。
(第15項)
プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって、プログラム命令は1以上のプロセッサ上で実行されると、
第一作業対象及び第二作業対象が、実行対象として受付けられた作業要求応じて共有リソースを使用するように設定し、第一作業対象は第一プロビジョン処理能力率を有し、第二作業対象は第二プロビジョン処理能力率を有し、
第一作業対象及び第二作業対象が、作業要求の受付制御用のそれぞれのトークンバケットセットを有するように設定し、各トークンバケットセットは作業要求を実行対象として受付けるか否かを決定するのに使用されるトークン集合を有する1以上のバケットを備え、
(a)第一時間間隔における第一及び第二作業対象の作業要求到着率を示す第一計量と、(b)第一及び第二プロビジョン処理能力率に関連する第二計量とを特定し、
第一計量、第二計量、及び共有リソースの処理能力限度に少なくとも一部基づいて、第一作業対象の特定バケットに特定数のトークンを追加し、
第一作業対象の特定バケットのトークン集合数に少なくとも一部基づいて、第二時間間隔において、第一作業対象に対する特定の作業要求を実行対象として受付ける、
非一時的コンピュータアクセス可能記憶媒体。
(第16項)
プログラム命令は1以上のプロセッサ上で実行されると、
共有リソースの処理能力限度に少なくとも一部基づいて、第一及び第二作業対象のバケットセットに分配されるトークンの合計数を決定し、分配されるトークンの特定数は合計数を超えない、
第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第17項)
第一作業対象のバケットセットは、作業要求到着率が閾値より低い通常モード作動中に受付制御のためにトークン集合数が調べられる通常モードバケットと、作業要求到着率が閾値以上のバーストモード作動中に受付制御のためにトークン集合数が調べられるバーストモードバケットとを備え、特定バケットはバーストモードバケットを含む、第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第18項)
第一作業対象はネットワークアクセス可能なサービスにより管理される第一ストレージオブジェクトの少なくとも一部を備え、第二作業対象はネットワークアクセス可能なサービスにより管理される第二ストレージオブジェクトの少なくとも一部を備え、共有リソースは第一作業対象及び第二作業対象が記憶されるストレージデバイスを備える、第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第19項)
共有リソースはオペレーティングシステムに実装された論理リソースを含む、第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第20項)
特定の作業要求は、(a)読出し処理、または(b)書込み処理を1以上含む、第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
前述の内容は以下の項目を参照することで、より理解されるだろう。
(第1項)
1以上のコンピューティングデバイスを備えるシステムであって、コンピューティングデバイスは、
作業対象の作業量管理に対応付けられた1以上のトークンバケットのインスタンスを作成し、作業対象は、作業要求を実行対象として受付けるためのそれぞれの受付制御パラメータセットにより複数の作動モードで作動するように構成され、作業要求受付判断は、1以上のトークンバケットのうち少なくとも1つのバケットのトークン集合数に少なくとも一部基づいて行われ、
1以上のトークンバケットのうち特定のトークンバケットに適用するトークン価格設定ポリシーを特定し、トークン価格設定ポリシーは(a)複数の作動モードのうちトークン価格設定ポリシーが適用される少なくともバースト作動モードの特定を含む、トークン価格設定ポリシーの1以上の適用基準と、(b)特定のトークンバケットのトークン集合数の変更に関してクライアントに請求する価格設定額とを示し、
1以上の適用基準を満たした作業対象のバーストモード作動中に起こった、特定のトークンバケットのトークン集合数に関する1以上の変更を、時間帯を通して記録し、
時間帯を通して記録された1以上の変更に少なくとも一部基づいて、クライアントに請求する請求額を生成する
ように構成された、システム。
(第2項)
1以上のトークンバケットは、作業対象の作動モードを決定するためにトークン集合数が使用される通常モードバケットと、バーストモード作動中に作業要求を受付けるか否かを決定するためにトークン集合数が使用される1以上のバーストモードバケットとを備え、特定のトークンバケットは当該の1以上のバーストモードバケットのうちのバーストモードバケットを含む、第1項に記載のシステム。
(第3項)
1以上のバーストモードバケットは、トークン集合数が作業対象の利用可能処理能力を示すローカルバースト限度バケットと、トークン集合数が複数の作業対象により共有されるリソースの利用可能処理能力を示す共有リソース能力バケットとを含み、特定バケットは共有能力バケットを含み、1以上の適用基準のうちの特定の適用基準は、ローカルバースト限度バケットのトークン集合数が特定の閾値を上回らないという判断に応じて適用する価格設定ポリシーを示す、第2項に記載のシステム。
(第4項)
特定のトークンバケットのトークン集合数の変更は、受信作業要求を実行対象として受付けるのに1以上のトークンが消費された結果、トークン集合数が減少することを含む、第1項に記載のシステム。
(第5項)
特定のトークンバケットのトークン集合数の変更は、トークンマーケットプレイスを使用して行われたトークン販売処理に応じて1以上のトークンが別のバケットへ譲渡された結果、トークン集合数が減少することを含む、第1項に記載のシステム。
(第6項)
1以上のコンピュータデバイスにより、
作業対象の作業量管理に対応付けられた1以上のトークンバケットのインスタンスを作成し、作業対象に対する作業要求の受付判断は、1以上のトークンバケットのうち少なくとも1つのバケットのトークン集合数に少なくとも一部基づいて行われ、
作業対象のバーストモード作動中に1以上のトークンバケットのうち特定のトークンバケットに適用するトークン価格設定ポリシーを決定し、トークン価格設定ポリシーは、特定のトークンバケットのトークン集合数の変更に関してクライアントに請求する価格設定額を示し、
バーストモード作動中に行われた、特定のトークンバケットのトークン集合数に関する1以上の変更を、時間帯を通して記録し、
時間帯を通して記録された1以上の変更に少なくとも一部基づいて、クライアントに請求する請求額を生成する
ことを含む方法。
(第7項)
1以上のトークンバケットは、作業対象の作動モードを決定するためにトークン集合数が使用される通常モードバケットと、バーストモード作動中に作業要求を受付けるか否かを決定するためにトークン集合数が使用される1以上のバーストモードバケットとを備え、特定のトークンバケットは当該の1以上のバーストモードバケットのうちのバーストモードバケットを含む、第6項に記載の方法。
(第8項)
1以上のバーストモードバケットは、トークン集合数が作業対象の処理能力を示すローカルバースト限度バケットと、トークン集合数が複数の作業対象により共有されるリソースの利用可能処理能力を示す共有リソース能力バケットとを含み、特定バケットは共有能力バケットを含み、価格設定ポリシーに従って1以上のコンピューティングデバイスにより、
ローカルバースト限度バケットのトークン集合数が閾値基準を満たすという判断に応じて、価格設定ポリシーを共有リソース能力バケットの特定のトークン集合数変更に適用することをさらに含む、第7項に記載の方法。
(第9項)
特定のトークンバケットのトークン集合数の変更は、受信作業要求を実行対象として受付けるのに1以上のトークンが消費された結果、トークン集合数が減少することを含む、第6項に記載の方法。
(第10項)
特定のトークンバケットのトークン集合数の変更は、トークンマーケットプレイスを使用して行われたトークン販売処理に応じて1以上のトークンが別のバケットへ譲渡された結果、トークン集合数が減少することを含む、第6項に記載の方法。
(第11項)
1以上のコンピューティングデバイスにより、
トークンマーケットプレイスを介して特定トークンバケットのトークンが別のトークンバケットへ譲渡可能であることをクライアントが示すことを可能にする1以上のプログラム的インターフェイスを実行することをさらに含む、第10項に記載の方法。
(第12項)
トークン価格設定ポリシーは、特定バケットからトークンを別のバケットへ譲渡するのに請求される金額は、譲渡に関して受けた1以上のオークション入札に少なくとも一部基づいて決定されることを示す、第11項に記載の方法。
(第13項)
1以上のコンピューティングデバイスにより、
クライアントが複数のトークン価格設定ポリシーから1つのトークン価格設定ポリシーを選択することを可能にする1以上のプログラム的インターフェイスを実行することをさらに含む、第6項に記載の方法。
(第14項)
価格設定ポリシーはクライアント指定の予算限度を示し、1以上のコンピューティングデバイスにより、
クライアント指定の予算限度に少なくとも一部基づいて、特定のトークンバケットの集合数の変更の実施を決定することをさらに含む、第6項に記載の方法。
(第15項)
作業対象はストレージオブジェクトの第一パーティションを備え、ストレージオブジェクトは少なくとも第一パーティション及び第二パーティションを含み、特定バケットのトークン集合数に関する1以上の変更のうち特定の変更は、特定バケットから第二パーティションの作業量管理のために使用される別のバケットへのトークン譲渡の結果である、第6項に記載の方法。
(第16項)
プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって、プログラム命令は1以上のプロセッサ上で実行されると、
作業対象の受付制御判断に使用される1以上のトークンバケットのうち特定のトークンバケットに適用するトークン価格設定ポリシーを決定し、トークン価格設定ポリシーは作業対象がバーストモード作動の間に適用され、トークン価格設定ポリシーは特定のトークンバケットのトークン集合数の変更に関してクライアントに請求する価格設定額を示し、
バーストモード作動中の特定のトークンバケットのトークン集合数に関する1以上の変更を、時間帯を通して記録し、
時間帯を通して記録された1以上の変更に少なくとも一部基づいて、クライアントに請求する請求額を生成する、
非一時的コンピュータアクセス可能記憶媒体。
(第17項)
1以上のトークンバケットは、作業対象の通常モード作動中に作業要求を受付けるか否かを決定するためにトークン集合数が使用される通常モードバケットと、バーストモード作動中に作業要求を受付けるか否かを決定するためにトークン集合数が使用される1以上のバーストモードバケットとを備え、特定のトークンバケットは当該の1以上のバーストモードバケットのうちのバーストモードバケットを含み、命令が1以上のプロセッサ上で実行されると、
通常モードバケットのトークン集合数変更に適用される別のトークン価格設定ポリシーを決定する、第16項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第18項)
1以上のバーストモードバケットは、トークン集合数が作業対象の利用可能処理能力を示すローカルバースト限度バケットと、トークン集合数が複数の作業対象により共有されるリソースの利用可能処理能力を示す共有リソース能力バケットとを含み、特定バケットは共有能力バケットを含み、価格設定ポリシーに従って命令が1以上のプロセッサ上で実行されると、
ローカルバースト限度バケットのトークン集合数が閾値基準を満たすという判断に応じて、価格設定ポリシーを共有リソース能力バケットの特定のトークン集合数変更に適用する、第17項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第19項)
特定のトークンバケットのトークン集合数の変更は、トークンマーケットプレイスを使用して行われたトークン販売処理に応じて1以上のトークンが別のバケットへ譲渡された結果、トークン集合数が減少することを含む、第16項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第20項)
特定バケットにはトークン補充率及び最大トークン集合数限度が設定され、価格設定ポリシーは(a)トークン補充率、または(b)最大トークン集合数限度、の少なくとも1つに対する変更に関してクライアントに請求する別の金額の指示を含む、第16項に記載の非一時的コンピュータアクセス可能記憶媒体。
前述の内容は以下の項目を参照することで、より理解されるだろう。
(第1項)
1以上のコンピューティングデバイスを備えるシステムであって、コンピューティングデバイスは、
作業対象に対する作業要求を受信し、
作業対象に対応付けられた通常モードトークンバケットのトークン集合数が第一閾値基準を満たすという判断に応じて、通常モードトークン消費ポリシーに従って通常モードトークンバケットから1以上のトークンを消費し、作業要求を実行対象として受付け、
通常モードトークンバケットのトークン集合数が第一閾値基準を満たさないという判断に応じて、
バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数が第二閾値基準を満たすか否かを判定し、
バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数が第二閾値基準を満たすという判断に応じて、バーストモードトークン消費ポリシーに少なくとも一部基づいてバーストモードトークンバケットセットの少なくとも1つのバケットから1以上のトークンを消費し、作業要求を実行対象として受付け、
バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数が第二閾値基準を満たさないという判断に応じて、作業要求を拒否する
ように構成された、システム。
(第2項)
1以上のコンピューティングデバイスはさらに、
通常モードで作動中の作業対象において実行可能とする最大作業処理率を示すプロビジョン処理能力を作業対象に割当て、
プロビジョン処理能力に少なくとも一部基づいた率で、通常モードトークンバケットを補充し、
プロビジョン処理能力に少なくとも一部基づいた別の率で、バーストモードトークンバケットセットの少なくとも1つのバケットを補充する
ように構成された、第1項に記載のシステム。
(第3項)
1以上のコンピューティングデバイスはさらに、
作業要求が受信された平均率が作業対象に指定されたプロビジョン率より低い特定の時間帯の終わりに、1以上の作業トークンが通常モードトークンバケットに残っているという判断に応じて、バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数を、通常モードトークンバケットに残る作業トークンの数に少なくとも一部基づいた数量分だけ増加させる
ように構成された、第1項に記載のシステム。
(第4項)
バーストモードバケットセットは、作業対象における作業処理の最大対応バースト率を最大トークン集合数で示すローカルバースト限度トークンバケットと、複数の作業オブジェクトにより共有されるリソースの利用可能処理能力をトークン集合数で示す共有リソーストークンバケットとを備え、通常モードトークンバケットのトークン集合数が第一閾値基準を満たさないという前述の判断に応じて、1以上のコンピューティングデバイスはさらに、
ローカルバースト限度トークンバケットのトークン集合数がゼロより大きく、かつ共有リソーストークンバケットのトークン集合数がゼロより大きいと判断したことに応じて、作業要求を実行対象として受付ける
ように構成された、第1項に記載のシステム。
(第5項)
1以上のコンピューティングデバイスはさらに、
作業要求を実行対象として受付ける前に、作業要求に応じて行われる作業量の見積りを生成し、
作業要求の受付後に、作業要求に対応する実際に行われた作業量を特定し、
実際に行われた作業量と見積りとの差の特定に応じて、1以上の(a)バーストモードトークンバケットセット、または(b)バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数を、特定された差に少なくとも一部基づいて修正する
ように構成された、第1項に記載のシステム。
(第6項)
1以上のコンピュータデバイスにより、
作業対象に対する作業要求を受信し、
作業対象に対応付けられた通常モードトークンバケットのトークン集合数を特定し、
通常モードトークンバケットのトークン集合数が第一閾値基準を満たすという判断に応じて、
作業対象に対応付けられたバーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数が第二閾値基準を満たすと判断し、
作業要求を実行対象として受付け、
バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数を、バーストモードトークン消費ポリシーに少なくとも一部基づいて修正する
ことを含む方法。
(第7項)
1以上のコンピューティングデバイスにより、
通常モードで作動中の作業対象において実行可能とする最大作業処理率を示すプロビジョン処理能力を作業対象に割当て、
プロビジョン処理能力に少なくとも一部基づいた率で、通常モードトークンバケットを補充し、
プロビジョン処理能力に少なくとも一部基づいた別の率で、バーストモードトークンバケットセットの少なくとも1つのバケットを補充する
ことをさらに含む第6項に記載の方法。
(第8項)
1以上のコンピューティングデバイスにより、
作業対象が通常モードで作動していた特定の時間帯の終わりに、1以上の作業トークンが通常モードトークンバケットに残っているという判断に応じて、バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数を、通常モードトークンバケットに残る作業トークンの数に少なくとも一部基づいた数量分だけ増加させる
ことをさらに含む第6項に記載の方法。
(第9項)
バーストモードバケットセットは、作業対象における作業処理の最大対応バースト率を最大トークン集合数で示すローカルバースト限度トークンバケットと、複数の作業オブジェクトにより共有されるリソースの利用可能処理能力をトークン集合数で示す共有リソーストークンバケットとを備え、通常モードトークンバケットのトークン集合数が第一閾値基準を満たすという前述の判断に応じて、1以上のコンピューティングデバイスにより、
ローカルバースト限度トークンバケットのトークン集合数がゼロより大きく、かつ共有リソーストークンバケットのトークン集合数がゼロより大きいと判断したことに応じて、作業要求を実行対象として受付ける
ことをさらに含む第6項に記載の方法。
(第10項)
1以上のコンピューティングデバイスにより、
作業要求を実行対象として受付ける前に、作業要求に応じて行われる作業量の見積りを生成し、
当該作業要求の作業開始後に、作業要求に対応する実際に行われた作業量を特定し、
実際の作業量と見積りとの差の特定に応じて、1以上の(a)バーストモードトークンバケットセット、または(b)バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数を、特定された差に少なくとも一部基づいて修正する
ことをさらに含む第6項に記載の方法。
(第11項)
作業対象はストレージオブジェクトの少なくとも一部を備え、作業要求は(a)読出し処理、または(b)書込み処理のうち少なくとも1つを含む、第6項に記載の方法。
(第12項)
バーストモードバケットセットは、読出し処理を含む作業要求の受付制御に使用される読出しバーストトークンバケットと、書込み処理を含む作業要求の受付制御に使用される書込みバーストトークンバケットとを備える、第6項に記載の方法。
(第13項)
1以上のコンピューティングデバイスにより、
時間帯を通して作業要求到着率を監視し、
バーストモードトークンバケットセットの少なくとも1つのバケットの最大トークン集合数限度を、作業要求到着率の監視結果に少なくとも一部基づいて修正する
ことをさらに含む第6項に記載の方法。
(第14項)
1以上のコンピューティングデバイスにより、
作業対象のバーストモード処理に対応付けられた価格設定ポリシーの指示をクライアントに提供し、
バーストモードトークンバケットセットの少なくとも1つのバケットの最大トークン集合数限度を、価格設定ポリシーに従って、クライアントから受信したバーストモード能力増加要求に少なくとも一部基づいて修正する
ことをさらに含む第6項に記載の方法。
(第15項)
プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって、プログラム命令は1以上のプロセッサ上で実行されると、
作業対象に対する作業要求を受信し、
第一閾値基準に少なくとも一部基づいて作業対象がバーストモードで作動しているという判断に応じて、
作業対象に対応付けられたバーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数が第二閾値基準を満たすと判断し、
作業要求を実行対象として受付ける、
非一時的コンピュータアクセス可能記憶媒体。
(第16項)
プログラム命令は1以上のプロセッサ上で実行されると、
通常モードで作動中の作業対象において実行可能とする最大作業処理率を示すプロビジョン処理能力を作業対象に割当て、
プロビジョン処理能力に少なくとも一部基づいた率で、作業対象に対応付けられた通常モードトークンバケットを補充し、第一閾値基準は通常モードトークンバケットのトークン集合数に少なくとも一部基づき、
プロビジョン処理能力に少なくとも基づいた別の率で、バーストモードトークンバケットセットの少なくとも1つのバケットを補充する、
第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第17項)
プログラム命令は1以上のプロセッサ上で実行されると、
特定の時間帯の終わりに、1以上の作業トークンが作業対象に対応付けられた通常モードトークンバケットに残っているという判断に応じて、バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数を、通常モードトークンバケットに残る作業トークンの数に少なくとも一部基づいた数量分だけ増加させる、
第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第18項)
バーストモードバケットセットは、作業対象における作業処理の最大対応バースト率を最大トークン集合数で示すローカルバースト限度トークンバケットと、複数の作業オブジェクトにより共有されるリソースの利用可能処理能力をトークン集合数で示す共有リソーストークンバケットとを備え、第一閾値基準が満たされたという判断に応じてプログラム命令が1以上のプロセッサ上で実行されると、
ローカルバースト限度トークンバケットのトークン集合数がゼロより大きく、かつ共有リソーストークンバケットのトークン集合数がゼロより大きいと判断したことに応じて、作業要求を実行対象として受付ける、
第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第19項)
プログラム命令は1以上のプロセッサ上で実行されると、
バーストモードトークンバケットセットの少なくとも1つのバケットのトークン集合数が第二閾値基準を満たすという判断に応じて、トークン消費ポリシーに従って、少なくとも1つのバケットの少なくとも1つのトークンを消費する、
第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
(第20項)
作業対象はデータベーステーブルのパーティションの少なくとも一部を備え、作業要求は(a)読出し処理、または(b)書込み処理のうち少なくとも1つを含む、第15項に記載の非一時的コンピュータアクセス可能記憶媒体。
結論
様々な実施形態はさらに、コンピュータアクセス可能媒体に関する前述の説明に従って実行される命令及び/またはデータの受信、送信または記憶処理も含みうる。一般に、コンピュータアクセス可能媒体には、磁気媒体または光学式媒体等の記憶媒体もしくはメモリ媒体が含まれる。例えば、ディスクすなわちDVD/CD‐ROM、及びRAM(例えば、SDRAM、DDR、RDRAM、SRAM等)、ROM等の揮発性または不揮発性媒体、及び送信媒体すなわちネットワーク及び/または無線リンク等のコミュニケーション媒体を介して伝達される電気、電磁またはデジタル信号等の信号が含まれうる。
本明細書で図示及び記述される様々な方法は、方法の例示的実施形態を表す。方法は、ソフトウェア、ハードウェア、またはこれらの組合せにおいて実施されうる。方法の順序は変更され、そして様々な要素が追加、並替、結合、省略、修正等されうる。
本開示の恩恵を受ける当業者に明らかであろう様々な修正及び変更が行われうる。本明細書は全てのこのような修正及び変更を包含し、従って前述の説明は制限的な意味ではなく実例的な意味としてみなされるものとする。