Introduzione alle Reliable Collections nei servizi con stato di Service FabricIntroduction to Reliable Collections in Azure Service Fabric stateful services

Reliable Collections consente di sviluppare applicazioni cloud a disponibilità elevata, scalabili e a bassa latenza nello stesso modo in cui si sviluppano applicazioni per singoli computer.Reliable Collections enable you to write highly available, scalable, and low-latency cloud applications as though you were writing single computer applications. Le classi nello spazio dei nomi Microsoft.ServiceFabric.Data.Collections forniscono un set di raccolte che assicurano automaticamente la disponibilità elevata dello stato.The classes in the Microsoft.ServiceFabric.Data.Collections namespace provide a set of collections that automatically make your state highly available. Gli sviluppatori devono solo programmare le API Reliable Collections e consentire a queste raccolte di gestire lo stato replicato e locale.Developers need to program only to the Reliable Collection APIs and let Reliable Collections manage the replicated and local state.

La differenza principale tra le raccolte Reliable Collections e altre tecnologie a disponibilità elevata, ad esempio Redis e i servizi tabelle e code di Azure, consiste nel fatto che lo stato viene mantenuto in locale nell'istanza del servizio e ne viene assicurata al tempo stesso la disponibilità elevata.The key difference between Reliable Collections and other high-availability technologies (such as Redis, Azure Table service, and Azure Queue service) is that the state is kept locally in the service instance while also being made highly available. Ciò significa che:This means that:

  • Tutte le operazioni di lettura sono locali, assicurando quindi bassa latenza e velocità effettiva elevata.All reads are local, which results in low latency and high-throughput reads.
  • Tutte le operazioni di scrittura eseguono il numero minimo di operazioni di IO di rete, assicurando quindi bassa latenza e velocità effettiva elevata.All writes incur the minimum number of network IOs, which results in low latency and high-throughput writes.

Immagine dell'evoluzione delle raccolte.

Le raccolte Reliable Collections possono essere considerate l'evoluzione naturale delle classi System.Collections , ovvero un nuovo set di raccolte progettate per le applicazioni per il cloud e più computer che non aumentano le complessità per gli sviluppatori.Reliable Collections can be thought of as the natural evolution of the System.Collections classes: a new set of collections that are designed for the cloud and multi-computer applications without increasing complexity for the developer. Come tali, le raccolte Reliable Collections sono:As such, Reliable Collections are:

  • Replicate: le modifiche apportate allo stato vengono replicate per assicurare disponibilità elevata.Replicated: State changes are replicated for high availability.
  • Persistenti: i dati vengono resi persistenti sul disco per assicurarne la durabilità in caso di guasti su larga scala, ad esempio l'interruzione dell'alimentazione in un data center.Persisted: Data is persisted to disk for durability against large-scale outages (for example, a datacenter power outage).
  • Asincrone: le API sono asincrone per assicurare che i thread non vengano bloccati durante le operazioni di IO.Asynchronous: APIs are asynchronous to ensure that threads are not blocked when incurring IO.
  • Transazionali: le API utilizzano l'astrazione delle transazioni per consentire all'utente di gestire facilmente più raccolte Reliable Collections all'interno di un servizio.Transactional: APIs utilize the abstraction of transactions so you can manage multiple Reliable Collections within a service easily.

Le raccolte Reliable Collections offrono garanzie predefinite di coerenza assoluta, per facilitare la definizione della logica relativa allo stato delle applicazioni.Reliable Collections provide strong consistency guarantees out of the box to make reasoning about application state easier. La coerenza assoluta è ottenuta assicurando che i commit delle transazioni siano completati solo dopo che l'intera transazione è stata registrata su un quorum di repliche di maggioranza, inclusa quella primaria.Strong consistency is achieved by ensuring transaction commits finish only after the entire transaction has been logged on a majority quorum of replicas, including the primary. Per ottenere una coerenza più debole, le applicazioni possono rinviare un acknowledgement al client/richiedente prima della restituzione del commit asincrono.To achieve weaker consistency, applications can acknowledge back to the client/requester before the asynchronous commit returns.

Le API Reliable Collections sono un'evoluzione delle API delle raccolte disponibili nello spazio dei nomi System.Collections.Concurrent :The Reliable Collections APIs are an evolution of concurrent collections APIs (found in the System.Collections.Concurrent namespace):

  • Asincrone: restituiscono un'attività dal momento che, a differenza delle raccolte Concurrent Collections, le operazioni vengono replicate e rese persistenti.Asynchronous: Returns a task since, unlike concurrent collections, the operations are replicated and persisted.
  • Senza parametri out: usano ConditionalValue<T> per restituire una variabile booleana e un valore anziché parametri out.No out parameters: Uses ConditionalValue<T> to return a bool and a value instead of out parameters. ConditionalValue<T> è come Nullable<T> ma non richiede una T per essere una struttura.ConditionalValue<T> is like Nullable<T> but does not require T to be a struct.
  • Transazioni: usano un oggetto transazione per consentire all'utente di raggruppare azioni su più raccolte Reliable Collections in una transazione.Transactions: Uses a transaction object to enable the user to group actions on multiple Reliable Collections in a transaction.

Attualmente Microsoft.ServiceFabric.Data.Collections include tre raccolte:Today, Microsoft.ServiceFabric.Data.Collections contains three collections:

  • ReliableDictionary: rappresenta una raccolta replicata, transazionale e asincrona di coppie chiave/valore.Reliable Dictionary: Represents a replicated, transactional, and asynchronous collection of key/value pairs. Simile a ConcurrentDictionary, sia la chiave che il valore possono essere di qualsiasi tipo.Similar to ConcurrentDictionary, both the key and the value can be of any type.
  • ReliableQueue: rappresenta una coda FIFO (First-In First-Out) replicata, transazionale e asincrona.Reliable Queue: Represents a replicated, transactional, and asynchronous strict first-in, first-out (FIFO) queue. Simile a ConcurrentQueue, il valore può essere di qualsiasi tipo.Similar to ConcurrentQueue, the value can be of any type.
  • ReliableConcurrentQueue: rappresenta una coda di ordinamento ottimale replicata, transazionale e asincrona per la velocità effettiva elevata.Reliable Concurrent Queue: Represents a replicated, transactional, and asynchronous best effort ordering queue for high throughput. Simile a ConcurrentQueue, il valore può essere di qualsiasi tipo.Similar to the ConcurrentQueue, the value can be of any type.

Passaggi successiviNext steps