Tutorial Apache Kafka

Tutorial Apache Kafka
En esta lección, veremos cómo podemos usar Apache Kafka y cuál es su uso. Veremos a fondo varias terminologías involucradas y comenzaremos a trabajar con ellas.

Apache Kafka

Para una definición de alto nivel, presentemos una definición breve para Apache Kafka:

Apache Kafka es un registro distribuido, tolerante a fallas, escala horizontalmente, de confirmación.

Esas fueron algunas palabras de alto nivel sobre Apache Kafka. Entendamos los conceptos en detalle aquí.

  • Repartido: Kafka divide los datos que contiene en múltiples servidores y cada uno de estos servidores es capaz de manejar las solicitudes de los clientes para la proporción de datos que contiene
  • Tolerante a fallos: Kafka no tiene un solo punto de falla. En un sistema SPOF, como una base de datos MySQL, si el servidor que aloja la base de datos cae, la aplicación está atornillada. En un sistema que no tiene un SPOF y consiste en nodos multiuple, incluso si la mayor parte del sistema se reduce, sigue siendo el mismo para un usuario final.
  • Horizontalmente calificado: Este tipo de chasquido se refiere a agregar más máquinas al clúster existente. Esto significa que Apache Kafka es capaz de aceptar más nodos en su clúster y no proporcionar tiempo de inactividad para las actualizaciones requeridas al sistema. Mire la imagen a continuación para comprender el tipo de conceptos de Scailing:
  • Scoiling vertical y horizontal

  • Registro de compromiso: Un registro de confirmación es una estructura de datos como una lista vinculada. Agrega los mensajes que le llegan y siempre mantiene su pedido. Los datos no se pueden eliminar de este registro hasta que se alcance un tiempo especificado para esos datos.

Un tema en Apache Kafka es como una cola donde se almacenan los mensajes. Estos mensajes se almacenan durante una cantidad configurable de tiempo y el mensaje no se elimina hasta que se logre este momento, incluso si ha sido consumido por todos los consumidores conocidos.

Kafka es escalable, ya que son los consumidores quienes realmente almacenan lo que el mensaje fue obtenido por ellos por última vez como un valor de "desplazamiento". Veamos una figura para entender esto mejor:

TEMA PARTION y compensación del consumidor en Apache Kafka

Comenzando con Apache Kafka

Para comenzar a usar Apache Kafka, debe instalarse en la máquina. Para hacer esto, lea Instalar Apache Kafka en Ubuntu.

Asegúrese de tener una instalación de Kafka activa si desea probar ejemplos que presentamos más adelante en la lección.

Como funciona?

Con kafka, el Productor Aplicaciones Publicar mensajes que llega a un kafka Nodo y no directamente a un consumidor. De este nodo Kafka, los mensajes son consumidos por el Consumidor aplicaciones.

Productor y consumidor de Kafka


Como un solo tema puede obtener muchos datos de una vez, para mantener a Kafka horizontalmente escalable, cada tema se divide en particiones y cada partición puede vivir en cualquier máquina de nodo de un clúster. Intentemos presentarlo:

Particiones temáticas


Una vez más, Kafka Broker no mantiene un registro de qué consumidor ha consumido cuántos paquetes de datos. Es el responsabilidad de los consumidores de realizar un seguimiento de los datos que ha consumido.

Persistencia al disco

Kafka persiste los registros de mensajes que obtiene de los productores en el disco y no los mantiene en la memoria. Una pregunta que podría surgir es cómo esto hace que las cosas sean factibles y rápidas? Hubo varias razones detrás de esto, lo que lo convierte en una forma óptima de administrar los registros de mensajes:

  • Kafka sigue un protocolo de agrupación de los registros de mensajes. Los productores producen mensajes que persisten en el disco en grandes trozos y los consumidores consumen estos registros de mensajes en grandes fragmentos lineales.
  • La razón por la que las escrituras de disco son lineales es que esto hace que las lecturas sean rápidas debido a una disminución del tiempo de lectura de disco lineal altamente disminuido.
  • Las operaciones de disco lineal están optimizadas por Sistemas operativos también mediante el uso de técnicas de aturdir y leer por adelantado.
  • El sistema operativo moderno también usa el concepto de Pagecachamiento lo que significa que almacenan en caché algunos datos de disco en RAM gratuita disponible.
  • Como Kafka persiste los datos en un uniforme datos estándar en todo el flujo del productor hasta el consumidor, hace uso del optimización de copia cero proceso.

Distribución y replicación de datos

Como estudiamos anteriormente que un tema se divide en particiones, cada registro de mensajes se replica en múltiples nodos del clúster para mantener el orden y los datos de cada registro en caso de que uno de los nodos muera.

Aunque una partición se replica en múltiples nodos, todavía hay un líder de la partición nodo a través del cual las aplicaciones leen y escriben datos sobre el tema y el líder replica los datos en otros nodos, que se denominan seguidores de esa partición.

Si los datos del registro de mensajes son muy importantes para una aplicación, la garantía del registro del mensaje para ser segura en uno de los nodos se puede aumentar aumentando el aumento del factor de replicación del clúster.

¿Qué es Zookeeper??

Zookeeper es una tienda de valores de clave muy tolerante a fallas. Apache Kafka depende en gran medida de Zookeeper para almacenar la mecánica de clúster como el latido del corazón, distribuyendo actualizaciones/configuraciones, etc.).

Permite que los corredores de Kafka se suscriban a sí mismos y sepan cada vez que hay cambios con respecto a un líder de partición y distribución de nodos.

Las aplicaciones de productores y consumidores se comunican directamente con Zookeeper Aplicación para saber qué nodo es el líder de la partición para un tema para que puedan realizar lecturas y escrituras del líder de la partición.

Transmisión

Un procesador de transmisión es un componente principal en un clúster de Kafka que toma un flujo continuo de datos de registro de mensajes de los temas de entrada, procesa estos datos y crea un flujo de datos a temas de salida que pueden ser cualquier cosa, desde la basura hasta una base de datos.

Es completamente posible realizar un procesamiento simple directamente utilizando las API de productor/consumidor, aunque para un procesamiento complejo como combinar transmisiones, Kafka proporciona una biblioteca de API de transmisión integrada, pero tenga en cuenta que esta API está destinada a usarse dentro de nuestra propia base de código y no lo hace ' T Corre en un corredor. Funciona de manera similar a la API del consumidor y nos ayuda a escalar el trabajo de procesamiento de flujo a través de múltiples aplicaciones.

Cuándo usar Apache Kafka?

Mientras estudiamos en las secciones anteriores, Apache Kafka se puede usar para lidiar con una gran cantidad de registros de mensajes que pueden pertenecer a un número prácticamente infinito de temas en nuestros sistemas.

Apache Kafka es un candidato ideal cuando se trata de usar un servicio que puede permitirnos seguir la arquitectura de eventos en nuestras aplicaciones. Esto se debe a sus capacidades de persistencia de datos, arquitectura tolerante a fallas y altamente distribuida donde las aplicaciones críticas pueden confiar en su rendimiento.

La arquitectura escalable y distribuida de Kafka hace que la integración con microservicios sea muy fácil y permite que una aplicación se desacople con mucha lógica comercial.

Creando un nuevo tema

Podemos crear un tema de prueba pruebas En el servidor Apache Kafka con el siguiente comando:

Creatinig un tema

Topics de sudo kafka.SH-CREATE-ZOOKEEPER LOCALHOST: 2181-Factor de replicación 1
--Partitions 1 -topic tope

Esto es lo que recuperamos con este comando:

Crea un nuevo tema de Kafka


Se creará un tema de prueba que podemos confirmar con el comando mencionado:

Confirmación de creación de temas de Kafka

Escribir mensajes sobre un tema

Como estudiamos anteriormente, una de las API presentes en Apache Kafka es la API de productor. Usaremos esta API para crear un nuevo mensaje y publicar el tema que acabamos de crear:

Escribir mensaje al tema

sudo kafka-productor.SH-Broker-List Localhost: 9092-Prueba de tope

Veamos la salida para este comando:

Publicar mensaje a Kafka Topic


Una vez que presionemos la tecla, veremos un nuevo signo de flecha (>) que significa que podemos invertir datos ahora:

Escribiendo un mensaje


Simplemente escriba algo y presione para comenzar una nueva línea. Escribí 3 líneas de textos:

Lectura de mensajes del tema

Ahora que hemos publicado un mensaje sobre el tema de Kafka que creamos, este mensaje estará allí para un tiempo configurable. Podemos leerlo ahora usando el API de consumo:

Lectura de mensajes del tema

sudo kafka-consolse-consolutor.SH --zookeeper localhost: 2181 --
Prueba de temas: desde el beginismo

Esto es lo que recuperamos con este comando:

Comando para leer el mensaje de Kafka Topic


Podremos ver los mensajes o líneas que hemos escrito utilizando la API del productor como se muestra a continuación:

Si escribimos otro mensaje nuevo utilizando la API del productor, también se mostrará instantáneamente en el lado del consumidor:

Publicar y consumo al mismo tiempo

Conclusión

En esta lección, observamos cómo comenzamos a usar Apache Kafka, que es un excelente corredor de mensajes y también puede actuar como una unidad especial de persistencia de datos.