特定のクラスターでは、サイロはさまざまな種類のグレインをサポートできます。
この例では、クラスターは種類 A
、 B
、 C
、 D
、および E
のグレインをサポートしています。
- サイロ 1 と 2 には、
A
とB
のグレインの種類を配置できます。 - 粒度の種類
C
は、サイロ 1、2、または 3 に配置できます。 - グレインの種類
D
は、サイロ 3 にのみ配置できます。 - 粒度の種類
E
はサイロ 4 にのみ配置できます。
すべてのサイロはクラスター内のすべてのグレイン型のインターフェイスを参照する必要がありますが、グレイン クラスは、それらをホストするサイロのみが参照する必要があります。 クライアントは、特定のグレインの種類をサポートするサイロを認識しません。
Von Bedeutung
特定のグレイン型の実装は、それをサポートする各サイロで同じである必要があります。
次の シナリオは無効 です。
サイロ1と2について:
public class C: Grain, IMyGrainInterface
{
public Task SomeMethod() { /* ... */ }
}
サイロ 3 の場合:
public class C: Grain, IMyGrainInterface, IMyOtherGrainInterface
{
public Task SomeMethod() { /* ... */ }
public Task SomeOtherMethod() { /* ... */ }
}
コンフィギュレーション
構成は必要ありません。クラスター内の各サイロに異なるバイナリをデプロイできます。 ただし、必要に応じて、 TypeManagementOptions.TypeMapRefreshInterval プロパティを使用して、サイロとクライアントがサポートされている型の変更を確認する間隔を変更できます。
テスト目的で、特定のサイロで除外する型の名前の一覧である GrainClassOptions.ExcludedGrainTypes プロパティを使用できます。
制限事項
- サポートされている一連のグレインの種類が変更された場合、接続されているクライアントには通知されません。 前の例では、
- サイロ 4 がクラスターから離れる場合でも、クライアントは
E
種類のグレインを呼び出そうとします。 実行時に OrleansExceptionで失敗します。 - Silo 4 が参加する前にクライアントがクラスターに接続していた場合、クライアントは
E
種類のグレインを呼び出すことができません。 ArgumentExceptionで失敗します。
- サイロ 4 がクラスターから離れる場合でも、クライアントは
- 異種デプロイではステートレス グレインはサポートされていません。クラスター内のすべてのサイロは、同じステートレス グレインのセットをサポートする必要があります。
- ImplicitStreamSubscriptionAttributeはサポートされていません。したがって、異種サイロを持つ Streams でのみOrleansを使用できます。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET