Apache Kafka

Partición de Apache Kafka

Partición de Apache Kafka
En esta lección, veremos qué entendemos por particiones en Apache Kafka y cómo afecta el rendimiento de un clúster de Kafka. El concepto de partición es fundamental para el clúster de Kafka, ya que utiliza la partición como una forma principal de escalar y aumentar el rendimiento.

Tenga en cuenta que esta no es una lección introductoria. Lea ¿Qué es Apache Kafka y cómo funciona antes de continuar con esta lección para obtener una visión más profunda?.

Temas en Kafka

Un tema en Kafka es algo donde se envía un mensaje. Las aplicaciones de consumo que están interesadas en ese tema extraen el mensaje dentro de ese tema y pueden hacer cualquier cosa con esos datos. Hasta un momento específico, cualquier número de aplicaciones de consumo puede extraer este mensaje cualquier número de veces.

Considere un tema como la página del blog de Ubuntu de LinuxHint. Las lecciones se guardan para la eternidad y cualquier número de lectores entusiastas pueden venir y leer estas lecciones tantas veces como deseen o pasar a la siguiente lección si lo desean. Estos lectores también pueden estar interesados ​​en otros temas de LinuxHint.

Particionamiento de temas

Kafka está diseñado para administrar aplicaciones pesadas y poner en cola una gran cantidad de mensajes que se guardan dentro de un tema. Para garantizar una alta tolerancia a fallos, cada tema se divide en varias particiones de tema y cada partición de tema se gestiona en un nodo independiente. Si uno de los nodos se cae, otro nodo puede actuar como líder del tema y puede servir temas a los consumidores interesados. Así es como se escriben los mismos datos en varias particiones de tema:

Particiones de tema


Ahora, la imagen de arriba muestra cómo se replican los mismos datos en múltiples particiones. Visualicemos cómo diferentes particiones pueden actuar como líder en diferentes nodos / particiones:

Partición de Kafka Broker

Cuando un cliente escribe algo en un tema en una posición para la que la partición en el intermediario 0 es el líder, estos datos se replican en los intermediarios / nodos para que el mensaje permanezca seguro:

Replicación entre particiones de agente

Más particiones, mayor rendimiento

Kafka hace uso de Paralelismo para proporcionar un rendimiento muy alto a las aplicaciones de productores y consumidores. De hecho, de la misma manera, también mantiene su condición de sistema altamente tolerante a fallas. Entendamos cómo se logra un alto rendimiento con el paralelismo.

Cuando una aplicación de productor escribe algún mensaje en una partición en el intermediario 0, Kafka abre varios subprocesos en paralelo para que el mensaje se pueda replicar en todos los intermediarios seleccionados al mismo tiempo. En el lado del consumidor, una aplicación de consumidor consume mensajes de una sola partición a través de un hilo. Cuanto mayor sea el número de particiones, más subprocesos de consumidores se pueden abrir para que todos ellos también puedan funcionar en paralelo. Esto significa que cuanto mayor sea el número de particiones en un clúster, más paralelismo se puede explotar, creando un sistema de muy alto rendimiento.

Más particiones necesitan más controladores de archivos

Solo para que estudie anteriormente cómo podemos aumentar el rendimiento de un sistema Kafka simplemente aumentando el número de particiones. Pero debemos tener cuidado con el límite hacia el que nos dirigimos.

Cada partición de tema en Kafka se asigna a un directorio en el sistema de archivos del agente del servidor donde se está ejecutando. Dentro de ese directorio de registro, habrá dos archivos: uno para el índice y otro para los datos reales por segmento de registro. Actualmente, en Kafka, cada corredor abre un identificador de archivo tanto para el índice como para el archivo de datos de cada segmento de registro. Esto significa que si tiene 10,000 particiones en un solo agente, esto dará como resultado 20,000 controladores de archivos ejecutándose en paralelo. Aunque, esto se trata solo de la configuración del Broker. Si el sistema en el que se implementa el Broker tiene una configuración alta, esto difícilmente será un problema.

Riesgo con gran cantidad de particiones

Como vimos en las imágenes de arriba, Kafka hace uso de la técnica de replicación intra-clúster para replicar un mensaje de un líder a las particiones Replica que se encuentran en otros Brokers. Tanto las aplicaciones productoras como las consumidoras leen y escriben en una partición que actualmente es la líder de esa partición. Cuando un corredor falla, el líder de ese corredor no estará disponible. Los metadatos sobre quién es el líder se mantienen en Zookeeper. Según estos metadatos, Kafka asignará automáticamente el liderazgo de la partición a otra partición.

Cuando un Broker se apaga con un comando limpio, el nodo del controlador del clúster de Kafka moverá los líderes del broker que se cierra en serie i.mi. uno a la vez. Si consideramos que mover un solo líder toma 5 milisegundos, la indisponibilidad de los líderes no molestará a los consumidores ya que la indisponibilidad es por un período de tiempo muy corto. Pero si consideramos cuando el Broker es asesinado de una manera sucia y este Broker contiene 5000 particiones y de estas, 2000 eran los líderes de partición, la asignación de nuevos líderes para todas estas particiones tomará 10 segundos, lo cual es muy alto cuando se trata de aplicaciones bajo demanda.

Conclusión

Si lo consideramos como un pensador de alto nivel, más particiones en un clúster de Kafka conduce a un mayor rendimiento del sistema. Teniendo en cuenta esta eficiencia, también hay que considerar la configuración del clúster de Kafka que debemos mantener, la memoria que debemos asignar a ese clúster y cómo podemos administrar la disponibilidad y la latencia si algo sale mal.

Lea más publicaciones basadas en Ubuntu aquí y mucho más sobre Apache kafka también.

Cómo mostrar la superposición de OSD en aplicaciones y juegos de Linux en pantalla completa
Jugar juegos en pantalla completa o usar aplicaciones en modo de pantalla completa sin distracciones puede aislarlo de la información relevante del si...
Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...