Comenzando con Apache Kafka

Publicado el

(13 de junio de 2019)

¿Qué es Apache Kafka?

Apache Kafka es una plataforma distribuida de mensajería de solo anexión basada en publicación-suscripción originalmente desarrollado por LinkedIn y posteriormente donado a Apache Foundation .

(* La imagen es para embellecimiento)

Casos de uso

  • Mensajería
  • Agregación de registros
  • Procesamiento de transmisión
  • Registro de confirmación
  • Origen de eventos, etc.

¿Cómo funciona?

Kafka trabaja en el modelo pub-sub. Por lo tanto, habrá un editor y un grupo de consumidores / consumidores.

El productor publicará datos sobre un tema específico y el consumidor suscrito al tema consumirá datos. Varios productores pueden publicar sobre el mismo tema, pero solo un consumidor puede consumir datos de un tema a la vez.

Ahora puede preguntar si solo uno el consumidor puede consumir de un tema a la vez y si hay miles de eventos por venir, ¿cómo los escalamos?

De acuerdo. En ese caso, podemos dividir el tema en particiones para lograr escalabilidad.

Cuando hacemos la partición del tema, cada mensaje en la partición tiene un offset\_id / message\_id. En la imagen de la izquierda hemos hecho 3 particiones y cada productor enviará un evento a una partición específica. Y el consumidor leerá desde una partición específica. Ahora, si tenemos 300 eventos / seg siendo enviados, se dividirá en 3, por lo que cada partición tendrá 100 mensajes / seg. De esta forma, podemos lograr el equilibrio de carga. Cuando hacemos la partición, Kafka solo garantiza el orden de los mensajes a nivel de partición . Para lograr el orden con la partición tenemos que usar la clave .

Si obtenemos un aumento de eventos, tenemos que hacer más particiones y agregar más consumidores para escalar y lograr el equilibrio de carga .

Una vez que recibamos el evento, debemos enviar el registro a Kafka, para que Kafka entienda que el evento ha sido procesado y Kafka no lo enviará de nuevo. Si en medio del procesamiento nuestra aplicación falla, Kafka enviará ese evento nuevamente para procesar.

Factor de replicación:

El factor de replicación es cómo se replicarán los datos en Kafka con diferentes brokers de Kafka. Digamos que hemos elegido el factor de replicación N = 3, los datos se replicarán en 2 corredores más. Por lo tanto, Kafka seguirá funcionando si el corredor N-1 deja de funcionar, porque hay al menos un corredor activo con los datos para que siga funcionando.

¿Qué es Apache Zookeeper?

Apache Zookeeper es un servicio centralizado para sistemas distribuidos a un almacén de clave-valor jerárquico, que se utiliza para proporcionar un servicio de configuración distribuida, sincronización servicio y registro de nombres para grandes sistemas distribuidos. Apache Kafka no funciona sin Zookeeper. Gestión del clúster de Kafka, si un bróker sube o baja, si se crea un nuevo tema … Este tipo de datos se sincroniza con otro bróker de Kafka a través de Zookeeper.

Spinup Kafka>

docker-compose up

Consumidor (Golang)>

Productor (Kotlin)>

Resultado>

Waiting for messages...Topic : users.notification
Partition : 0
Offset : 1
Value : hello

Recursos:

1. github.com/confluentinc/confluent-kafka-go
2. compile group: "io.opentracing.contrib", name: "opentracing-kafka-client", version: "0.1.2"

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *