Inleiding tot Reliable Collections in Stateful Services van Azure Service Fabric
Met betrouwbare verzamelingen kunt u cloudtoepassingen met hoge beschikbaarheid, schaalbaar en lage latentie schrijven alsof u toepassingen met één computer schrijft. De klassen in de naamruimte Microsoft.ServiceFabric.Data.Collections bieden een set verzamelingen die uw status automatisch maximaal beschikbaar maken. Ontwikkelaars moeten alleen programmeren voor de Reliable Collection-API's en betrouwbare verzamelingen de gerepliceerde en lokale status laten beheren.
Het belangrijkste verschil tussen Reliable Collections en andere technologieën voor hoge beschikbaarheid (zoals Redis, Azure Table-service en Azure Queue-service) is dat de status lokaal wordt bewaard in het service-exemplaar en tegelijkertijd maximaal beschikbaar wordt gemaakt. Dit betekent het volgende:
- Alle leesbewerkingen zijn lokaal, wat resulteert in leesbewerkingen met lage latentie en hoge doorvoer.
- Voor alle schrijfbewerkingen geldt het minimale aantal netwerk-IOS, wat resulteert in schrijfbewerkingen met lage latentie en hoge doorvoer.
Betrouwbare verzamelingen kunnen worden beschouwd als de natuurlijke evolutie van de system.collections-klassen : een nieuwe set verzamelingen die zijn ontworpen voor de cloud- en multicomputertoepassingen zonder dat de ontwikkelaar complexer wordt. Daarom zijn betrouwbare verzamelingen:
- Gerepliceerd: statuswijzigingen worden gerepliceerd voor hoge beschikbaarheid.
- Asynchroon: API's zijn asynchroon om ervoor te zorgen dat threads niet worden geblokkeerd bij het maken van IO.
- Transactioneel: API's maken gebruik van de abstractie van transacties, zodat u eenvoudig meerdere Betrouwbare verzamelingen binnen een service kunt beheren.
- Persistent of vluchtig: gegevens kunnen op schijf worden bewaard voor duurzaamheid tegen grootschalige storingen (bijvoorbeeld een stroomstoring in een datacenter). Sommige Betrouwbare verzamelingen ondersteunen ook een vluchtige modus (met caveats) waarbij alle gegevens in het geheugen worden bewaard, zoals een gerepliceerde cache in het geheugen.
Betrouwbare verzamelingen bieden standaard consistentiegaranties om redeneringen over toepassingsstatus gemakkelijker te maken. Sterke consistentie wordt bereikt door ervoor te zorgen dat transactiedoorvoeringen pas worden voltooid nadat de volledige transactie is aangemeld bij een meerderheidsquorum van replica's, inclusief de primaire. Voor een zwakkere consistentie kunnen toepassingen de client/aanvrager bevestigen voordat de asynchrone doorvoer wordt geretourneerd.
De Reliable Collections-API's zijn een evolutie van gelijktijdige verzameling-API's (te vinden in de naamruimte System.Collections.Concurrent ):
- Asynchroon: retourneert een taak omdat, in tegenstelling tot gelijktijdige verzamelingen, de bewerkingen worden gerepliceerd en behouden.
- Geen out-parameters: wordt gebruikt
ConditionalValue<T>
om eenbool
en een waarde te retourneren in plaats van parameters uit te voeren.ConditionalValue<T>
is net,Nullable<T>
maar vereist geen T een struct. - Transacties: Gebruikt een transactieobject om de gebruiker in staat te stellen acties te groeperen op meerdere Betrouwbare verzamelingen in een transactie.
Tegenwoordig bevat Microsoft.ServiceFabric.Data.Collections drie verzamelingen:
- Betrouwbare woordenlijst: Vertegenwoordigt een gerepliceerde, transactionele en asynchrone verzameling sleutel-/waardeparen. Net als bij ConcurrentDictionary kunnen zowel de sleutel als de waarde van elk type zijn.
- Betrouwbare wachtrij: vertegenwoordigt een gerepliceerde, transactionele en asynchrone strikte FIFO-wachtrij (first-in, first-out). Net als bij ConcurrentQueue kan de waarde van elk type zijn.
- Betrouwbare gelijktijdige wachtrij: vertegenwoordigt een gerepliceerde, transactionele en asynchrone wachtrij voor het ordenen van best effort voor hoge doorvoer. Net als bij ConcurrentQueue kan de waarde van elk type zijn.