Compactação de log nos Hubs de Eventos do Azure
A compactação de log é uma maneira de reter dados nos Hubs de Eventos usando a retenção baseada em chave de evento. Por padrão, cada hub de eventos/tópico Kafka é criado com retenção baseada em tempo ou política de limpeza de exclusão, em que os eventos são limpos após a expiração do tempo de retenção. Em vez de usar a retenção baseada em tempo mais granular, você pode usar o mecanismo de retenção baseado em chave de evento em que os Hubs de Eventos treinam novamente o último valor conhecido para cada chave de evento de um hub de eventos ou um tópico Kafka.
Observação
Não há suporte para o recurso de compactação de log na camada de serviço básica.
Conforme mostrado na imagem a seguir, um log de eventos (de uma partição do hub de eventos) pode ter vários eventos com a mesma chave. Se você estiver usando um hub de eventos compactado, o serviço de Hubs de Eventos cuida da limpeza de eventos antigos e manterá apenas os eventos mais recentes de uma determinada chave de evento.
Chave de compactação
A chave de partição definida com cada evento é usada como a chave de compactação.
Marcas de exclusão
O aplicativo cliente pode marcar eventos existentes de um hub de eventos a serem excluídos durante o trabalho de compactação. Esses marcadores são conhecidos como Marcas de exclusão. Os aplicativos cliente definem as marcas de exclusão enviando um novo evento com uma chave existente e uma carga de evento do null
.
Como funciona a compactação de log
Você pode habilitar a compactação de log em cada nível de hub de eventos/tópico Kafka. Você pode ingerir eventos em um artigo compactado de qualquer protocolo de suporte. O serviço Hubs de Eventos do Azure executa um trabalho de compactação para cada hub de eventos compactado. O trabalho de compactação limpa cada log de partição do hub de eventos retendo apenas o evento mais recente de uma determinada chave de evento.
Em um determinado momento, o log de eventos de um hub de eventos compactado pode ter uma parte limpa e uma parte suja. A parte limpa contém os eventos compactados pelo trabalho de compactação, enquanto a parte suja compreende os eventos que ainda não foram compactados.
O serviço Hubs de Eventos gerencia a execução do trabalho de compactação e o usuário não pode controlá-lo. Portanto, o serviço de Hubs de Eventos determina quando iniciar a compactação e a rapidez com que compacta um determinado hub de eventos compactado.
Garantias de compactação
O recurso de compactação de log dos Hubs de Eventos fornece a seguinte garantia:
- A ordenação das mensagens é sempre mantida no nível de chave e partição. O trabalho de compactação não altera a ordenação de mensagens, mas apenas descarta os eventos antigos da mesma chave.
- O número de sequência e o deslocamento de uma mensagem nunca são alterados.
- Qualquer consumidor que progrida desde o início do log de eventos vê pelo menos o estado final de todos os eventos na ordem em que foram gravados.
- Os consumidores ainda podem ver eventos marcados para serem excluídos pelo tempo definido pelo Tempo de Retenção da Marca de Exclusão (horas).
Casos de uso de compactação de log
A compactação de log pode ser útil em cenários em que você transmite o mesmo conjunto de eventos atualizáveis. Como os hubs de eventos compactados mantêm apenas os eventos mais recentes, os usuários não precisam se preocupar com o crescimento do armazenamento de eventos. Portanto, a compactação de log é comumente usada em cenários como o CDC (captura de dados de alterações), mantendo o evento em tabelas para aplicativos de processamento de fluxo e cache de eventos.
Cotas e limites
Limite | Basic | Standard | Premium | Dedicado |
---|---|---|---|---|
Tamanho do hub de eventos compactado | N/D | 1 GB por partição | 250 GB por partição | 250 GB por partição |
Para outras cotas e limites, confira Cotas e limites do Hubs de Eventos.
Próximas etapas
Para obter instruções sobre como usar a compactação de log nos Hubs de Eventos, consulte Usar compactação de log