Introdução à Reliable Collections nos serviços com monitoração de estado do Service Fabric do Azure

As Coleções Confiáveis permitem desenvolver aplicativos em nuvem altamente disponíveis, escalonáveis e de baixa latência como se você estivesse desenvolvendo aplicativos de computador único. As classes no namespace Microsoft.ServiceFabric.Data.Collections fornecem um conjunto de coleções que automaticamente tornam seu estado altamente disponível. Os desenvolvedores só precisam programar para as APIs de Coleções Confiáveis e permitir que as Coleções Confiáveis gerenciem o estado local e replicado.

A principal diferença entre Coleções Confiáveis e outras tecnologias de alta disponibilidade (como Redis, serviço Tabela do Azure e serviço Fila do Azure) é que o estado é mantido localmente na instância de serviço, além de se tornar altamente disponível. Isso significa que:

  • Todas as leituras são locais, o que resulta em leituras de baixa latência e alta taxa de transferência.
  • Todas as gravações geram o mínimo de operações de E/S de rede, o que resulta em gravações de baixa latência e alta taxa.

Imagem da evolução das coleções.

As Coleções Confiáveis podem ser interpretadas como a evolução natural das classes System.Collections : um novo conjunto de coleções projetadas para a nuvem e aplicativos com vários computadores sem aumentar a complexidade para desenvolvedores. Sendo assim, as Coleções confiáveis são:

  • Replicadas: alterações de estado são replicadas para alta disponibilidade.
  • Assíncronas: as APIs são assíncronas para garantir que os threads não sejam bloqueados quando gerarem E/S.
  • Transacionais: as APIs utilizam a abstração de transações para que você possa gerenciar facilmente várias Coleções Confiáveis dentro de um serviço.
  • Persistentes ou voláteis: os dados são persistentes no disco para obter durabilidade contra interrupções em larga escala (por exemplo, uma interrupção de energia de datacenter). Algumas Coletas Confiáveis também dão suporte a um modo volátil (com Limitações) em que todos os dados são mantidos na memória, como um cache replicado na memória.

As Coleções Confiáveis fornecem garantias de coerência forte prontas para uso para facilitar o raciocínio sobre o estado do aplicativo. A coerência forte é obtida com a garantia de que as confirmações de transação só são concluídas depois que toda a transação tiver sido registrada em uma quorum de réplicas que seja a maioria, incluindo a primária. Para obter consistência mais fraca, os aplicativos podem confirmar para o cliente/solicitante antes de a confirmação assíncrona retornar.

As APIs de Coleções Confiáveis são uma evolução das APIs de coleções simultâneas (encontradas no namespace System.Collections.Concurrent ):

  • Assíncronas: retorna uma tarefa, já que, ao contrário das coleções concorrentes, as operações são replicadas e mantidas.
  • Sem parâmetro de saída: usam ConditionalValue<T> para retornar um boole um valor em vez de parâmetros de saída. ConditionalValue<T> é como Nullable<T>, mas não requer T para ser um struct.
  • Transações: usam um objeto de transação para permitir que o usuário agrupe as ações em várias Coleções Confiáveis em uma transação.

Hoje, Microsoft.ServiceFabric.Data.Collections contém três coleções:

  • Dicionário Confiável: representa uma coleção de pares chave/valor replicada, transacional e assíncrona. Semelhante a ConcurrentDictionary, a chave e o valor podem ser de qualquer tipo.
  • Fila Confiável: representa uma fila PEPS (primeiro a entrar, primeiro a sair) estrita, assíncrona, transacional e replicada. Semelhante a ConcurrentQueue, a chave pode ser de qualquer tipo.
  • Fila Simultânea Confiável: representa uma fila de ordenação de melhor esforço replicada, transacional e assíncrona para alta taxa de transferência. Semelhante à ConcurrentQueue, o valor pode ser de qualquer tipo.

Próximas etapas