Logotipo de Zephyrnet

Retenga más por menos con almacenamiento en niveles para Amazon MSK

Fecha:

Las organizaciones están adoptando Apache Kafka y Amazon Managed Streaming para Apache Kafka (Amazon MSK) para capturar y analizar datos en tiempo real. Amazon MSK le permite crear y ejecutar aplicaciones de producción en Apache Kafka sin necesidad de tener experiencia en administración de infraestructura de Kafka ni tener que lidiar con los complejos gastos generales asociados con la ejecución de Apache Kafka por su cuenta. Con una madurez cada vez mayor, los clientes buscan crear casos de uso sofisticados que combinen aspectos del procesamiento por lotes y en tiempo real. Por ejemplo, es posible que desee entrenar modelos de aprendizaje automático (ML) basados ​​en datos históricos y luego usar estos modelos para hacer inferencias en tiempo real. O es posible que desee poder volver a calcular los resultados anteriores cuando la lógica de la aplicación cambió, por ejemplo, cuando se agrega un nuevo KPI a una aplicación de análisis de transmisión o cuando se solucionó un error que provocó una salida incorrecta. Estos casos de uso a menudo requieren almacenar datos durante varias semanas, meses o incluso años.

Apache Kafka está bien posicionado para admitir este tipo de casos de uso. Los datos se conservan en el clúster de Kafka durante el tiempo que sea necesario mediante la configuración de la política de retención. De esta manera, los datos más recientes se pueden procesar en tiempo real para casos de uso de baja latencia, mientras que los datos históricos permanecen accesibles en el clúster y se pueden procesar por lotes.

Sin embargo, la retención de datos en un clúster de Kafka puede resultar costosa porque el almacenamiento y la computación están estrechamente acoplados en un clúster. Para escalar el almacenamiento, debe agregar más intermediarios. Pero agregar más intermediarios con el único propósito de aumentar el almacenamiento desperdicia el resto de los recursos informáticos, como la CPU y la memoria. Además, un clúster grande con más nodos agrega complejidad operativa con un tiempo más largo para recuperarse y reequilibrarse cuando falla un intermediario. Para evitar esa complejidad operativa y un mayor costo, puede mover sus datos a Servicio de almacenamiento simple de Amazon (Amazon S3) para acceso a largo plazo y con clases de almacenamiento rentables en Amazon S3, puede optimizar su costo total de almacenamiento. Esto resuelve los desafíos de costos, pero ahora debe crear y mantener esa parte de la arquitectura para el movimiento de datos a un almacén de datos diferente. También debe crear una lógica de procesamiento de datos diferente utilizando diferentes API para consumir datos (API de Kafka para transmisión, API de Amazon S3 para lecturas históricas).

Hoy, anunciamos el almacenamiento en niveles de Amazon MSK, que brinda un nivel de almacenamiento prácticamente ilimitado y de bajo costo para Amazon MSK, lo que hace que sea más simple y rentable para los desarrolladores crear aplicaciones de transmisión de datos. Desde el lanzamiento de Amazon MSK en 2019, hemos habilitado capacidades como escala vertical y escalado automático del almacenamiento del intermediario para que pueda operar sus cargas de trabajo de Kafka de una manera rentable. A principios de este año, lanzamos rendimiento aprovisionado lo que permite escalar la E/S sin problemas sin tener que aprovisionar intermediarios adicionales. El almacenamiento en niveles hace que sea aún más rentable ejecutar cargas de trabajo de Kafka. Ahora puede almacenar datos en Apache Kafka sin preocuparse por los límites. Puede equilibrar eficazmente el rendimiento y los costos mediante el uso del rendimiento optimizado Almacenamiento primario para datos en tiempo real y el nuevo nivel de bajo costo para los datos históricos. Con unos pocos clics, puede mover la transmisión de datos a un nivel de menor costo para almacenar datos y pagar solo por lo que usa.

El almacenamiento en niveles lo libera de hacer concesiones difíciles entre respaldar las necesidades de retención de datos de sus equipos de aplicaciones y la complejidad operativa que conlleva. Esto le permite usar el mismo código para procesar datos históricos y en tiempo real para minimizar los flujos de trabajo redundantes y simplificar las arquitecturas. Con el almacenamiento en niveles de Amazon MSK, puede implementar una arquitectura Kappa, un patrón de implementación de arquitectura de software que prioriza la transmisión, para usar la misma canalización de procesamiento de datos para la corrección y la integridad de los datos durante un horizonte de tiempo mucho más largo para el análisis comercial.

Cómo funciona el almacenamiento en niveles de Amazon MSK

Veamos cómo funciona el almacenamiento en niveles para Amazon MSK. Apache Kafka almacena datos en archivos llamados segmentos de registro. A medida que se completa cada segmento, según el tamaño del segmento configurado en el nivel de clúster o tema, se copia en el nivel de almacenamiento de bajo costo. Los datos se guardan en un almacenamiento de rendimiento optimizado durante un tiempo de retención específico o hasta un tamaño específico y luego se eliminan. Hay una configuración de límite de tiempo y tamaño separada para el almacenamiento de bajo costo, que debe ser más larga que el nivel de almacenamiento optimizado para el rendimiento. Si los clientes solicitan datos de segmentos almacenados en el nivel de bajo costo, el corredor lee los datos y los entrega de la misma manera que si se estuvieran entregando desde el almacenamiento de rendimiento optimizado. Las API y los clientes existentes funcionan con cambios mínimos. Cuando su aplicación comienza a leer datos del nivel de bajo costo, puede esperar un aumento en la latencia de lectura para los primeros bytes. A medida que comienza a leer los datos restantes de forma secuencial desde el nivel de bajo costo, puede esperar latencias similares a las del nivel de almacenamiento principal. Con el almacenamiento en niveles, paga por la cantidad de datos que almacena y la cantidad de datos que recupera.

Como ejemplo de precios, consideremos una carga de trabajo en la que su tasa de ingesta es de 15 MB/s, con un factor de replicación de 3, y desea conservar los datos en su clúster de Kafka durante 7 días. Para una carga de trabajo de este tipo, se requieren 6 corredores m5.large, con almacenamiento EBS de 32.4 TB, que cuesta 4,755 USD. Pero si usa almacenamiento en niveles para la misma carga de trabajo con retención local de 4 horas y retención de datos general de 7 días, requiere 3 intermediarios m5.large, con 0.8 TB de almacenamiento EBS y 9 TB de almacenamiento en niveles, lo que cuesta $1,584. Si desea leer todos los datos históricos a la vez, cuesta $ 13 ($ 0.0015 por costo de recuperación de GB). En este ejemplo con almacenamiento en niveles, ahorra alrededor del 66 % de su costo total.

Comience a usar el almacenamiento en niveles de Amazon MSK

Para habilitar el almacenamiento en niveles en su clúster existente, actualice su clúster MSK a Kafka versión 2.8.2.tiered y luego elija Almacenamiento en niveles y almacenamiento EBS como su modo de almacenamiento de clúster en la consola de Amazon MSK.

Después de habilitar el almacenamiento en niveles en el nivel de clúster, ejecute el siguiente comando para habilitar el almacenamiento en niveles en un tema existente. En este ejemplo, está habilitando el almacenamiento en niveles en un tema llamado msk-ts-topic con 7 días de retención (local.retention.ms=604800000) para un nivel de almacenamiento local de alto rendimiento, estableciendo una retención de 180 días (retention.ms=15550000000) para retener los datos en el nivel de almacenamiento de bajo costo y actualizar el tamaño del segmento de registro a 48 MB:

bin/kafka-configs.sh --bootstrap-server $bsrv --alter --entity-type topics --entity-name msk-ts-topic --add-config 'remote.storage.enable=true, local.retention.ms=604800000, retention.ms=15550000000, segment.bytes=50331648'

Disponibilidad y precios

El almacenamiento en niveles de Amazon MSK está disponible en todas las regiones de AWS donde Amazon MSK está disponible, excepto en las regiones de AWS China y AWS GovCloud. Este nivel de almacenamiento de bajo costo escala a un almacenamiento virtualmente ilimitado y no requiere aprovisionamiento inicial. Solo paga por el volumen de datos retenidos y recuperados en el nivel de bajo costo.

Para obtener más información sobre esta característica y su precio, consulte la Guía para desarrolladores de Amazon MSK y Página de precios de Amazon MSK. Para encontrar el tamaño adecuado para su clúster, consulte la pagina de mejores practicas.

Resumen

Con el almacenamiento en niveles de Amazon MSK, no necesita aprovisionar almacenamiento para el nivel de bajo costo ni administrar la infraestructura. El almacenamiento en niveles le permite escalar a un almacenamiento prácticamente ilimitado. Puede acceder a los datos en el nivel de bajo costo utilizando los mismos clientes que usa actualmente para leer datos del nivel de almacenamiento primario de alto rendimiento. La API de consumidor, la API de secuencias y los conectores de Apache Kafka consumen datos de ambos niveles sin cambios. Puede modificar los límites de retención en el nivel de almacenamiento de bajo costo de manera similar a cómo puede modificar los límites de retención en el almacenamiento de alto rendimiento.

Habilite el almacenamiento en niveles en sus clústeres de MSK hoy para conservar los datos por más tiempo a un costo menor.


Sobre la autora

Masudur Rahaman Sayem es Arquitecto de Streaming en AWS. Trabaja con clientes de AWS en todo el mundo para diseñar y crear una arquitectura de transmisión de datos para resolver problemas comerciales del mundo real. Es un apasionado de los sistemas distribuidos. También le gusta leer, especialmente cómics clásicos.

punto_img

Información más reciente

punto_img