¿Qué es Kafka?
Apache Kafka es un almacén de datos distribuidos optimizado para la ingesta y el procesamiento de datos de streaming en tiempo real. Los datos de streaming son datos generados de forma continua por miles de orígenes de datos que, por lo general, envían los registros de datos en simultáneo. Una plataforma de streaming debe manejar este ingreso constante de datos y procesarlos de forma secuencial y progresiva.
Kafka ofrece tres funciones principales a sus usuarios:
- Publica y se suscribe a flujos de registros.
- Almacena de manera efectiva los flujos de registros en el orden en que se generaron los registros.
- Procesa flujos de registros en tiempo real.
Kafka se utiliza principalmente para crear canalizaciones de datos de streaming en tiempo real y aplicaciones que se adapten a las secuencias de datos. Combina mensajería, almacenamiento y procesamiento de transmisiones para permitir el almacenamiento y el análisis de datos históricos y en tiempo real.
¿Para qué se usa Kafka?
Kafka se utiliza para crear canalizaciones de datos de streaming en tiempo real y aplicaciones de streaming en tiempo real. Una canalización de datos procesa y mueve datos de forma fiable de un sistema a otro, y una aplicación de streaming es una aplicación que consume secuencias de datos. Por ejemplo, si desea crear una canalización de datos que incorpore los datos de la actividad de los usuarios para realizar un seguimiento del uso que hacen las personas de su sitio web en tiempo real, Kafka se utilizaría para ingerir y almacenar datos de streaming mientras entrega lecturas para las aplicaciones que impulsan la canalización de datos. Kafka también se utiliza a menudo como una solución de agente de mensajes, que es una plataforma que procesa y media la comunicación entre dos aplicaciones.
¿Cómo funciona Kafka?
Kafka combina dos modelos de mensajería, el de cola y el de publicación-suscripción, para ofrecer a los consumidores las principales ventajas de cada uno de ellos. La creación de colas permite distribuir el procesamiento de datos entre muchas instancias de consumidores, lo que lo hace altamente escalable. Sin embargo, las colas tradicionales no admiten varios suscriptores. El enfoque de publicación-suscripción es de múltiples suscriptores; pero, dado que cada mensaje va a todos los suscriptores, no se puede utilizar para distribuir el trabajo entre varios procesos de trabajo. Kafka utiliza un modelo de registro particionado para unir estas dos soluciones. Un registro es una secuencia ordenada de registros, y estos registros se dividen en segmentos o particiones que corresponden a diferentes suscriptores. Esto significa que puede haber varios suscriptores del mismo tema, y a cada uno se le asigna una partición para permitir una mayor escalabilidad. Por último, el modelo de Kafka proporciona rejugabilidad, lo que permite que varias aplicaciones independientes que leen secuencias de datos funcionen de forma independiente a su propio ritmo.
Creación de colas
Publicación-suscripción
¿Cuáles son las ventajas del enfoque de Kafka?
Escalabilidad
El modelo de registro particionado de Kafka permite que los datos se distribuyan en varios servidores, lo que los hace escalables más allá de lo que cabría en un solo servidor.
Rapidez
Kafka desacopla las secuencias de datos para que haya una latencia muy baja, lo que lo hace extremadamente rápido.
Durabilidad
Las particiones se distribuyen y replican en muchos servidores, y todos los datos se escriben en el disco. Esto ayuda a proteger contra las fallas del servidor, lo que hace que los datos sean muy tolerantes a los errores y duraderos.
¿Cómo integra la arquitectura de Kafka los diferentes modelos?
Kafka corrige los dos modelos diferentes publicando registros sobre temas diferentes. Cada tema tiene un registro particionado, que es un registro de confirmaciones estructurado que realiza un seguimiento de todos los registros en orden y añade otros nuevos en tiempo real. Estas particiones se distribuyen y replican en varios servidores, lo que permite una alta escalabilidad, tolerancia a errores y paralelismo. A cada consumidor se le asigna una partición en el tema, lo que permite tener varios suscriptores y, al mismo tiempo, mantener el orden de los datos. Al combinar estos modelos de mensajería, Kafka ofrece las ventajas de ambos. Kafka también actúa como un sistema de almacenamiento muy escalable y tolerante a errores al escribir y replicar todos los datos en el disco. De forma predeterminada, Kafka mantiene los datos almacenados en el disco hasta que se agote el espacio, pero el usuario también puede establecer un límite de retención. Kafka tiene cuatro API:
- API de productor: se utiliza para publicar un flujo de registros sobre un tema de Kafka.
- API de consumidores: se utiliza para suscribirse a los temas y procesar sus flujos de registros.
- API de transmisiones: permite que las aplicaciones se comporten como procesadores de transmisión, que toman un flujo de entrada de un tema y lo transforman en un flujo de salida que abarca diferentes temas de salida.
- API de conexión: permite a los usuarios automatizar sin problemas la adición de otra aplicación o sistema de datos a sus temas actuales de Kafka.
¿Qué diferencias hay entre Apache Kafka y RabbitMQ?
RabbitMQ es un agente de mensajes de código abierto que utiliza un enfoque de mensajes de cola. Las colas se distribuyen en un grupo de nodos y, opcionalmente, se replican, y cada mensaje solo se entrega a un único consumidor.
Características |
Apache Kafka |
RabbitMQ |
Arquitectura |
Kafka utiliza un modelo de registro particionado, que combina los enfoques de mensajes de cola y publicación/suscripción. |
RabbitMQ usa una cola de mensajes. |
Escalabilidad |
Kafka proporciona escalabilidad al permitir que las particiones se distribuyan en diferentes servidores. |
Aumente la cantidad de consumidores en la cola para escalar horizontalmente el procesamiento entre los consumidores de la competencia. |
Retención de mensajes |
Los mensajes basados en políticas, por ejemplo, pueden almacenarse durante un día. El usuario puede configurar este margen de retención. |
Basado en la recepción, lo que significa que los mensajes se eliminan a medida que se consumen. |
Múltiples consumidores |
Varios consumidores pueden suscribirse al mismo tema, porque Kafka permite reproducir el mismo mensaje durante un período de tiempo determinado. |
No todos los consumidores pueden recibir el mismo mensaje, ya que los mensajes se eliminan a medida que se consumen. |
Replicación |
Los temas se replican automáticamente, pero el usuario puede configurar manualmente los temas para que no se repliquen. |
Los mensajes no se replican automáticamente, pero el usuario puede configurarlos manualmente para que se repliquen. |
Orden de mensajes |
Cada consumidor recibe la información en orden debido a la arquitectura de registro particionada. |
Los mensajes se entregan a los consumidores en el orden de llegada a la cola. Si hay consumidores que compiten entre sí, cada consumidor procesará un subconjunto de ese mensaje. |
Protocolos |
Kafka usa un protocolo binario sobre TCP. |
Advanced messaging queue protocol (AMQP, protocolo avanzado de cola de mensajes) con soporte mediante complementos: MQTT, STOMP. |
Obtener más información sobre la diferencia entre Kafka y RabbitMQ»
¿Cómo puede AWS satisfacer sus necesidades de Kafka?
Obtenga más información sobre cómo implementar Kafka manualmente en AWS aquí.
AWS también ofrece Amazon MSK, el servicio totalmente gestionado más compatible, disponible y seguro para Apache Kafka, que permite a los clientes poblar lagos de datos, transmitir los cambios hacia y desde las bases de datos y potenciar las aplicaciones de análisis y machine learning. Con Amazon MSK, los clientes pueden dedicar menos tiempo a administrar la infraestructura y más tiempo a crear aplicaciones. Más información sobre Amazon MSK.
Siguientes pasos en AWS
Obtenga acceso instantáneo al nivel Gratuito de AWS.
Comience a crear en la consola de administración de AWS.