5-kafka (cola de mensajes distribuida)
Kafka: un sistema distribuido de mensajería de publicación y suscripción, fue desarrollado originalmente por LinkedIn y escrito en Scala. Más tarde se unió a Apache y se convirtió en un subproyecto de Apache.
1. Persistencia de mensajes: al utilizar una estructura de almacenamiento en disco con una complejidad temporal de O (1), incluso los datos de más de TB pueden garantizar la velocidad de acceso en un tiempo constante.
2. Alto rendimiento: Kafka tiene un rendimiento muy alto y puede garantizar la transmisión de 100.000 mensajes por segundo en un solo nodo, incluso en un clúster comercial con un rendimiento de un solo nodo relativamente bajo.
3. Alta tolerancia a fallas: Kafka está diseñado para admitir estrategias de múltiples particiones y múltiples copias y tiene una fuerte tolerancia a fallas.
4. Fácil de expandir: al realizar la expansión del clúster, el clúster puede expandir fácilmente el tamaño del clúster sin tiempo de inactividad, y los nodos recién agregados se detectarán y agregarán automáticamente al clúster.
5. Múltiples modos de procesamiento: admite modos de procesamiento fuera de línea y en tiempo real para hacer frente a diversos entornos de producción.
Broker: Broker es un nodo en el clúster de Kafka. Varios brokers forman un clúster de Kafka.
Tema: El tema es un concepto lógico. Kafka agrega datos similares y la recopilación de cada tipo de datos es un tema. Los productores escriben el mismo tipo de datos sobre el mismo tema y los consumidores consumen el mismo tipo de datos del mismo tema.
Partición: La partición es un concepto físico y cada Tema puede contener múltiples particiones. Es una cola de mensajes ordenada y no modificable. Los mensajes en cada partición están ordenados. Cada partición corresponde a una carpeta, que se utiliza para almacenar los datos y el índice de la partición.
Replicación: Copia de una partición, cada copia almacenada en un broker diferente.
Productor: Productor de mensajes, es decir, el cliente Kafka que publica mensajes al Broker.
Consumidor: Consumidor de mensajes, es decir, el cliente que consume mensajes del Broker.
Grupo de consumidores: Kafka admite que varios consumidores formen un grupo, es decir, Consumer Group. Cada consumidor pertenece a un grupo de consumidores específico. Se puede enviar un mensaje a varios grupos de consumidores, pero solo un consumidor de cada grupo de consumidores puede consumir el mensaje.
Zookeeper: Zookeeper es responsable de almacenar los metadatos de Kafka y administrar el clúster de Kafka.
4 Grupo de consumidores El grupo de consumidores es un modo que acelera el consumo y la lectura. Varios consumidores en un grupo de consumidores pueden consumir datos en el mismo tema en paralelo.
Varios grupos de consumidores pueden consumir el mismo tema y estos grupos de consumidores son iguales, es decir, varios grupos de consumidores pueden consumir el mismo mensaje al mismo tiempo.
Varios consumidores del mismo grupo de consumidores compiten entre sí, es decir, la misma información solo puede ser consumida por un consumidor de un grupo de consumidores.
Una partición es una estructura física que en realidad se almacena en un directorio de carpetas que contiene múltiples archivos segmentados.
El archivo de segmento es la unidad de almacenamiento más pequeña en Kafka. Consiste en un archivo de datos (.log) que lleva el nombre del desplazamiento inicial del mensaje en la partición y un archivo de índice (.index, *.timeindex. ), como como se muestra en la figura.
Las primeras versiones de Kafka no tenían el concepto de réplicas, por lo que una vez que un nodo deja de funcionar, todos los datos almacenados en ese nodo pueden perderse. Para resolver este problema, se introdujo la replicación en actualizaciones de versiones posteriores. Concepto de copia.
Como se mencionó anteriormente, un tema puede tener múltiples particiones y cada partición puede tener múltiples copias. Este es un mecanismo de redundancia de datos en Kafka. Además, para garantizar la coherencia de los datos entre varias copias, Kafka seleccionará un Líder de partición entre varias copias de la misma partición. El Líder será responsable de leer y escribir. Las otras copias servirán como seguidores para sincronizar los mensajes del Líder. A través de dicha copia Mecanismo de sincronización para garantizar la coherencia de los datos en múltiples copias.
Del mismo modo, Kafka también tiene un mecanismo de elección para Broker. Cada corredor creará un proceso de Controlador Kafka al inicio. Seleccione un Líder del controlador Kafka de este Controlador Kafka y Guardián del zoológico. El líder del controlador Kafka es responsable de administrar el estado de la partición y la réplica del clúster de Kafka, evitar que las réplicas de la partición registren directamente observadores y compitan con Zookeeper, y cree Znodes temporales, lo que puede provocar que el clúster de Zookeeper se sobrecargue.
Las operaciones de comando de Kafka se basan en el tema. A través del ejemplo en el PPT, puede crear un tema con partición y replicación. Tenga en cuenta que al crear un tema, debe especificar el nombre del tema y el. nodo correspondiente y nodo del puerto de Kafka.