Muy buenas, me llamo Miguel y esta vez les traigo otro tutorial.
Al diseñar un sistema distribuido confiable o un sistema de mensajes, lo primero que viene a la mente al usar los recursos de AWS es SQS y Kinesis.
A primera vista, Kinesis tiene una función mucho más poderosa que SQS. Una cosa acerca de Kinesis es que puede manejar un gran volumen de datos; puede reproducir mensajes o tener varios consumidores que se suscriban a su Kinesis Stream. Sin embargo, Kinesis también es una herramienta costosa, hay muchas curvas de aprendizaje para aprender sobre el desarrollo en Kinesis. También depende de sus aplicaciones, a veces no necesita una herramienta de elevación masiva como Kinesis para su uso, y SQS funcionará perfectamente bien.
En este artículo, me gustaría hablar sobre Kinesis y SQS, mostrándole los beneficios y desventajas de Kinesis y SQS. Por último, profundizaré en la diferencia entre los dos sistemas y los mejores casos de uso para ambos servicios.
Índice
Kinesis
Antes de que existieran las canalizaciones de datos de flujo o Kinesis, la única forma de manejar aplicaciones de big data es utilizando Procesamiento por lotes.
Los productores agregarán todos los archivos, los colocarán en un archivo de almacenamiento o almacenamiento simple (S3). Luego, el consumidor realizará un procesamiento por lotes teniendo un trabajo Cron, es decir, una vez al día, para procesar cada nuevo lote de datos.
Hay un problema con este tipo de operación de big data. Con el procesamiento por lotes, no puede procesar datos en tiempo real. Las aplicaciones que requieren análisis en tiempo real, como la aplicación del mercado de valores, la detección fraudulenta o incluso un flujo de clics, siempre procesarán datos en el pasado.
Kinesis stream es una canalización de transmisión que ayuda a crear un procesamiento de transmisión de datos en tiempo real en sus aplicaciones.
El beneficio de Kinesis Stream
Múltiples consumidores
Una vez que los productores publican nuevos datos en la tubería, se pueden consumir de varios consumidores de inmediato.
Proporciona un orden de los registros (datos) y la capacidad de leer o reproducir el mismo orden para varios consumidores.
Cada consumidor tendrá su punto de control en los fragmentos del iterador de Kinesis que realiza un seguimiento de dónde consumen los datos.
Hay una función, distribución mejorada, en la que cada consumidor puede recibir su propio flujo de lectura de 2 MB / segundo.
Tiempo real
Kinesis tiene el rendimiento máximo para la ingestión o el procesamiento de datos. Cuando los productores publican los datos en Kinesis Stream, el consumidor a menudo puede obtener los datos en menos de un segundo, independientemente de la cantidad de datos que escriba.
Big Data
Si necesita manejar terabytes de datos por día en un solo flujo, Kinesis puede hacerlo por usted. Puede enviar datos de muchos productores de datos y almacenarlos para su posterior procesamiento o en tiempo real.
Tenga en cuenta que Kinesis almacena el registro durante 24 horas de forma predeterminada, hasta 168 horas.
El inconveniente de Kinesis Stream
Gestión de fragmentos
Necesita administrar su fragmento para sus datos. Saber si necesita o no incrementar o disminuir la cantidad de fragmentos en función de la cantidad de consumidores que tenga.
Biblioteca complicada de consumidores y productores
Para obtener el máximo rendimiento, Kinesis proporciona la biblioteca de consumidores y productores. Como biblioteca de productor, implementa el binario C ++ con una interfaz Java para leer y escribir registros de datos en Kinesis Stream. Para agregar una biblioteca de consumidor, debe implementar una aplicación Java que pueda comunicarse con otros lenguajes. De cualquier manera, necesita algo de tiempo invertido en desarrollar y mantener la biblioteca.
Estado de mantenimiento
Kinesis permite que cada uno de sus consumidores lea de la transmisión de forma independiente. Requiere que cada consumidor administre su propio iterador / punto de control en la secuencia y qué tan lejos ha leído y procesado. Luego, los metadatos del consumidor se almacenarán en DynamoDB si tiene varias lecturas de consumidor de un flujo de Kinesis que deberá administrar el punto de control de cada cliente para leer de cada fragmento en el flujo de Kinesis.
Servicio de cola simple (SQS)
SQS ayuda a desacoplar sus microservicios, sistemas distribuidos.
Con SQS, puede enviar, almacenar o recibir mensajes entre componentes de software en cualquier volumen. No debe temer que se pierdan datos en los componentes o que el servicio esté siempre disponible. Puede escalar el sistema por separado si tiene una cola como capa intermedia para transferir datos entre su servicio. También puede hacer que cada uno de sus servicios realice una funcionalidad discreta para mejorar la escalabilidad y confiabilidad del sistema.
Beneficio de SQS
Fácil de usar
El AWS SDK para SQS es sencillo de usar. No es necesario crear un productor o una biblioteca cliente para interactuar con SQS.
Leer rendimiento
SQS puede escalar rápidamente un gran volumen de datos sin la intervención del usuario. Le permite aumentar dinámicamente el rendimiento de lectura en función de la cantidad de tarea que está leyendo en la cola. SQS almacena en búfer las solicitudes para gestionar picos de carga.
Inconvenientes de SQS
Crea tu punto de control
Sin una configuración, hay un atributo de tiempo de retardo y el atributo de tiempo de espera de visibilidad que AWS preestableció.
El atributo de tiempo de retardo es el tiempo de retardo desde que el mensaje llegó a SQS hasta que el mensaje es visible para el consumidor.
El tiempo de espera de visibilidad es cuando el consumidor lee el mensaje, ese mensaje no es visible para el otro consumidor que lo está leyendo hasta que expira el tiempo de espera de visibilidad. El mensaje volverá a ser visible para el consumidor.
SQS no tiene varios consumidores como Kinesis Stream, y el mensaje transmite el comportamiento al menos una vez, donde los consumidores pueden recibir mensajes duplicados.
Por lo tanto, es una buena práctica eliminar el mensaje después de recibirlo.
Reproducibilidad de mensajes
Debido a que los consumidores generalmente eliminarán el mensaje una vez procesado, no hay posibilidad de reproducir el mensaje en SQS.
En comparación, cada consumidor de Kinesis tendrá su punto de control para señalar dónde procesaron los últimos registros, SQS sirve un solo iterador para todos sus consumidores.
Casos de uso para SQS
SQS se utiliza si desea desacoplar sus componentes de software o asignar tareas a varios trabajadores.
Si tiene alguna operación que tenga una tarea en segundo plano sustancial, puede enviar la tarea en segundo plano a SQS para eliminar el punto de falla de ese servicio. Por ejemplo, una solicitud que necesita un proceso engorroso en segundo plano antes de escribir en DDB. Ese servicio no puede manejar una gran cantidad de solicitudes al mismo tiempo. Por lo tanto, al colocar cada aplicación en el SQS, podemos manejar fácilmente un pico de tráfico significativo y no tenemos que preocuparnos por la pérdida de datos si ese servicio no funciona. Además, SQS tiene una función de cola de mensajes no entregados que puede almacenar los datos en un DLQ si no se procesa durante 14 días.
Casos de uso de Kinesis
Kinesis puede ayudarlo a transmitir datos en tiempo real. Puede colocar los datos en la canalización de Kinesis y permitir que numerosos consumidores lean los datos de la transmisión si tiene varios consumidores que necesitan realizar análisis en los datos.
Kinesis se utiliza mejor para registrar datos de eventos, análisis en tiempo real, funcionalidad de búsqueda o detección de fraude, cualquier cosa que varios consumidores necesiten procesar o procesar en tiempo real.
Resumen
Hay varias herramientas y recursos a la hora de desarrollar aplicaciones en la nube. La advertencia de diseñar su aplicación es comprender e investigar cuáles son los casos de uso de su aplicación y saber qué herramientas son adecuadas para qué propósitos.
Considere Kinesis si está haciendo algo con una cantidad sustancial de datos en tiempo real o si necesita que varios consumidores se suscriban a esos datos. Si no es así, considere SQS.
Gracias por leer.
Añadir comentario