Udostępnij za pośrednictwem


Jak serializacja danych wpływa na uaktualnienie aplikacji

W ramach uaktualnienia aplikacji stopniowej uaktualnienie jest stosowane do podzestawu węzłów— jednej domeny uaktualnienia naraz. Podczas tego procesu niektóre domeny uaktualniania znajdują się w nowszej wersji aplikacji, a niektóre domeny uaktualnienia znajdują się w starszej wersji aplikacji. Podczas wdrażania nowa wersja aplikacji musi być w stanie odczytać starą wersję danych, a stara wersja aplikacji musi być w stanie odczytać nową wersję danych. Jeśli format danych nie jest zgodny z poprzednimi wersjami, uaktualnienie może zakończyć się niepowodzeniem lub co gorsza, dane mogą zostać utracone lub uszkodzone. W tym artykule omówiono, co stanowi format danych i oferuje najlepsze rozwiązania dotyczące zapewniania, że dane są zgodne z poprzednimi wersjami i do przodu.

Co składa się na format danych?

W usłudze Azure Service Fabric dane, które są utrwalane i replikowane, pochodzą z klas języka C#. W przypadku aplikacji korzystających z kolekcji Reliable Collections dane są obiektami w niezawodnych słownikach i kolejkach. W przypadku aplikacji korzystających z funkcji Reliable Actors jest to stan tworzenia kopii zapasowej aktora. Te klasy języka C# muszą być serializowalne, aby były utrwalane i replikowane. W związku z tym format danych jest definiowany przez pola i właściwości, które są serializowane, a także sposób ich serializacji. Na przykład w IReliableDictionary<int, MyClass> danych jest serializowana i serializowana int MyClass.

Zmiany kodu, które powodują zmianę formatu danych

Ponieważ format danych jest określany przez klasy języka C#, zmiany w klasach mogą spowodować zmianę formatu danych. Należy zadbać o to, aby zapewnić, że uaktualnienie stopniowe może obsługiwać zmianę formatu danych. Przykłady, które mogą powodować zmiany formatu danych:

  • Dodawanie lub usuwanie pól lub właściwości
  • Zmienianie nazw pól lub właściwości
  • Zmienianie typów pól lub właściwości
  • Zmienianie nazwy klasy lub przestrzeni nazw

Kontrakt danych jako domyślny serializator

Serializator jest zazwyczaj odpowiedzialny za odczytywanie danych i deserializacji ich do bieżącej wersji, nawet jeśli dane są w starszej lub nowszej wersji. Domyślny serializator to serializator kontraktu danych, który ma dobrze zdefiniowane reguły przechowywania wersji. Kolekcje Reliable Umożliwiają zastępowanie serializatora, ale obecnie nie są to elementy Reliable Actors. Serializator danych odgrywa ważną rolę w włączaniu uaktualnień stopniowego. Serializator kontraktu danych to serializator, który zalecamy dla aplikacji usługi Service Fabric.

Jak format danych ma wpływ na uaktualnienie stopniowe

Podczas uaktualniania stopniowego istnieją dwa główne scenariusze, w których serializator może napotkać starszą lub nowszą wersję danych:

  1. Po uaktualnieniu węzła i uruchomieniu kopii zapasowej nowy serializator załaduje dane utrwalone na dysku przez starą wersję.
  2. Podczas uaktualniania stopniowego klaster będzie zawierać kombinację starych i nowych wersji kodu. Ponieważ repliki mogą być umieszczane w różnych domenach uaktualniania, a repliki wysyłają dane do siebie, nowa i/lub stara wersja danych może zostać napotkana przez nową i/lub starą wersję serializatora.

Uwaga

W tym miejscu "nowa wersja" i "stara wersja" odnoszą się do wersji uruchomionego kodu. "Nowy serializator" odnosi się do kodu serializatora wykonywanego w nowej wersji aplikacji. "nowe dane" odnosi się do serializowanej klasy C# z nowej wersji aplikacji.

Dwie wersje kodu i formatu danych muszą być zgodne z poprzednimi wersjami. Jeśli nie są one zgodne, uaktualnienie stopniowe może zakończyć się niepowodzeniem lub dane mogą zostać utracone. Uaktualnienie stopniowe może zakończyć się niepowodzeniem, ponieważ kod lub serializator może zgłaszać wyjątki lub błąd w przypadku napotkania innej wersji. Dane mogą zostać utracone, jeśli na przykład dodano nową właściwość, ale stary serializator odrzuca je podczas deserializacji.

Umowa danych jest zalecanym rozwiązaniem zapewniającym, że dane są zgodne. Ma dobrze zdefiniowane reguły przechowywania wersji na potrzeby dodawania, usuwania i zmieniania pól. Ma również obsługę obsługi nieznanych pól, podłączania do procesu serializacji i deserializacji oraz radzenia sobie z dziedziczeniem klas. Aby uzyskać więcej informacji, zobacz Using Data Contract (Korzystanie z kontraktu danych).

Następne kroki

Uaktualnianie aplikacji przy użyciu programu Visual Studio przeprowadzi Cię przez proces uaktualniania aplikacji przy użyciu programu Visual Studio.

Uaktualnianie aplikacji przy użyciu programu PowerShell przeprowadzi Cię przez proces uaktualniania aplikacji przy użyciu programu PowerShell.

Kontrolowanie sposobu uaktualniania aplikacji przy użyciu parametrów uaktualniania.

Dowiedz się, jak używać zaawansowanych funkcji podczas uaktualniania aplikacji, korzystając z tematów zaawansowanych.

Rozwiąż typowe problemy z uaktualnieniami aplikacji, korzystając z kroków opisanych w temacie Rozwiązywanie problemów z uaktualnieniami aplikacji.