Bagikan melalui


Gambaran umum silo heterogen

Pada kluster tertentu, silo dapat mendukung serangkaian jenis biji-bijian yang berbeda:

Heterogeneous silos overview diagram.

Dalam contoh ini kluster mendukung biji-bijian jenis A, , B, CD, E:

  • Jenis A biji-bijian dan B dapat ditempatkan di Silo 1 dan 2.
  • Jenis C biji-bijian dapat ditempatkan di Silo 1, 2, atau 3.
  • Jenis D biji-bijian hanya dapat ditempatkan di Silo 3
  • Jenis E Biji-bijian hanya dapat ditempatkan di Silo 4.

Semua silo harus mereferensikan antarmuka semua jenis biji-bijian kluster, tetapi kelas biji-bijian hanya boleh dirujuk oleh silo yang akan menghostingnya. Klien tidak tahu silo mana yang mendukung Jenis Butir tertentu.

Penting

Implementasi jenis biji-bijian tertentu harus sama pada setiap silo yang mendukungnya.

Skenario berikut ini tidak valid:

Pada Silo 1 dan 2:

public class C: Grain, IMyGrainInterface
{
   public Task SomeMethod() { /* ... */ }
}

Pada Silo 3:

public class C: Grain, IMyGrainInterface, IMyOtherGrainInterface
{
   public Task SomeMethod() { /* ... */ }
   public Task SomeOtherMethod() { /* ... */ }
}

Konfigurasi

Tidak diperlukan konfigurasi, Anda dapat menyebarkan biner yang berbeda pada setiap silo di kluster Anda. Namun, jika perlu, Anda dapat mengubah interval bahwa silo dan klien memeriksa perubahan jenis yang didukung dengan TypeManagementOptions.TypeMapRefreshInterval properti .

Untuk tujuan pengujian, Anda dapat menggunakan properti GrainClassOptions.ExcludedGrainTypes, yang merupakan daftar nama jenis yang ingin Anda kecualikan pada silo.

Batasan

  • klien Koneksi tidak akan diberi tahu jika kumpulan Jenis Butir yang didukung berubah. Dalam contoh sebelumnya:
    • Jika Silo 4 meninggalkan kluster, klien masih akan mencoba melakukan panggilan ke butir jenis E. Ini akan gagal pada runtime dengan OrleansException.
    • Jika klien terhubung ke kluster sebelum Silo 4 bergabung dengannya, klien tidak akan dapat melakukan panggilan ke butir jenis E. Ini akan gagal dengan ArgumentException.
  • Biji-bijian stateless tidak didukung: semua silo dalam kluster harus mendukung set biji-bijian stateless yang sama.
  • ImplicitStreamSubscriptionAttributetidak didukung dan dengan demikian hanya langganan Eksplisit yang dapat digunakan dalam Orleans Aliran.