Compartilhar via


Orleans provedores de streaming

Correntes podem vir em diferentes formas e formatos. Alguns fluxos podem entregar eventos por links TCP diretos, ao passo que outros entregam eventos por meio de filas duráveis. Diferentes tipos de fluxo podem usar diferentes estratégias de envio em lote, algoritmos de cache ou procedimentos de contrafluxo. Os provedores de fluxo são pontos de extensibilidade no Orleans Streaming Runtime que permitem implementar qualquer tipo de fluxo, evitando restrições em aplicativos de streaming para apenas um subconjunto dessas opções comportamentais. Este ponto de extensibilidade é semelhante em termos de conceito aos Orleans provedores de armazenamento.

Provedor de fluxo do Hub de Eventos do Azure

Os Hubs de Eventos do Azure são um serviço de ingestão de dados totalmente gerenciado e em tempo real capaz de receber e processar milhões de eventos por segundo. Ele foi projetado para lidar com a ingestão de dados de alta taxa de transferência e baixa latência de várias fontes e o processamento subsequente desses dados por vários consumidores.

Os Hubs de Eventos geralmente são usados como a base de uma arquitetura de processamento de eventos maior, servindo como a "porta de entrada" para um pipeline de eventos. Você pode usá-lo para ingerir dados de várias fontes, incluindo feeds de mídia social, dispositivos IoT e arquivos de log. Um dos principais benefícios dos Hubs de Eventos é a capacidade de escalar horizontalmente para atender às necessidades até mesmo das maiores cargas de trabalho de processamento de eventos. Ele também é altamente disponível e tolerante a falhas, com várias réplicas de dados distribuídas em várias regiões do Azure para garantir a alta disponibilidade.

O pacote NuGet Microsoft.Orleans.Streaming.EventHubs contém o provedor de fluxo do Event Hubs.

Provedor de fluxo da Fila do Azure (AQ)

O provedor de streaming da Fila do Azure (AQ) fornece eventos nas Filas do Azure. No lado do produtor, o provedor de fluxo do AQ enfileira eventos diretamente no Azure Queue. No lado do consumidor, o provedor de fluxo do AQ gerencia uma série de agentes de extração que extraem eventos de um conjunto de Azure Queues e os entregam ao código da aplicação consumidora. Você pode pensar nos agentes de pull como um "microsserviço" distribuído— um componente distribuído particionado, altamente disponível e elástico. Os agentes de pull são executados dentro dos mesmos silos que hospedam grãos de aplicativo. Portanto, não é necessário executar funções de trabalho separadas do Azure para obter dados das filas. O Orleans Streaming Runtime gerencia totalmente a existência de agentes de extração, seu controle de pressão, balanceamento das filas entre eles e a transferência de filas de um agente com falha para outro agente. Isso tudo é transparente para o código do aplicativo usando fluxos.

A Orleans NuGet package contém o provedor de fluxo de armazenamento de Fila do Azure.

Adaptadores de fila

Diferentes provedores de fluxo que fornecem eventos em filas duráveis apresentam comportamento semelhante e estão sujeitos a implementações semelhantes. Portanto, fornecemos um PersistentStreamProvider genérico e extensível que permite conectar diferentes tipos de filas sem escrever um provedor de fluxo completamente novo do zero. PersistentStreamProvider usa um componente IQueueAdapter, que abstrai detalhes específicos da implementação da fila e fornece meios para enfileirar e desenfileirar eventos. A lógica dentro PersistentStreamProvider manipula todo o resto. O Provedor de Filas do Azure mencionado acima também é implementado dessa forma: é uma instância de PersistentStreamProvider que usa um AzureQueueAdapter.

Provedor de fluxo de mensagens simples

O provedor de fluxo de mensagens simples, também conhecido como provedor de SMS, entrega eventos por TCP usando mensagens de grão regulares Orleans. Como os eventos SMS são entregues por links TCP não confiáveis, o SMS não garante a entrega de eventos confiáveis e não reenvia automaticamente mensagens com falha para fluxos de SMS. Por padrão, a chamada do produtor para OnNextAsync retorna um Task que representa o status de processamento do consumidor de fluxo. Isso informa ao produtor se o consumidor recebeu e processou o evento de forma bem-sucedida. Se essa tarefa falhar, o produtor poderá decidir enviar o mesmo evento novamente, obtendo confiabilidade no nível do aplicativo. Embora a entrega de mensagens em fluxo seja no melhor esforço, os próprios fluxos de SMS são confiáveis. Ou seja, a associação de assinante para produtor executada pelo Pub-Sub é totalmente confiável.

Consulte também