Arquitetura Kafka: compactação de Log

este post realmente parte de nossa série sobre arquitetura kafka , que inclui arquitetura Kafka topics , arquitetura Kafka producer , arquitetura Kafka consumer e arquitetura Kafka ecosystem .

este artigo é fortemente inspirado na seção kafka sobre design em torno da compactação de log . você pode pensar nisso como as notas do penhasco sobre o design kafka em torno da compactação de log .

kafka pode excluir registros mais antigos com base no tempo ou tamanho de um log. o kafka também suporta compactação de log para compactação de chave de registro. compactação de log significa que o kafka manterá a versão mais recente de um registro e excluirá as versões mais antigas durante uma compactação de log.Jean-paul azar trabalha na cloudurable . o cloudurable fornece treinamento kafka, consultoria kafka, suporte kafka e ajuda a configurar clusters kafka na aws .

compactação de log kafka

a compactação de log retém pelo menos o último valor conhecido para cada chave de registro para uma única partição de tópico. os logs compactados são úteis para restaurar o estado após uma falha ou falha do sistema.

eles são úteis para serviços na memória, armazenamentos de dados persistentes, recarregando um cache, etc. um caso de Uso importante de fluxos de dados é registrar alterações em dados mutáveis e com chave em uma tabela de banco de dados ou alterações em objeto em microsserviço na memória.

a compactação de log é um mecanismo de retenção granular que mantém a última atualização para cada chave. um log de tópico compactado contém um instantâneo completo dos valores de registro final para cada chave de registro, não apenas as chaves alteradas recentemente.

a compactação de log kafka permite que os consumidores downstream restaurem seu estado a partir de um tópico compactado de log.

estrutura de compactação do log Kafka

com um log compactado, o log tem cabeça e cauda. a cabeça do log compactado é idêntica a um log kafka tradicional. novos registros são anexados ao final da cabeça.

toda a compactação de log funciona na cauda do log. apenas a cauda é compactada. os registros na cauda do log mantêm seu deslocamento original quando gravados após serem reescritos com a limpeza de compactação .

estrutura de compactação de log kafka

estrutura de compactação de log

noções básicas de compactação de log kafka

todas as compensações de log compactadas permanecem válidas, mesmo que o registro em deslocamento tenha sido compactado, pois o consumidor obterá o próximo deslocamento mais alto.

a compactação do log kafka também permite exclusões. uma mensagem com uma chave e uma carga útil nula atua como uma lápide, um marcador de exclusão para essa chave. as lápides são limpas após um período. a compactação de log é executada periodicamente em segundo plano copiando novamente os segmentos de log. a compactação não bloqueia leituras e pode ser restringida para evitar impactos na E / S de produtores e consumidores.

kafka log do processo de compactação

kafka log do processo de compactação

kafka registo de compactação de limpeza

se um kafka consumidor permanece preso à cabeça do log, ele vê a cada registro que está escrito.

topic config min.compaction.lag.ms é usado para garantir um período mínimo que deve passar antes que uma mensagem possa ser compactada. o consumidor vê todas as lápides, desde que o consumidor atinja a cabeça de um log em um período menor que a configuração do tópico delete.retention.ms (o padrão é 24 horas). a compactação de log nunca reordenará as mensagens, basta remover algumas. o deslocamento de partição para uma mensagem nunca muda.

qualquer leitura do consumidor desde o início do log vê pelo menos o estado final de todos os registros na ordem em que foram escritos.

Kafka log cleaner

lembre-se de que um tópico kafka tem um log. um log é dividido em partições e as partições são divididas em segmentos que contêm registros que possuem chaves e valores.

o limpador de log kafka faz compactação de log. o limpador de log tem um pool de threads de compactação de fundo. esses threads copiam arquivos de segmento de log, removendo registros mais antigos cuja chave reaparece recentemente no log. cada segmento de compactação escolhe o log de tópicos que tem a maior proporção de cabeça de log para cauda de log. em seguida, o segmento de compactação recopia o log do início ao fim removendo registros cujas chaves ocorrem mais tarde no log.

à medida que o limpador de log limpa os segmentos de partição de log, os segmentos são trocados para a partição de log substituindo imediatamente os segmentos mais antigos. dessa forma, a compactação não requer o dobro do espaço de toda a partição, pois o espaço em disco adicional necessário é apenas um segmento de partição de log adicional – dividir e conquistar.

configuração de tópico para compactação de log

para ativar a compactação para um tópico, use a configuração de tópico log.cleanup.policy=compact .

para definir um atraso para iniciar a compactação de registros após a gravação, use topic config log.cleaner.min.compaction.lag.ms . os registros não serão compactados até depois desse período. a configuração dá aos consumidores tempo para obter todos os recordes.

revisão da compactação de log

quais são as três maneiras pelas quais o kafka pode excluir registros?

kafka pode excluir registros mais antigos com base no tempo ou tamanho de um log. o kafka também suporta compactação de log para compactação de chave de registro.

para que serve a compactação de log?

como a compactação de log retém o último valor conhecido, é um instantâneo completo dos registros mais recentes, é útil para restaurar o estado após uma falha ou falha do sistema para um serviço na memória, um armazenamento de dados persistente ou recarregar um cache. permite que os consumidores a jusante restaurem seu estado.

Qual é a estrutura de um log compactado? descreva a estrutura.

com um log compactado, o log tem cabeça e cauda. a cabeça do log compactado é idêntica a um log kafka tradicional. novos registros são anexados ao final da cabeça. toda a compactação de log funciona na cauda do log compactado.

após a compactação, as compensações de registro de log mudam? Não.

o que é um segmento de partição?

lembre-se de que um tópico tem um log. um log de tópicos é dividido em partições e as partições são divididas em arquivos de segmento que contêm registros que possuem chaves e valores. os arquivos de segmento permitem dividir e conquistar quando se trata de compactação de log. um arquivo de segmento faz parte da partição. à medida que o limpador de log limpa os segmentos de partição de log, os segmentos são trocados para a partição de log substituindo imediatamente os arquivos de segmento mais antigos. dessa forma, a compactação não requer o dobro do espaço de toda a partição, pois o espaço em disco adicional necessário é apenas um segmento de partição de log adicional.Jean-paul azar trabalha na cloudurable . o cloudurable fornece treinamento kafka, consultoria kafka, suporte kafka e ajuda a configurar clusters kafka na aws .

Deixe uma resposta

O seu endereço de email não será publicado.