Orleans 2.0公式文書-6.8.5導入->マルチクラスタサポート->Global-Single-Instance
2429 ワード
grainコラボレーションのプロパティ
開発者は、クラスタ、特定のgrainクラスに対して、grainディレクトリを調整するタイミング、および方法を指示できます.
プロパティはgrainの実装に置かれます.例:
grainクラスに属性の両方が指定されていない場合、デフォルトは
Global-Single-Instance grainのプロトコルについて
グローバル単一インスタンス(GSI)のgrainにアクセスし、アクティブ化が存在することを知らない場合、新しいインスタンスをアクティブ化する前に、特別なGSIアクティブ化プロトコルが実行される.具体的には、現在のマルチクラスタ構成内の他のすべてのクラスタにリクエストを送信し、アクティブなgrainが存在するかどうかを確認します.すべての応答が否定されている場合、このクラスタに新しいアクティブボディが作成されます.そうでない場合は、リモートのアクティブボディが使用されます(ローカルディレクトリに参照がキャッシュされます).
One-Instance-per-cluster grainのプロトコルについて
One-Instance-cluster grainの場合、クラスタ間の通信は存在しません.彼らは各クラスタにおいて,標準的なOrleansメカニズムを独立して使用するだけである.Orleansフレームワーク内部では、以下のgrainクラスには
疑わしいアクティブ化
GSIプロトコルが3回の再試行後(または構成パラメータ
「疑わしい」アクティベーションは、GSIプロトコルのアクティベーション中に応答しない一部のリモートクラスタが、このgrainをアクティベーションしている可能性があるため、重複する可能性がある.したがって、全ての疑わしいアクティベーションに対して、GSIプロトコルは、30秒毎(または構成パラメータ
開発者は、クラスタ、特定のgrainクラスに対して、grainディレクトリを調整するタイミング、および方法を指示できます.
[GlobalSingleInstance]
属性は、単一のグローバルクラスタでOrleansを実行するときと同じ動作を必要とすることを意味する.すなわち、すべての呼び出しを単一のアクティブgrainにルーティングする.逆に、この[OneInstancePerCluster]
属性は、各クラスタが独自の独立したアクティブ化を有することができることを示す.クラスタ間で通信したくない場合は、これが適切です.プロパティはgrainの実装に置かれます.例:
using Orleans.MultiCluster;
[GlobalSingleInstance]
public class MyGlobalGrain : Orleans.Grain, IMyGrain {
...
}
[OneInstancePerCluster]
public class MyLocalGrain : Orleans.Grain, IMyGrain {
...
}
grainクラスに属性の両方が指定されていない場合、デフォルトは
[OneInstancePerCluster]
、または構成パラメータUseGlobalSingleInstanceByDefault
trueに設定されている場合は[GlobalSingleInstance]
となります.Global-Single-Instance grainのプロトコルについて
グローバル単一インスタンス(GSI)のgrainにアクセスし、アクティブ化が存在することを知らない場合、新しいインスタンスをアクティブ化する前に、特別なGSIアクティブ化プロトコルが実行される.具体的には、現在のマルチクラスタ構成内の他のすべてのクラスタにリクエストを送信し、アクティブなgrainが存在するかどうかを確認します.すべての応答が否定されている場合、このクラスタに新しいアクティブボディが作成されます.そうでない場合は、リモートのアクティブボディが使用されます(ローカルディレクトリに参照がキャッシュされます).
One-Instance-per-cluster grainのプロトコルについて
One-Instance-cluster grainの場合、クラスタ間の通信は存在しません.彼らは各クラスタにおいて,標準的なOrleansメカニズムを独立して使用するだけである.Orleansフレームワーク内部では、以下のgrainクラスには
[OneInstancePerCluster]
属性:ManagementGrain
、GrainBasedMembershipTable
、およびGrainBasedReminderTable
が表示されています.疑わしいアクティブ化
GSIプロトコルが3回の再試行後(または構成パラメータ
GlobalSingleInstanceNumberRetries
指定された値)にすべてのクラスタからの決定応答が受信されない場合、コンシステンシではなく可用性に偏った新しいローカル「疑わしい」アクティブ化が楽観的に作成されます.「疑わしい」アクティベーションは、GSIプロトコルのアクティベーション中に応答しない一部のリモートクラスタが、このgrainをアクティベーションしている可能性があるため、重複する可能性がある.したがって、全ての疑わしいアクティベーションに対して、GSIプロトコルは、30秒毎(または構成パラメータ
GlobalSingleInstanceRetryInterval
指定された任意の間隔)に周期的に再実行され、クラスタ間の通信が再開されると、重複アクティベーションが検出され、それが除去されることが保証される.