Sdílet prostřednictvím


Vliv serializace dat na upgrade aplikace

Při postupném upgradu aplikace se upgrade použije na podmnožinu uzlů, jednu doménu upgradu najednou. Během tohoto procesu jsou některé upgradovací domény v novější verzi vaší aplikace a některé upgradovací domény jsou ve starší verzi vaší aplikace. Během zavádění musí být nová verze aplikace schopná číst starou verzi dat a stará verze aplikace musí být schopná přečíst novou verzi dat. Pokud formát dat není dopředu a zpětně kompatibilní, upgrade může selhat nebo horší, může dojít ke ztrátě nebo poškození dat. Tento článek popisuje, co představuje váš formát dat a nabízí osvědčené postupy pro zajištění toho, aby vaše data byla dopředu a zpětně kompatibilní.

Co tvoří váš formát dat?

V Azure Service Fabric data, která jsou trvalá a replikovaná, pocházejí z vašich tříd jazyka C#. Pro aplikace, které používají Reliable Collections, jsou tato data objekty ve spolehlivých slovníkech a frontách. Pro aplikace, které používají Reliable Actors, je to záložní stav objektu actor. Tyto třídy jazyka C# musí být serializovatelné, aby se zachovaly a replikovaly. Formát dat je proto definován poli a vlastnostmi, které jsou serializovány a jak jsou serializovány. Například v IReliableDictionary<int, MyClass> datech je serializovaný int a serializovaný MyClass.

Změny kódu, které vedou ke změně formátu dat

Vzhledem k tomu, že formát dat je určen třídami jazyka C#, mohou změny ve třídách způsobit změnu formátu dat. Je potřeba dbát na to, aby se zajistilo, že upgrade se zajištěním postupného zpracování změny formátu dat. Příklady, které můžou způsobit změny formátu dat:

  • Přidání nebo odebrání polí nebo vlastností
  • Přejmenování polí nebo vlastností
  • Změna typů polí nebo vlastností
  • Změna názvu třídy nebo oboru názvů

Kontrakt dat jako výchozí serializátor

Serializátor je obecně zodpovědný za čtení dat a deserializaci do aktuální verze, i když jsou data ve starší nebo novější verzi. Výchozí serializátor je serializátor kontraktu dat, který má dobře definovaná pravidla správy verzí. Spolehlivé kolekce umožňují serializátor přepsat, ale Reliable Actors v současné době ne. Serializátor dat hraje důležitou roli při povolování postupných upgradů. Serializátor kontraktu dat je serializátor, který doporučujeme pro aplikace Service Fabric.

Vliv formátu dat na postupný upgrade

Během postupného upgradu existují dva hlavní scénáře, kdy serializátor může narazit na starší nebo novější verzi vašich dat:

  1. Po upgradu a spuštění uzlu se nový serializátor načte data, která byla uložena na disk starou verzí.
  2. Během postupného upgradu bude cluster obsahovat kombinaci starých a nových verzí kódu. Vzhledem k tomu, že repliky mohou být umístěny v různých doménách upgradu a repliky odesílají data navzájem, může nová nebo stará verze vašich dat být zjištěna novou a/nebo starou verzí serializátoru.

Poznámka:

"Nová verze" a "stará verze" zde odkazují na verzi vašeho kódu, která je spuštěná. Nový serializátor odkazuje na kód serializátoru, který se spouští v nové verzi vaší aplikace. Nová data odkazují na serializovanou třídu jazyka C# z nové verze aplikace.

Obě verze kódu a datového formátu musí být dopředu i zpětně kompatibilní. Pokud nejsou kompatibilní, může upgrade selhat nebo může dojít ke ztrátě dat. Postupný upgrade může selhat, protože kód nebo serializátor může vyvolat výjimky nebo chybu, když narazí na jinou verzi. Data mohou být ztracena, pokud byla například přidána nová vlastnost, ale starý serializátor ji během deserializace zahodí.

Kontrakt dat je doporučené řešení pro zajištění kompatibility vašich dat. Obsahuje dobře definovaná pravidla správy verzí pro přidávání, odebírání a změny polí. Má také podporu pro práci s neznámými poli, připojení k serializaci a deserializaci procesu a zpracování dědičnosti tříd. Další informace naleznete v tématu Použití kontraktu dat.

Další kroky

Upgrade aplikace pomocí sady Visual Studio vás provede upgradem aplikace pomocí sady Visual Studio.

Upgrade aplikace pomocí PowerShellu vás provede upgradem aplikace pomocí PowerShellu.

Pomocí parametrů upgradu můžete řídit, jak se vaše aplikace upgraduje.

Informace o používání pokročilých funkcí při upgradu aplikace najdete v části Pokročilá témata.

Při řešení běžných problémů s upgrady aplikací postupujte podle kroků v tématu Řešení potíží s upgrady aplikací.