Introduktion till tillförlitliga samlingar i tillståndskänsliga Azure Service Fabric-tjänster

Med Reliable Collections kan du skriva molnprogram med hög tillgänglighet, skalbarhet och låg latens som om du skrev program med en enda dator. Klasserna i namnområdet Microsoft.ServiceFabric.Data.Collections innehåller en uppsättning samlingar som automatiskt gör ditt tillstånd mycket tillgängligt. Utvecklare behöver bara programmera till API:erna för Reliable Collection och låta Reliable Collections hantera replikerade och lokala tillstånd.

Den största skillnaden mellan Reliable Collections och andra tekniker för hög tillgänglighet (till exempel Redis, Azure Table Service och Azure Queue Service) är att tillståndet bevaras lokalt i tjänstinstansen samtidigt som det görs mycket tillgängligt. Detta innebär att:

  • Alla läsningar är lokala, vilket resulterar i läsningar med låg svarstid och högt dataflöde.
  • Alla skrivningar medför det minsta antalet nätverks-IO:er, vilket resulterar i korta svarstider och skrivningar med högt dataflöde.

Image of evolution of collections.

Tillförlitliga samlingar kan ses som den naturliga utvecklingen av System.Collections-klasserna : en ny uppsättning samlingar som är utformade för moln- och flerdatorprogram utan att öka komplexiteten för utvecklaren. Därför är Reliable Collections:

  • Replikerad: Tillståndsändringar replikeras för hög tillgänglighet.
  • Asynkron: API:er är asynkrona för att säkerställa att trådar inte blockeras när I/O uppstår.
  • Transaktionell: API:er använder abstraktionen av transaktioner så att du enkelt kan hantera flera Tillförlitliga samlingar i en tjänst.
  • Beständiga eller flyktiga: Data kan sparas på disken för hållbarhet mot storskaliga avbrott (till exempel ett datacenters strömavbrott). Vissa tillförlitliga samlingar stöder också ett flyktigt läge (med Varningar) där alla data sparas i minnet, till exempel en replikerad minnesintern cache.

Reliable Collections ger starka konsekvensgarantier för att underlätta resonemanget om programtillståndet. Stark konsekvens uppnås genom att säkerställa att transaktionsincheckningar slutförs först efter att hela transaktionen har loggats på ett majoritetskvorum med repliker, inklusive den primära. För att uppnå svagare konsekvens kan program bekräfta tillbaka till klienten/beställaren innan den asynkrona incheckningen returnerar.

API:erna för tillförlitliga samlingar är en utveckling av API:er för samtidiga samlingar (finns i namnområdet System.Collections.Concurrent ):

  • Asynkron: Returnerar en aktivitet eftersom åtgärderna, till skillnad från samtidiga samlingar, replikeras och bevaras.
  • Inga utparametrar: Används ConditionalValue<T> för att returnera ett bool och ett värde i stället för out-parametrar. ConditionalValue<T> är som Nullable<T> men kräver inte T för att vara en struct.
  • Transaktioner: Använder ett transaktionsobjekt för att göra det möjligt för användaren att gruppera åtgärder på flera tillförlitliga samlingar i en transaktion.

Idag innehåller Microsoft.ServiceFabric.Data.Collections tre samlingar:

  • Reliable Dictionary: Representerar en replikerad, transaktionell och asynkron samling nyckel/värde-par. På samma sätt som ConcurrentDictionary kan både nyckeln och värdet vara av vilken typ som helst.
  • Reliable Queue: Representerar en replikerad, transaktionell och asynkron strikt fifo-kö (first-in, first-out). På samma sätt som ConcurrentQueue kan värdet vara av vilken typ som helst.
  • Tillförlitlig samtidig kö: Representerar en replikerad, transaktionell och asynkron kö för bästa förmåga att beställa kö för högt dataflöde. I likhet med ConcurrentQueue kan värdet vara av vilken typ som helst.

Nästa steg