Vliv serializace dat na upgrade aplikace

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

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

V Azure Service Fabric data, která se uchovávají a replikují, 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. U aplikací, které používají Reliable Actors, se jedná o záložní stav objektu actor. Tyto třídy jazyka C# musí být serializovatelné, aby se zachovaly a replikovaly. Proto je formát dat definován poli a vlastnostmi, které jsou serializovány, stejně jako jak jsou serializovány. Například v IReliableDictionary<int, MyClass> data je serializovaný int a serializovaný MyClass.

Změny kódu, které mají za následek změnu formátu dat

Vzhledem k tomu, že formát dat je určen třídami jazyka C#, změny tříd mohou způsobit změnu formátu dat. Je potřeba dbát na to, aby upgrade se zajištěním provozu zvládl změnu 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, a to i v případě, že data jsou ve starší nebo novější verzi. Výchozí serializátor je serializátor kontraktu dat, který má dobře definovaná pravidla správy verzí. Reliable Collections 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í upgradů se zajištěním provozu. Serializátor kontraktu dat je serializátor, který doporučujeme pro aplikace Service Fabric.

Vliv formátu dat na upgrade se zajištěním provozu

Během upgradu se zajištěním provozu existují dva hlavní scénáře, kdy se serializátor může setkat se starší nebo novější verzí dat:

  1. Po upgradu uzlu a spuštění zpět, nový serializátor načte data, která byla uložena na disku ve staré verzi.
  2. Během upgradu se zajištěním provozu 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 si vzájemně posílají data, nová a/nebo stará verze dat může být zjištěna novou a/nebo starou verzí serializátoru.

Poznámka

Výrazy "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 aplikace. "Nová data" odkazují na serializovanou třídu jazyka C# z nové verze vaší aplikace.

Obě verze kódu a formátu dat musí být dopředu i zpětně kompatibilní. Pokud nejsou kompatibilní, upgrade se zajištěním provozu může selhat nebo může dojít ke ztrátě dat. Upgrade se zajištěním provozu 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 ztraceny, například pokud byla přidána nová vlastnost, ale starý serializátor ji zahodí během deserializace.

Kontrakt dat je doporučené řešení pro zajištění kompatibility vašich dat. Má dobře definovaná pravidla správy verzí pro přidávání, odebírání a změny polí. Má také podporu pro zpracování neznámých polí, propojení do procesu serializace a deserializace a zpracování dědičnosti tříd. Další informace najdete 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 způsob upgradu vaší aplikace.

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

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