As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Como os segmentos de logs são copiados para o armazenamento em camadas para um tópico do Amazon MSK
Quando você habilita o armazenamento em camadas para um tópico novo ou existente, o Apache Kafka copia segmentos de log fechados do armazenamento primário para o armazenamento em camadas.
-
O Apache Kafka copia somente segmentos de log fechados. Ele copia todas as mensagens do segmento de log para o armazenamento em camadas.
-
Os segmentos ativos não estão qualificados para o armazenamento em camadas. O tamanho do segmento de log (segment.bytes) ou o tempo de rolagem do segmento (segment.ms) controla a taxa de fechamento do segmento e a taxa com a qual o Apache Kafka os copia para o armazenamento em camadas.
As configurações de retenção para um tópico com o armazenamento em camadas habilitado são diferentes das configurações para um tópico sem o armazenamento em camadas habilitado. As regras a seguir controlam a retenção de mensagens em tópicos com o armazenamento em camadas habilitado:
-
Você define a retenção no Apache Kafka com duas configurações: log.retention.ms (tempo) e log.retention.bytes (tamanho). Essas configurações determinam a duração total e o tamanho dos dados que o Apache Kafka retém no cluster. Independentemente de você habilitar ou não o modo de armazenamento em camadas, defina essas configurações no nível do cluster. Você pode substituir as configurações no nível do tópico pelas configurações do tópico.
Ao habilitar o armazenamento em camadas, você também pode especificar por quanto tempo o nível primário de armazenamento de alto desempenho armazena os dados. Por exemplo, se um tópico tiver uma configuração de retenção geral (log.retention.ms) de 7 dias e retenção local (local.retention.ms) de 12 horas, o armazenamento primário do cluster vai reter os dados somente nas primeiras 12 horas. O nível de armazenamento de baixo custo retém os dados por 7 dias completos.
-
As configurações usuais de retenção se aplicam ao log completo. Isso inclui suas partes primárias e em camadas.
-
As configurações local.retention.ms ou local.retention.bytes controlam a retenção de mensagens no armazenamento primário. O Apache Kafka copia segmentos de log fechados para o armazenamento hierárquico assim que eles fecham (com base em segment.bytes ou segment.ms), independentemente das configurações locais de retenção. Depois que os segmentos são copiados para o armazenamento hierárquico, eles permanecem no armazenamento primário até que os limites local.retention.ms ou local.retention.bytes sejam atingidos. Nesse ponto, os dados são excluídos do armazenamento primário, mas permanecem disponíveis no armazenamento hierárquico. Isso permite que você mantenha dados recentes no armazenamento primário de alto desempenho para acesso rápido, enquanto os dados mais antigos são servidos pelo armazenamento hierárquico de baixo custo.
-
Quando o Apache Kafka copia uma mensagem em um segmento de log para o armazenamento em camadas, ele remove a mensagem do cluster com base nas configurações retention.ms ou retention.bytes.
Exemplo de cenário de armazenamento em camadas do Amazon MSK
Esse cenário ilustra como um tópico existente que tem mensagens no armazenamento primário se comporta quando o armazenamento em camadas está habilitado. Você habilita o armazenamento em camadas neste tópico ao definir remote.storage.enable como true. Neste exemplo, retention.ms está definido como 5 dias e local.retention.ms está definido como 2 dias. Veja a seguir a sequência de eventos quando um segmento expira.
Tempo T0: antes de você habilitar o armazenamento em camadas.
Antes de você habilitar o armazenamento em camadas para este tópico, há dois segmentos de log. Um dos segmentos está ativo para uma partição 0 de tópico existente.
Tempo T1 (< 2 dias): armazenamento em camadas habilitado. Segmento 0 copiado para o armazenamento em camadas.
Depois de habilitar o armazenamento em camadas para este tópico, o Apache Kafka copia o segmento de log fechado 0 para o armazenamento em camadas assim que ele é fechado. O segmento fecha com base nas configurações segment.bytes ou segment.ms, não com base nas configurações de retenção. O Apache Kafka também mantém uma cópia no armazenamento primário. O segmento 1 ativo ainda não está qualificado para cópia para armazenamento hierárquico porque ainda está ativo e não foi fechado. Neste cronograma, o Amazon MSK ainda não aplica nenhuma das configurações de retenção para nenhuma das mensagens no segmento 0 e no segmento 1. (local.retenção). bytes/ms, retention.ms/bytes)
Tempo T2: retenção local em vigor.
Após 2 dias, o limite de retenção local é atingido para o segmento 0. A configuração de local.retention.ms como 2 dias determina isso. O segmento 0 agora foi excluído do armazenamento primário, mas permanece disponível no armazenamento hierárquico. Observe que o segmento 0 já foi copiado para o armazenamento hierárquico no Horário T1 quando foi fechado, não no Tempo T2 quando a retenção local expirou. O segmento 1 ativo ainda não está qualificado para exclusão nem para cópia para armazenamento hierárquico porque ainda está ativo.
Tempo T3: retenção geral em vigor.
Após 5 dias, as configurações de retenção entram em vigor e o Kafka limpa o segmento 0 de log e as mensagens associadas do armazenamento em camadas. O segmento 1 ainda não está qualificado para expiração nem para cópia para armazenamento em camadas porque está ativo. O segmento 1 ainda não está fechado, portanto não é elegível para a rolagem de segmentos.