Perspectiva do Azure Well-Architected Framework nos Hubs de Eventos do Azure
O Hubs de Eventos do Azure é um serviço de processamento de evento escalonável que recebe e processa grandes volumes de eventos e dados, com baixa latência e alta confiabilidade. Ele pode receber e processar milhões de eventos por segundo. Os dados enviados para um hub de eventos podem ser transformados e armazenados usando qualquer provedor de análise em tempo real ou adaptadores de envio em lote e armazenamento.
Para obter mais informações sobre como usar os Hubs de Eventos, consulte a documentação dos Hubs de Eventos do Azure para saber como usar os Hubs de Eventos para ingerir milhões de eventos por segundo por meio de aplicativos e dispositivos conectados.
Para entender como o uso dos Hubs de Eventos ajuda você a obter excelência operacional e confiabilidade para sua carga de trabalho, consulte os seguintes artigos:
- Monitorar Hubs de Eventos do Azure
- Transmitir dados de Diagnóstico do Azure usando Hubs de Eventos
- Dimensionamento com Hubs de Eventos
As seções a seguir são específicas para os Hubs de Eventos do Azure de uma perspectiva do Well Architected Framework:
- Considerações sobre o design
- Lista de verificação da configuração
- Opções de configuração recomendadas
- Artefatos de origem
Considerações sobre o design
Os Hubs de Eventos do Azure fornecem um SLA de tempo de atividade. Para obter mais informações, consulte SLA para Hubs de Eventos.
Lista de Verificação
Você configurou os Hubs de Eventos do Azure com a excelência operacional em mente?
- Crie políticas SendOnly e ListenOnly para o publicador de eventos e o consumidor, respectivamente.
- Ao usar o SDK para enviar eventos aos Hubs de Eventos, verifique se as exceções geradas pela política de repetição (
EventHubsException
ouOperationCancelledException
) foram capturadas corretamente. - Em cenários de alta taxa de transferência, use eventos em lote.
- Cada consumidor pode ler eventos de uma a uma partição máxima com suporte do SKU dos Hubs de Eventos
- Ao desenvolver novos aplicativos, use
EventProcessorClient
(.NET e Java) ouEventHubConsumerClient
(Python e JavaScript) como o SDK do cliente. - Como parte da estratégia de recuperação de desastre e disponibilidade em toda a solução, considere habilitar a opção de recuperação de desastre geográfico dos Hubs de Eventos.
- Quando uma solução tem um grande número de publicadores de eventos independentes, considere utilizar Publicadores de Eventos para controle de acesso refinado.
- Não publique eventos em uma partição específica.
- Ao publicar eventos com frequência, use o protocolo AMQP quando possível.
- O número de partições reflete o grau de paralelismo de downstream que pode ser obtido.
- Verifique se cada aplicativo de consumo usa um grupo de consumidores separado e se apenas um receptor ativo por grupo de consumidores está em uso.
- Ao usar o recurso Captura, considere cuidadosamente a configuração da janela de tempo e do tamanho do arquivo, especialmente com volumes de eventos baixos.
Recomendações de configuração
Considere as seguintes recomendações para otimizar a confiabilidade ao configurar os Hubs de Eventos do Azure:
Recomendação | Descrição |
---|---|
Ao usar o SDK para enviar eventos aos Hubs de Eventos, verifique se as exceções geradas pela política de repetição (EventHubsException ou OperationCancelledException ) foram capturadas corretamente. |
Ao usar HTTPS , verifique se um padrão de repetição adequado foi implementado. |
Em cenários de alta taxa de transferência, use eventos em lote. | O serviço fornecerá uma matriz json com vários eventos para os assinantes, em vez de um evento. O aplicativo consumidor deve processar essas matrizes. |
Cada consumidor pode ler eventos de uma a uma partição máxima com suporte do SKU dos Hubs de Eventos. | Para obter a escala máxima no lado do aplicativo consumidor, cada consumidor deve ler de uma única partição. |
Ao desenvolver novos aplicativos, use EventProcessorClient (.NET e Java) ou EventHubConsumerClient (Python e JavaScript) como o SDK do cliente. |
EventProcessorHost foi preterido. |
Como parte da estratégia de recuperação de desastre e disponibilidade em toda a solução, considere habilitar a opção de recuperação de desastre geográfico dos Hubs de Eventos. | Essa opção permite a criação de um namespace secundário em uma região diferente. Somente o namespace ativo recebe mensagens a qualquer momento. As mensagens e os eventos não são replicados para a região secundária. O RTO para o failover regional é de até 30 minutos. Confirme se esse RTO se alinha com os requisitos do cliente e se ajusta à estratégia de disponibilidade mais ampla. Se for necessário um RTO maior, considere a implementação de um padrão de failover do lado do cliente. |
Quando uma solução tem um grande número de publicadores de eventos independentes, considere utilizar Publicadores de Eventos para controle de acesso refinado. | Os Publicadores de Eventos deverão definir automaticamente a chave de partição como o nome do publicador. Portanto, esse recurso só deverá ser usado se os eventos tiverem origem em todos os publicadores de maneira uniforme. |
Não publique eventos em uma partição específica. | Se a ordenação de eventos for essencial, implemente a ordenação downstream ou use um serviço de mensagens diferente. |
Ao publicar eventos com frequência, use o protocolo AMQP quando possível. | Embora o AMQP tenha custos de rede mais altos ao inicializar a sessão, HTTPS requer sobrecarga de TLS para cada solicitação. O AMQP tem um melhor desempenho para editores frequentes. |
O número de partições reflete o grau de paralelismo de downstream que pode ser obtido. | Para obter a taxa de transferência máxima, use o número máximo de partições com suporte pelo SKU ao criar o Hub de Eventos. Aumentar o número de partições permite dimensionar entidades de processamento simultâneas para corresponder às partições, garantindo a disponibilidade ideal de envio e recebimento. |
Ao usar o recurso Captura, considere cuidadosamente a configuração da janela de tempo e do tamanho do arquivo, especialmente com volumes de eventos baixos. | O Data Lake gen2 cobrará pelo tamanho mínimo da transação. Se a definição da janela de tempo for tão baixa que o arquivo não consiga atingir o tamanho mínimo, isso irá gerar um custo extra. |
Artefatos de origem
Para encontrar namespaces dos Hubs de Eventos com o SKU Básico, use a consulta abaixo:
Resources
| where type == 'microsoft.eventhub/namespaces'
| where sku.name == 'Basic'
| project resourceGroup, name, sku.name