Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo se copian los segmentos de registro al almacenamiento por niveles para un tema de Amazon MSK
Al habilitar el almacenamiento por niveles para un tema nuevo o existente, Apache Kafka copia los segmentos de registros cerrados del almacenamiento principal al almacenamiento por niveles.
-
Apache Kafka solo copia los segmentos de registro cerrados. Copia todos los mensajes del segmento de registro en un almacenamiento por niveles.
-
Los segmentos activos no son aptos para la organización por niveles. El tamaño de los segmentos de registro (segment.bytes) o el tiempo de traslado de los segmentos (segment.ms) controlan la velocidad de cierre de los segmentos y la velocidad a la que los copia Apache Kafka en el almacenamiento por niveles.
La configuración de retención de un tema con el almacenamiento por niveles habilitado es diferente de la configuración de un tema sin el almacenamiento por niveles habilitado. Las siguientes reglas controlan la retención de los mensajes en los temas con el almacenamiento por niveles habilitado:
-
La retención se define en Apache Kafka con dos configuraciones: log.retention.ms (tiempo) y log.retention.bytes (tamaño). Estas configuraciones determinan la duración y el tamaño totales de los datos que retiene Apache Kafka en el clúster. Ya sea que habilite o no el modo de almacenamiento por niveles, estas configuraciones se establecen a nivel de clúster. Puede sustituir las configuraciones a nivel de tema con las configuraciones de tema.
Al habilitar el almacenamiento por niveles, también puede especificar durante cuánto tiempo el nivel de almacenamiento principal de alto rendimiento almacena los datos. Por ejemplo, si un tema tiene una configuración de retención general (log.retention.ms) de 7 días y una retención local (local.retention.ms) de 12 horas, el almacenamiento principal del clúster retiene los datos solo durante las primeras 12 horas. El nivel de almacenamiento de bajo costo retiene los datos durante 7 días.
-
Las configuraciones de retención habituales se aplican a todo el registro. Esto incluye sus partes por niveles y principales.
-
La configuración local.retention.ms o local.retention.bytes controla la retención de los mensajes en el almacenamiento principal. Apache Kafka copia los segmentos de registros cerrados en un almacenamiento por niveles tan pronto como se cierran (en función de segment.bytes o segment.ms), independientemente de la configuración de retención local. Una vez copiados los segmentos al almacenamiento por niveles, permanecen en el almacenamiento principal hasta que se alcanzan los umbrales local.retention.ms o local.retention.bytes. En ese momento, los datos se eliminan del almacenamiento principal, pero permanecen disponibles en el almacenamiento por niveles. Esto le permite conservar los datos recientes en un almacenamiento primario de alto rendimiento para un acceso rápido, mientras que los datos más antiguos se almacenan en un almacenamiento en niveles de bajo costo.
-
Cuando Apache Kafka copia un mensaje de un segmento de registro en un almacenamiento por niveles, elimina el mensaje del clúster según la configuración retention.ms o retention.bytes.
Escenario de almacenamiento por niveles de Amazon MSK de ejemplo
Este escenario ilustra cómo se comporta un tema existente que tiene mensajes en el almacenamiento principal cuando el almacenamiento por niveles está habilitado. Para habilitar el almacenamiento por niveles en este tema, establezca remote.storage.enable en true. En este ejemplo, retention.ms se establece en 5 días y local.retention.ms se establece en 2 días. La siguiente es la secuencia de eventos cuando un segmento caduca.
Momento T0: antes de habilitar el almacenamiento por niveles.
Antes de habilitar el almacenamiento por niveles para este tema, hay dos segmentos de registro. Uno de los segmentos está activo para la partición 0 de un tema existente.
Momento T1 (< 2 días): almacenamiento por niveles habilitado. El segmento 0 se copió en un almacenamiento por niveles.
Tras habilitar el almacenamiento por niveles para este tema, Apache Kafka copia el segmento 0 del registro cerrado en el almacenamiento por niveles tan pronto como se cierra. El segmento se cierra según la configuración segment.bytes o segment.ms, no según la configuración de retención. Apache Kafka también conserva una copia en el almacenamiento principal. El segmento activo 1 aún no es apto para copiarse en un almacenamiento por niveles porque sigue activo y no se ha cerrado. En este cronograma, Amazon MSK aún no aplica ninguna de las configuraciones de retención a ninguno de los mensajes del segmento 0 y del segmento 1. (retención local). bytes/ms, retention.ms/bytes)
Momento T2: retención local vigente.
Después de 2 días, se alcanza el umbral de retención local para el segmento 0. Esto se determina si se establece local.retention.ms en 2 días. El segmento 0 ahora se ha eliminado del almacenamiento principal, pero permanece disponible en el almacenamiento por niveles. Tenga en cuenta que el segmento 0 ya estaba copiado en el almacenamiento por niveles en el momento T1 cuando se cerró, no en el momento T2, cuando expiró la retención local. El segmento activo 1 aún no es apto para ser eliminado ni copiado en un almacenamiento por niveles porque sigue activo.
Momento T3: retención general vigente.
Transcurridos 5 días, la configuración de retención entra en vigencia y Kafka borra el segmento 0 del registro y los mensajes asociados del almacenamiento por niveles. El segmento 1 aún no es apto para la caducidad ni se puede copiar en un almacenamiento por niveles porque está activo. El segmento 1 aún no está cerrado, por lo que no es apto para el traslado de segmentos.