Översikt över heterogena silor
I ett visst kluster kan silor ha stöd för en annan uppsättning korntyper:
I det här exemplet stöder klustret korn av typen A
, B
, C
, D
, E
:
- Korntyper
A
ochB
kan placeras på Silo 1 och 2. - Korntyp
C
kan placeras på Silo 1, 2 eller 3. - Korntyp
D
kan endast placeras på Silo 3 - Korntyp
E
kan endast placeras på Silo 4.
Alla silor bör referera till gränssnitt för alla korntyper i klustret, men kornklasser bör endast refereras till av silor som ska vara värd för dem. Klienten vet inte vilken silo som stöder en viss korntyp.
Viktigt!
En viss implementering av korntyp måste vara densamma för varje silo som stöder den.
Följande scenario är ogiltigt :
På Silo 1 och 2:
public class C: Grain, IMyGrainInterface
{
public Task SomeMethod() { /* ... */ }
}
På Silo 3:
public class C: Grain, IMyGrainInterface, IMyOtherGrainInterface
{
public Task SomeMethod() { /* ... */ }
public Task SomeOtherMethod() { /* ... */ }
}
Konfiguration
Ingen konfiguration krävs, du kan distribuera olika binärfiler på varje silo i klustret. Om det behövs kan du dock ändra det intervall som silor och klienter söker efter ändringar i typer som stöds med TypeManagementOptions.TypeMapRefreshInterval egenskapen.
I testsyfte kan du använda egenskapen GrainClassOptions.ExcludedGrainTypes, som är en lista med namn på de typer som du vill exkludera i silor.
Begränsningar
- Anslut-klienter meddelas inte om uppsättningen korntyper som stöds ändras. I föregående exempel:
- Om Silo 4 lämnar klustret försöker klienten fortfarande göra anrop till korn av typen
E
. Det misslyckas vid körning med en OrleansException. - Om klienten var ansluten till klustret innan Silo 4 anslöt till det, kommer klienten inte att kunna göra anrop till korn av typen
E
. Det misslyckas med en ArgumentException.
- Om Silo 4 lämnar klustret försöker klienten fortfarande göra anrop till korn av typen
- Tillståndslösa korn stöds inte: alla silor i klustret måste ha stöd för samma uppsättning tillståndslösa korn.
- ImplicitStreamSubscriptionAttributestöds inte och därför kan endast explicita prenumerationer användas i Orleans Flöden.