Przechowywanie wersji interfejsu ziarna
W tym artykule dowiesz się, jak używać obsługi wersji interfejsu ziarna. Przechowywanie wersji stanu ziarna jest poza zakresem.
Omówienie
W danym klastrze silosy mogą obsługiwać różne wersje typu ziarna.
W tym przykładzie klient i Silo{1,2,3} zostały skompilowane przy użyciu interfejsu A
ziarna w wersji 1. Silo 4 został skompilowany z wersją A
2.
Ograniczenia
- Brak przechowywania wersji dla bezstanowego procesu roboczego
- Interfejsy przesyłania strumieniowego nie są wersjonowane
Włączanie przechowywania wersji
Jeśli atrybut wersji nie zostanie jawnie dodany do interfejsu ziarna, ziarna mają domyślną wersję 0. Ziarno wersji można użyć atrybutu VersionAttribute w interfejsie ziarna:
[Version(X)]
public interface IVersionUpgradeTestGrain : IGrainWithIntegerKey
{
}
Gdzie X
jest numer wersji interfejsu ziarna, który jest zwykle monotonicznie rosnący.
Zgodność i umieszczanie wersji ziarna
Po odebraniu wywołania ze ziarna wersji w klastrze:
- Jeśli aktywacja nie istnieje, zostanie utworzona zgodna aktywacja
- Jeśli aktywacja istnieje:
- Jeśli bieżący nie jest zgodny, zostanie dezaktywowany i zostanie utworzony nowy zgodny (zobacz strategię selektora wersji)
- Jeśli bieżący element jest zgodny (zobacz zgodne ziarna), wywołanie będzie obsługiwane normalnie.
Domyślnie:
- Wszystkie wersjonowane ziarna powinny być zgodne tylko z poprzednimi wersjami (zobacz wytyczne dotyczące zgodności z poprzednimi wersjami i zgodne ziarna). Oznacza to, że ziarno v1 może wykonywać wywołania do ziarna w wersji 2, ale ziarno w wersji 2 nie może wywołać v1.
- Jeśli w klastrze istnieje wiele wersji, nowa aktywacja zostanie losowo umieszczona na zgodnym silosie.
To zachowanie domyślne można zmienić za pomocą polecenia GrainVersioningOptions:
var silo = new HostBuilder()
.UseOrleans(c =>
{
c.Configure<GrainVersioningOptions>(options =>
{
options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
options.DefaultVersionSelectorStrategy = nameof(MinimumVersion);
});
});
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla