6 Apache
10 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Qué es Apache Kafka?

  • Un bus de datos distribuido, en el que varias aplicaciones pueden leer y escribir. (correct)
  • Un sistema de mensajería que utiliza Spark para funcionar.
  • Un sistema de _data warehousing_.
  • Un sistema de colas basado en MapReduce.

Cuando usamos Kafka...

  • Cada aplicación puede leer solo un tipo de mensajes.
  • Solo las aplicaciones registradas en Spark pueden acceder al bus.
  • Cada aplicación elige el tipo de mensajes que desea leer. (correct)
  • Todas las aplicaciones reciben todos los mensajes.

¿Cuál de estas funciones es típica de Kafka?

  • Almacenar información accesible para distintas aplicaciones, tal como lo hace una base de datos.
  • Ninguna de las opciones anteriores es correcta.
  • Realizar procesados de flujos de información.
  • Transmitir mensajes generados por una aplicación a otras que los utilizan. (correct)

Un topic de Kafka...

<p>Es un conjunto de mensajes que comparten la misma estructura. (B)</p> Signup and view all the answers

Si en un grupo de consumidores hay más consumidores suscritos a un topic que particiones tiene dicho topic:

<p>Uno o más consumidores quedarán ociosos, sin poder consumir mensajes. (A)</p> Signup and view all the answers

Cuando un proceso productor de Kafka utiliza envío asíncrono:

<p>Prosigue su ejecución y Kafka invocará el método que el productor indicó cuando tenga disponible la respuesta. (D)</p> Signup and view all the answers

¿Qué implica que un bróker contenga la partición líder de un topic?

<p>Que será quien reciba y procese las peticiones de lectura y escritura a esa partición. (B)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones sobre Kafka es correcta?

<p>Un mensaje en Kafka se elimina cuando se cumple el tiempo o tamaño configurados. (A)</p> Signup and view all the answers

El bróker encargado de supervisar qué brókeres se unen y cuáles dejan el clúster es:

<p>El bróker controlador. (B)</p> Signup and view all the answers

Un clúster Kafka está compuesto:

<p>Por uno o varios brókeres, y siempre incluye Zookeeper para gestionar metadatos. (A)</p> Signup and view all the answers

Flashcards

Publicación/Suscripción (Pub/Sub)

Paradigma de mensajería donde los emisores clasifican los mensajes por tema y los receptores se suscriben a los temas de su interés.

Apache Kafka

Un bus de datos distribuido y replicado que sigue el paradigma de publicación/suscripción.

Bus de datos (en Kafka)

Un canal donde las aplicaciones escriben y leen mensajes en un cierto orden.

Mensaje (en Kafka)

La unidad de información en Kafka, equivalente a un registro en una base de datos.

Signup and view all the flashcards

Distribuido y replicado (en Kafka)

Los mensajes se replican automáticamente en varias máquinas para robustez frente a fallos y mayor rendimiento.

Signup and view all the flashcards

Suscripción (en Kafka)

Las aplicaciones se suscriben a un topic para recibir solo los mensajes publicados en ese topic.

Signup and view all the flashcards

Topic (en Kafka)

Agrupación de mensajes con la misma estructura e interpretación.

Signup and view all the flashcards

Particiones (en Kafka)

Divisiones físicas de un topic que permiten la distribución y replicación de datos.

Signup and view all the flashcards

ID de Bróker

Identificador único para cada bróker en un clúster Kafka.

Signup and view all the flashcards

Bróker Controlador (Controller)

Primer bróker registrado en Zookeeper, responsable de seleccionar las particiones líderes.

Signup and view all the flashcards

Política de Retención

Determinar cuándo eliminar mensajes de un topic, ya sea por tiempo o por tamaño.

Signup and view all the flashcards

Replicación de Particiones

Garantiza la disponibilidad y durabilidad de los mensajes publicados.

Signup and view all the flashcards

Réplica Líder

Única réplica designada para recibir y enviar todos los mensajes de una partición.

Signup and view all the flashcards

Réplicas Followers

Réplicas que replican los mensajes de la réplica líder para mantenerse actualizadas.

Signup and view all the flashcards

Réplicas Sincronizadas (In-Sync)

Réplicas followers que están sincronizadas con la réplica líder.

Signup and view all the flashcards

Petición de Escritura/Producción (Produce Request)

Petición enviada a un bróker para escribir o producir mensajes.

Signup and view all the flashcards

Petición de Lectura/Consumición (Fetch Request)

Petición enviada a un bróker para consumir o leer mensajes.

Signup and view all the flashcards

acks (en Kafka)

Parámetro que indica cuántas réplicas deben recibir un mensaje para considerarlo escrito con éxito.

Signup and view all the flashcards

Purgatorio de Mensajes

Buffer donde se almacenan mensajes provisionalmente hasta que las réplicas followers confirmen su escritura.

Signup and view all the flashcards

Zero-Copy

Mecanismo que envía datos directamente desde el disco, sin pasar por un buffer en memoria principal.

Signup and view all the flashcards

KafkaProducer

Clase Java que ofrece la API para escribir mensajes en topics de Kafka.

Signup and view all the flashcards

Serializer

Objeto que determina cómo convertir el mensaje y la clave en un array de bytes.

Signup and view all the flashcards

ProducerRecord

Objeto que representa el mensaje que se va a enviar, incluyendo el topic y el contenido.

Signup and view all the flashcards

Envío Fire-and-Forget

Enviar un mensaje sin esperar respuesta.

Signup and view all the flashcards

Envío Síncrono

El proceso se bloquea hasta recibir la confirmación del envío.

Signup and view all the flashcards

Envío Asíncrono

El usuario incluye un método que se invoca automáticamente al recibir la respuesta.

Signup and view all the flashcards

Formato Avro

Formato común para la serialización de datos en Kafka, donde el esquema se almacena por separado.

Signup and view all the flashcards

Consumidor (en Kafka)

Aplicación que lee mensajes de un topic concreto de Kafka.

Signup and view all the flashcards

Grupos de Consumidores

Mecanismo para escalar el consumo de mensajes de un topic, creando varios procesos consumidores en paralelo.

Signup and view all the flashcards

KafkaConsumer

Objeto KafkaConsumer para implementar los consumidores.

Signup and view all the flashcards

Study Notes

Apache Kafka

  • Kafka es una tecnología de software libre auspiciada por la Apache Software Foundation (ASF).
  • Se usa para procesar flujos de datos en tiempo real (streaming) y es fundamental en muchas empresas.

Paradigma de mensajería publicación/suscripción

  • Los sistemas constan de subsistemas que necesitan comunicarse.
  • La mensajería requiere que la información llegue a los sistemas que la analizarán.
  • El patrón publicación/suscripción (pub/sub) es común en plataformas.
  • Los emisores (publicadores o publishers) envían datos (mensajes) sin dirigirlos a un receptor específico.
  • Los emisores clasifican los mensajes bajo una clase (topic) y los receptores (suscribers) se suscriben a la clase que les interesa.
  • El bus de mensajes sirve para publicar información que otros sistemas puedan consultar.
  • Permite escalar según aumente el volumen de información producida y consumida.

Introducción a Apache Kafka

  • Es un sistema de mensajería que sigue el patrón publicación/suscripción (pub/sub).
  • Proporciona un bus de datos común donde las aplicaciones escriben mensajes y otras los reciben según su relevancia.
  • También se denomina cola de mensajes, es distribuido, replicado y basado en el paradigma publicación/suscripción.
  • Las aplicaciones escriben (publican) en el bus, como un cable de datos inmenso.
  • Mensaje: Unidad de información, equivalente a un registro de base de datos, simplemente un array de bytes con una clave también en bytes.
  • Por eficiencia, los mensajes se escriben en lotes, y cuanto mayores son, más se gestionan por unidad de tiempo.
  • Los mensajes se reciben y escriben en el disco local de máquinas interconectadas (clúster), y se replican automáticamente para robustez y escalabilidad.
  • Las aplicaciones se suscriben a un topic concreto, recibiendo solo los mensajes publicados en él.
  • Un topic es como una tabla o directorio que agrupa mensajes estructurados de forma similar.
  • Dentro de cada topic se definen particiones que indican cómo se distribuyen físicamente los datos, similares a los bloques de HDFS.
  • El particionamiento facilita la escalabilidad y replicación de los datos.
  • Si la frecuencia de escrituras en los topics aumenta, se pueden añadir más máquinas (brókeres) y particiones.
  • La organización física puede indicarse (en armarios o racks) para decidir dónde ubicar las réplicas de cada partición.

Casos de uso típicos de Kafka

  • Tracking de actividad web: Propósito original en LinkedIn, donde la interacción del usuario con la web se envía a Kafka y es consumida por sistemas que monitorizan, elaboran informes, entrenan modelos de machine learning o personalizan la página.
  • Mensajería: Las aplicaciones envían mensajes que luego se formatean para enviar por email, informes o alertas vía SMS.
  • Métricas y logs: Aplicaciones envían logs a Kafka para informes, análisis batch, monitorización o alertas complejas.
  • Historial de cambios de bases de datos: Para replicar cambios o mezclar datos desde bases de datos distintas.
  • Procesamiento en tiempo real de flujos de datos: Operar con datos según llegan para agregaciones, usando frameworks como Spark o Flink.
  • Una empresa puede usar Kafka con aplicaciones escribiendo en él (productores) y otras leyendo (topics relevantes, consumidores). Los consumidores pueden ser también productores.

Conceptos fundamentales de Kafka

  • Nació en 2010 en LinkedIn para un sistema de mensajería con múltiples consumidores en tiempo real, alta disponibilidad, rendimiento y escalabilidad.
  • Se donó en 2011 a la Apache Software Foundation y se hizo proyecto top en 2012.
  • En 2014 exempleados de LinkedIn fundaron Confluent.
  • Actualmente lo usan PayPal, Walmart, LinkedIn, Cisco, Netflix, Spotify, Uber, eBay y Amazon entre otros.

Clúster de Kafka

  • Usar un clúster con un único bróker basta para pruebas.
  • Tener varios brókeres permite escalar la carga entre ellos y replicar información para evitar pérdidas por fallos o mantenimiento.
  • Kafka útiliza Zookeeper para metadatos del clúster, como la lista de brókeres y la información de los consumidores en versiones antiguas.
  • Cada bróker tiene un identificador único y se registra en Zookeeper al iniciarse.
  • El primer bróker en registrarse en Zookeeper es el controlador del clúster, encargado de seleccionar las particiones líderes cuando los brókeres se unen o se caen.
  • Sí el controlador pierde la conexión, otros nodos intentarán ser controladores y Zookeeper mediará para asignar el papel al primer bróker que lo solicite.

Topics en Kafka y número de particiones

  • Los topics se crean desde la consola, con opciones de configuración.
  • Una de ellas es el número de particiones (especificado al crear el topic o por defecto en la configuración del servidor en 1).
  • Es importante tener en cuenta que el número de particiones de un topic solo puede incrementarse, nunca disminuir.
  • El número de particiones es responsable del balanceo de la carga en el clúster.
  • Se recomienda tener un número de particiones igual o múltiplo del número de brókeres.
  • Se tienen en cuenta la capacidad de envío/recepción de datos de los productores/consumidores respecto a la capacidad esperada del topic.
  • La política de retención determina cuándo eliminar mensajes de un topic.
  • Se puede configurar por tiempo o tamaño (por partición).

Replicación de particiones, líder de partición y sincronización de réplicas

  • Tener un clúster con varios brókeres permite replicar particiones para disponibilidad y durabilidad de los mensajes.
  • Los mensajes en Kafka se organizan en topics, divididos en particiones replicadas en varios brókeres para redundancia.
  • La cantidad de réplicas (análogo a HDFS) se configura mediante un parámetro, con 3 como valor predeterminado. Existen dos tipos de réplicas:
    • Réplica líder: Cada partición tiene una única réplica designada como líder que recibe y envía mensajes.
    • Réplica follower: Las réplicas que no son líderes replican los mensajes de la réplica líder.
  • Los brókeres con réplicas followers solicitan al bróker con la réplica líder los últimos mensajes para sincronizarse.
  • El líder sabe qué réplicas followers están sincronizadas (in-sync) y cuáles no (out-of-sync).
  • Es importante cómo repartir las réplicas entre los brókeres.
  • Los objetivos son:
    • Repartir las réplicas de forma homogénea
    • Asegurar que cada partición tenga una réplica en un bróker distinto
    • Asignar réplicas de cada partición en racks distintos si se conocen.

Procesamiento de las peticiones de escritura

  • La función de un bróker es procesar peticiones de productores, suscriptores, y el controlador.
  • Los clientes (productores, consumidores, brókeres) inician las conexiones, envían peticiones y el bróker las procesa y responde en el orden recibido.
  • Hay dos peticiones habituales: escritura o producción de mensajes (produce request) y lectura de mensajes (fetch requests), al bróker con la réplica líder.
  • Si un bróker con réplica follower recibe peticiones, devuelve un error.
  • El cliente debe saber a qué bróker enviar la petición, usando una petición de metadatos para obtener la información de la réplica líder.
  • Cada productor configura el número de réplicas que deben recibir un mensaje para considerarlo escrito con éxito, configurado con el parámetro nacks:
    • nacks=0: No se espera a que el líder lo haya escrito.
    • nacks=1: Basta con que el líder confirme que lo ha recibido y escrito.
    • nacks=all: Todas las réplicas sincronizadas deben recibirlo.
  • El bróker que recibe el mensaje lo escribe en disco inmediatamente y además escribe el mensaje provisionalmente en un buffer llamado purgatorio de mensajes.
  • Si nacks es 0 o 1 emite un mensaje de respuesta al productor; si no el mensaje en purgatorio permanece hasta recibir las peticiones de las réplicas que desean mantenerse actualizadas.
  • Sólo cuando el mensaje ha sido escrito en todas las réplicas seguidoras, entonces el lider devuelve la respuesta al productor.

Procesamiento de las peticiones de lectura

  • Cuando un consumidor desea leer mensajes de un topic, envía una petición al bróker responsable, que tiene la réplica líder de esa partición. La petición contiene el topic, la partición y el offset del mensaje, así como la configuración relativa al tamaño de mensajes:
    • el tamaño máximo de mensajes a leer puede limitarse.
    • opcionalmente, podemos indicar el tamaño mínimo de datos a recibir; en este caso el bróker no le envía ningún mensaje hasta no completar el mínimo, o hasta cumplido el tiempo de espera, en este caso enviará los mensajes que tenga.
  • Si el offset existe ya, el bróker con la réplica del líder partición envía los mensajes directamente desde el disco.
  • El acceso es rápido gracias a la estructura del fichero y a la existencia de índices.
  • Kafka Utiliza Zero Copy para enviar los datos directamente desde el disco, contrariamente a los sistemas que utilizan caches locales.
  • Un bróker (líder de una partición) solo devuelve mensajes que han sido escritos en las réplicas sincronizadas (in-sync-replicas) para evitar comportamientos inconsistentes debido a una réplica follower.
  • Para que un mensaje sea leido, tiene que estar disponible en todas las réplicas in-sync, independientemente del valor del nacks configurado.

Implementación de productores Kafka

  • Un programa Java usando la API Java de Kafka escribe mensajes en un topic.
  • Los aspectos a considerar en la configuración son:
    • Si se puede tolerar la pérdida, duplicación o si debe ser inmediato el envío de datos críticos.
    • si hay restricciones en el tiempo real de propagación de mensajes o en la cantidad de mensajes por segundo que debe tolerar el bus
  • La API ofrece la clase KafkaProducer, con un método send.
  • Se deben configurar propiedades al crear el objeto KafkaProducer, especialmente un objeto Serializer para convertir el mensaje y la clave (incluyendo una lista de direcciones de brókeres a los que conectar).
  • Se debe crear un objeto ProducerRecord *que representa al mensaje a enviar (al menos, topic y contenido).
  • Después la clave y la partición, a la que va destinado, si lo queremos especificar.

Implementación de consumidores Kafka

  • Un consumidor es una aplicación que, mediante el uso de la API de Kafka, es capaz de leer mensajes de un topic cuyo interés este reflejado los grupos de consumidores.
  • Generalmente, un proceso consumidor forma parte de un grupo consumidor en concreto.
  • Las particiones en el topic, son asignadas por Kafka a sus miembros
  • Los grupos consisten en un proceso que en sí mismo forma parte de un grupo por si solo.

Es habitual que un cliente lea mensajes de Kafka y realice algún procesamiento, tanto de información nueva proveniente de topics, tanto la procedente de un consumidor ya existente.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Description

Este cuestionario explora los fundamentos de Apache Kafka, incluyendo su uso, funciones típicas y la estructura de topics. Evalúa la comprensión de los roles de productores, brokers y consumidores en un clúster de Kafka.

More Like This

When NOT to Use Apache Kafka
12 questions

When NOT to Use Apache Kafka

BestPerformingSphinx avatar
BestPerformingSphinx
Kafka Fundamentals and Architecture
16 questions
Apache Kafka et systèmes de messagerie
11 questions
Use Quizgecko on...
Browser
Browser