Přehled heterogenních sila
V daném clusteru mohou sila podporovat jinou sadu typů zrn:
V tomto příkladu cluster podporuje zrnka typu A
, B
, C
, D
: E
- Typy
A
zrnitosti aB
lze je umístit na Silo 1 a 2. - Typ
C
zrnitosti lze umístit na Silo 1, 2 nebo 3. - Typ
D
zrnitosti lze umístit pouze na Silo 3. - Typ
E
zrnitosti lze umístit pouze na Silo 4.
Všechna sila by měla odkazovat na rozhraní všech typů zrn v clusteru, ale třídy grain by měly být odkazovány pouze silami, které je budou hostovat. Klient neví, který silo podporuje daný typ zrnitosti.
Důležité
Daná implementace typu zrnitosti musí být stejná na každém silu, který ho podporuje.
Následující scénář není platný:
Na silu 1 a 2:
public class C: Grain, IMyGrainInterface
{
public Task SomeMethod() { /* ... */ }
}
Na silu 3:
public class C: Grain, IMyGrainInterface, IMyOtherGrainInterface
{
public Task SomeMethod() { /* ... */ }
public Task SomeOtherMethod() { /* ... */ }
}
Konfigurace
Není potřeba žádná konfigurace, můžete do každého sila v clusteru nasadit různé binární soubory. V případě potřeby však můžete změnit interval, kdy sila a klienti kontrolují změny v typech podporovaných vlastností TypeManagementOptions.TypeMapRefreshInterval .
Pro účely testování můžete použít vlastnost GrainClassOptions.ExcludedGrainTypes, což je seznam názvů typů, které chcete vyloučit na sila.
Omezení
- Připojení klienti nebudou upozorněni, pokud se změnila sada podporovaných typů agregace. V předchozím příkladu:
- Pokud Silo 4 opustí cluster, klient se stále pokusí provést volání podrobného typu
E
. Při běhu selže s chybou OrleansException. - Pokud byl klient připojen ke clusteru před připojením Silo 4, klient nebude moct volat zrnko typu
E
. Selže s chybou ArgumentException.
- Pokud Silo 4 opustí cluster, klient se stále pokusí provést volání podrobného typu
- Bezstavová zrna nejsou podporována: všechna sila v clusteru musí podporovat stejnou sadu bezstavových zrn.
- ImplicitStreamSubscriptionAttributenejsou podporovány, a proto je možné v Orleans Toky použít pouze explicitní předplatná.