Úvod do spolehlivých kolekcí ve stavových službách Azure Service Fabric

Spolehlivé kolekce umožňují psát vysoce dostupné, škálovatelné cloudové aplikace s nízkou latencí, jako byste psali jedno počítačové aplikace. Třídy v oboru názvů Microsoft.ServiceFabric.Data.Collections poskytují sadu kolekcí, které automaticky zpřístupní váš stav. Vývojáři musí programovat jenom na rozhraní API Reliable Collection a nechat Reliable Collections spravovat replikovaný a místní stav.

Klíčovým rozdílem mezi Reliable Collections a dalšími technologiemi s vysokou dostupností (jako je Redis, Azure Table Service a Služba Azure Queue) je to, že stav se uchovává místně v instanci služby a zároveň je vysoce dostupný. To znamená, že:

  • Všechna čtení jsou místní, což vede k nízké latenci a čtení s vysokou propustností.
  • Všechny zápisy mají minimální počet vstupně-výstupních operací sítě, což vede k nízké latenci a zápisům s vysokou propustností.

Image of evolution of collections.

Spolehlivé kolekce lze považovat za přirozený vývoj tříd System.Collections : nová sada kolekcí, které jsou navrženy pro cloudové a multi-počítačové aplikace bez zvýšené složitosti pro vývojáře. Spolehlivé kolekce jsou například:

  • Replikováno: Změny stavu se replikují pro zajištění vysoké dostupnosti.
  • Asynchronní: Rozhraní API jsou asynchronní, aby se zajistilo, že vlákna nebudou při spuštění vstupně-výstupních operací blokovaná.
  • Transakční: Rozhraní API využívají abstrakci transakcí, abyste mohli snadno spravovat více spolehlivých kolekcí v rámci služby.
  • Trvalé nebo nestálé: Data se dají uchovávat na disku, aby se zachovala odolnost proti výpadkům ve velkém měřítku (například výpadek napájení datacentra). Některé spolehlivé kolekce také podporují nestálý režim (s upozorněním), kde se všechna data uchovávají v paměti, jako je replikovaná mezipaměť v paměti.

Spolehlivé kolekce poskytují záruky silné konzistence, aby bylo snazší zdůvodnění stavu aplikace. Silná konzistence se dosahuje zajištěním dokončení potvrzení transakcí až po přihlášení celé transakce kvorum většiny replik, včetně primární. Aby bylo dosaženo slabší konzistence, můžou aplikace před vrácením asynchronního potvrzení potvrdit zpět klientovi nebo žadateli.

Rozhraní API Reliable Collections představují vývoj souběžných rozhraní API kolekcí (nachází se v oboru názvů System.Collections.Concurrent ):

  • Asynchronní: Vrátí úlohu, protože na rozdíl od souběžných kolekcí se operace replikují a uchovávají.
  • Žádné parametry: Používá ConditionalValue<T> se k vrácení bool hodnoty místo parametrů out. ConditionalValue<T> je podobný, Nullable<T> ale nevyžaduje, aby T byla struktura.
  • Transakce: Pomocí objektu transakce umožňuje uživateli seskupit akce u více Reliable Collections v transakci.

Dnes microsoft.ServiceFabric.Data.Collections obsahuje tři kolekce:

  • Reliable Dictionary: Představuje replikovanou, transakční a asynchronní kolekci párů klíč/hodnota. Podobně jako ConcurrentDictionary může klíč i hodnota být libovolného typu.
  • Spolehlivá fronta: Představuje replikovanou, transakční a asynchronní striktní frontu FIFO (first-in). Podobně jako ConcurrentQueue může být hodnota libovolného typu.
  • Spolehlivá souběžná fronta: Představuje replikovanou, transakční a asynchronní frontu pro řazení fronty s vysokou propustností. Podobně jako ConcurrentQueue může být hodnota libovolného typu.

Další kroky