Principios básicos de Kafka
Kafka es un servicio de registro de confirmación de código abierto, distribuido, particionado y replicado. Kafka es mensajería de publicación y suscripción, repensada como un registro de confirmación distribuido. Proporciona características similares a Java Message Service (JMS) pero otro diseño. Cuenta con resistencia de mensajes, alto rendimiento, métodos distribuidos, soporte para múltiples clientes y tiempo real. Se aplica tanto al consumo de mensajes en línea como fuera de línea, como la recopilación regular de mensajes, el seguimiento de la actividad del sitio web, la agregación de datos estadísticos de operación del sistema (datos de supervisión) y la recopilación de registros. Estos escenarios involucran grandes cantidades de recopilación de datos para servicios de Internet.
Estructura de Kafka
Los productores publican datos sobre temas y los consumidores se suscriben a los temas y consumen mensajes. Un broker es un servidor en un clúster de Kafka. Para cada topic, el clúster de Kafka mantiene particiones para la escalabilidad, el paralelismo y la tolerancia a fallas. Cada partición es una secuencia ordenada e inmutable de mensajes que se agrega continuamente a - un registro de confirmación. A cada mensaje de una partición se le asigna un ID secuencial, que se denomina desplazamiento.
Nombre |
Descripción |
---|---|
Broker |
Un broker es un servidor en un clúster de Kafka. |
Topic |
Un topic es un nombre de categoría o fuente en el que se publican mensajes. Un topic se puede dividir en varias particiones, que pueden actuar como una unidad paralela. |
Partition |
Un partition es una secuencia ordenada e inmutable de mensajes que se agrega continuamente a - un registro de confirmación. A cada uno de los mensajes de las particiones se le asigna un número de ID secuencial denominado desplazamiento que identifica de manera única cada mensaje dentro de la partición. |
Producer |
Los productores publican mensajes a un tema de Kafka. |
Consumer |
Los consumidores se suscriben a temas y procesan el feed de mensajes publicados. |
Figura 2 muestra las relaciones entre módulos.
Los consumidores se etiquetan a sí mismos con un nombre de grupo de consumidores, y cada mensaje publicado en un tema se envía a una instancia de consumidor dentro de cada grupo de consumidores que se suscribe. Si todas las instancias de consumidores pertenecen al mismo grupo de consumidores, las cargas se distribuyen uniformemente entre los consumidores. Como se muestra en la figura anterior, el Consumer1 y el Consumer2 trabajan en modo de carga compartida; el Consumer3, Consumer4, Consumer5, and Consumer6 trabajan en modo de carga compartida. Si todas las instancias de consumidor pertenecen a diferentes grupos de consumidores, los mensajes se transmiten a todos los consumidores. Como se muestra en la figura anterior, los mensajes en el Tema 1 se transmiten a todos los consumidores en Consumer Group1 y Consumer Group2.
Para obtener más información sobre la arquitectura y los principios de Kafka, consulte https://kafka.apache.org/24/documentation.html.
Principio
- Confiabilidad de mensaje
Cuando un Kafka broker recibe un mensaje, almacena el mensaje en un disco de forma persistente. Cada partición de un tema tiene varias réplicas almacenadas en diferentes nodos de agente. Si un nodo es defectuoso, se pueden utilizar las réplicas de otros nodos.
- Alto rendimiento
Kafka proporciona un alto rendimiento de las siguientes maneras:
- Los mensajes se escriben en discos en lugar de almacenarse en caché en la memoria, utilizando completamente el rendimiento secuencial de lectura y escritura de discos.
- El uso de zero-copy elimina las operaciones de E/S.
- Los datos se envían por lotes, lo que mejora la utilización de la red.
- Cada tema se divide en varias particiones, lo que aumenta el procesamiento simultáneo. Las operaciones de lectura y escritura simultáneas se pueden realizar entre múltiples productores y consumidores. Los productores envían mensajes a las particiones especificadas en función del algoritmo utilizado.
- Mecanismo de notificación-suscripción de mensaje
Los consumidores se suscriben a temas interesados y consumen datos en modo pull. Los consumidores pueden elegir el modo de consumo, como el consumo de lotes, el consumo repetido y el consumo desde el final, y controlar la velocidad de extracción del mensaje en función de la situación real. Los consumidores necesitan mantener los registros de consumo por sí mismos.
- Escalabilidad
Cuando se agregan nodos de broker para ampliar la capacidad del clúster de Kafka, los brokeres recién agregados se registran con ZooKeeper. Después de que el registro es exitoso, los procedimientos y los consumidores pueden detectar el cambio de manera oportuna y hacer ajustes relacionados.
Características de código abierto
- Confiabilidad
Se proporcionan métodos de procesamiento de mensajes tales como At-Least Once, At-Most Once y Exactly Once. El estado de procesamiento de mensajes es mantenido por los consumidores. Kafka necesita trabajar con la capa de aplicación para implementar Exactly Once.
- Alto rendimiento
Se proporciona un alto rendimiento para la publicación de mensajes y la suscripción.
- Persistencia
Los mensajes se almacenan en discos y se pueden usar para el consumo por lotes y programas de aplicación en tiempo real. La persistencia y la replicación de los datos evitan la pérdida de datos.
- Distribución
Un sistema distribuido es fácil de expandir externamente. Todos los producers, brokers, and consumers apoyan la implementación de múltiples clústeres distribuidos. Los sistemas se pueden escalar sin detener el funcionamiento del software o apagar las máquinas.
Kafka UI
Kafka UI proporciona servicios web de Kafka, muestra información básica sobre módulos funcionales como brokers, topics, partitions, y consumers en un clúster de Kafka, y proporciona entradas de operación para comandos de Kafka comunes. Kafka UI reemplaza a Kafka Manager para proporcionar servicios web seguros de Kafka que cumplen con las especificaciones de seguridad.
Puede realizar las siguientes operaciones en Kafka UI:
- Comprobar el estado del clúster (topics, consumers, offsets, partitions, replicas, y nodes).
- Redistribuir las particiones en el clúster.
- Crear un topic con configuraciones de topic opcionales.
- Eliminar un tema (compatible cuando delete.topic.enable está establecido en true para el servicio Kafka).
- Agregar particiones a un tema existente.
- Actualizar las configuraciones de un tema existente.
- Opcionalmente, habilitar el sondeo de JMX para métricas a nivel de broker y a nivel de topic.