次の方法で共有


異種サイロの概要

特定のクラスターでは、サイロはさまざまな種類のグレインをサポートできます。

異種サイロの概要図。

この例では、クラスターは種類 ABCD、および Eのグレインをサポートしています。

  • サイロ 1 と 2 には、 AB のグレインの種類を配置できます。
  • 粒度の種類 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で失敗します。
  • 異種デプロイではステートレス グレインはサポートされていません。クラスター内のすべてのサイロは、同じステートレス グレインのセットをサポートする必要があります。
  • ImplicitStreamSubscriptionAttributeはサポートされていません。したがって、異種サイロを持つ Streams でのみOrleansを使用できます。