Apache Kafka

Tutorial de Apache Kafka

Tutorial de Apache Kafka
En esta lección, veremos cómo podemos usar Apache Kafka y cuál es su uso. Examinaremos detenidamente varias terminologías relacionadas con él y comenzaremos a trabajar con ellas también.

Apache Kafka

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

Apache Kafka es un registro de confirmación distribuido, tolerante a fallos y escalable horizontalmente.

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

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

Kafka es escalable, ya que son los consumidores quienes realmente almacenan el último mensaje que obtuvieron como un valor de "compensación". Veamos una figura para entender esto mejor:

Partición de tema y compensación de consumidor en Apache Kafka

Introducción a Apache Kafka

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

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

Como funciona?

Con Kafka, el Productor las aplicaciones publican mensajes que llega a un Kafka Nodo y no directamente a un consumidor. Desde este nodo de Kafka, los mensajes son consumidos por el Consumidor aplicaciones.

Productor y consumidor de Kafka


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

Particiones de tema


Nuevamente, Kafka Broker no lleva 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 en disco

Kafka conserva los registros de mensajes que recibe de los productores en el disco y no los guarda 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:

Distribución y replicación de datos

Como estudiamos anteriormente, un tema se divide en particiones, cada registro de mensaje se replica en varios 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 varios nodos, todavía hay una líder de partición nodo a través del cual las aplicaciones leen y escriben datos sobre el tema y el líder replica datos en otros nodos, que se denominan como seguidores de esa partición.

Si los datos del registro de mensajes son muy importantes para una aplicación, la garantía de que el registro de mensajes está seguro en uno de los nodos se puede aumentar aumentando la factor de replicación del Cluster.

Que es Zookeeper?

Zookeeper es un almacén de valor-clave distribuido y altamente tolerante a fallos. Apache Kafka depende en gran medida de Zookeeper para almacenar la mecánica del clúster como el latido del corazón, distribuir actualizaciones / configuraciones, etc.).

Permite a los corredores de Kafka suscribirse a sí mismos y saber cuándo se ha producido algún cambio con respecto al líder de una partición y la distribución de los nodos.

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

Transmisión

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

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

Cuándo usar Apache Kafka?

Como estudiamos en las secciones anteriores, Apache Kafka se puede utilizar para tratar una gran cantidad de registros de mensajes que pueden pertenecer a una cantidad prácticamente infinita de temas en nuestros sistemas.

Apache Kafka es un candidato ideal cuando se trata de usar un servicio que puede permitirnos seguir la arquitectura impulsada por 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 desempeño.

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 empresarial.

Crear un tema nuevo

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

Creando un tema

sudo kafka-temas.sh --create --zookeeper localhost: 2181 - factor de replicación 1
--particiones 1 - prueba de tema

Esto es lo que obtenemos con este comando:

Crear nuevo tema de Kafka


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

Confirmación de creación de tema 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 publicarlo en el tema que acabamos de crear:

Escribir mensaje al tema

sudo kafka-consola-productor.sh --broker-list localhost: 9092 --prueba de tema

Veamos el resultado de este comando:

Publicar mensaje en Kafka Topic


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

Escribir un mensaje


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

Leer mensajes del tema

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

Leer mensajes del tema

sudo kafka-consola-consumidor.sh --zookeeper localhost: 2181 --
prueba de tema: desde el principio

Esto es lo que obtenemos con este comando:

Comando para leer el mensaje del tema de Kafka


Podremos ver los mensajes o líneas que hemos escrito usando la API de Producer como se muestra a continuación:

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

Publicar y consumir al mismo tiempo

Conclusión

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

Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider es la duodécima incorporación a la serie Tomb Raider, una franquicia de juegos de acción y aventuras creada por Eidos Montre...
Cómo impulsar FPS en Linux?
FPS significa Cuadros por segundo. La tarea de FPS es medir la velocidad de fotogramas en reproducciones de video o actuaciones de juegos. En palabras...
Los mejores juegos de Oculus App Lab
Si es propietario de un visor Oculus, debe estar informado sobre la descarga lateral. Sideloading es el proceso de instalación de contenido que no es ...