Montar un entorno con Zookeeper, Kafka y Yahoo Kafka Manager utilizando Docker

Docker Logo

Construir la imagen de “kafka manager docker” para kafka 0.9

Los pasos son los siguiente:

Clonar el repositorio

git clone https://github.com/DockerKafka/kafka-manager-docker.git

Crear un nuevo branch a partir del tag 1.2.7

git checkout -b 1.2.7.mylocal 1.2.7

Modificar el Dockerfile para utilizar los fuentes de Yahoo Kafka Manager con soporte a Kafka 0.9

Editamos el fichero Dockerfile y modificamos

KM_VERSION=1.2.7

por

KM_VERSION=1.3.1.6

Construimos la imagen

docker build -t my-kafka-manager .

Levantar Zookeeper, Kafka y Kafka Manager

docker run -d --name kafkadocker_zookeeper_1  dockerkafka/zookeeper
docker run -d --name kafkadocker_kafka_1 --link kafkadocker_zookeeper_1:zookeeper dockerkafka/kafka
docker run -it --rm --link kafkadocker_zookeeper_1:zookeeper --link kafkadocker_kafka_1:kafka -p 9000:9000 -e ZK_HOSTS=zookeeper:2181 my-kafka-manager

Acceder a Kafka Manager y dar de alta los cluster que queremos gestionar

Accedemos a la interface web en http://host:9000 y damos de alta el cluster que queremos gestionar.

Para ello debemos saber el host y puerto del Zookeeper que estamso utilizando. Si nos hemos fijado en los pasos anteriores el zookeeper es:

Host:puerto = zookeeper:2181

Yahoo Kafka Manager

Urls

El mecanismo de heartbeat en kafka 0.9

Kafka

Es el mecanismo seguido por Apache Kafka 0.9 para determinar si un consumidor no se encuentra disponible, bien por un fallo en la aplicación, por un fallo de red o por un fallo de la máquina donde se está ejecutnado.

Recordemos que un grupo de consumidores comienzan a consumir mensajes de los topics en los que se ha subscrito. Cada topic suele estar formado por 1 log de varias particiones cada uno, y el broker que hace de coordinador del grupo, le asigna a cada consumidor una sola partición de un topic.

Por ejemplo si 3 consumidores se subscriben a un topic de 5 particiones, cada consumidor estará consumiendo mensaje de 1 sola partición. Nunca podremos tener más de un consumidor consumiendo más de 1 partición de un mismo topic.

En el ejemplo podríamos tener:

Sigue leyendo

Implementación de un consumidor de Kafka basado en la versión 0.9

Kafka

En Kafka 0.9 se ha rediseñado la implementación de los consumidores. Ahora se catacterizan por

  • poder implementar consumidores simples y más complejos
  • reimplementados en Java, evitando la dependencia con Scala y Zookeeper
  • mejora en la seguridad, soportanto SSL y Sasl/Kerberos
  • nuevos protocolos para mejorar la tolerancia a fallos de un grupo de consumidores. Esto facilita también la implementación de clientes en otros lenguajes de programación

Conceptos básicos de Kafka

Topic

Un topic se encuentra dividido en un conjunto de logs llamados particiones. Sobre estos topic se escriben y se consumen los mensajes.

Productor

Un productor publica o escribe mensajes al final de estos logs

Broker

Un broker es un nodo del cluster de kafka.

Consumidor

Un consumidor consume o lee los mensajes de estos logs según necesite, comentanzo normalmente desde el comienzo de ellos o desde el último procesado con éxito

Grupo de consumidores o consumer group

Un consumer group es un grupo de consumidores identificados por un identificador único y que se encuentran consumiendo mensajes de un topic. Usando un grupo de consumidores es el mecanismo de escalado de lectura de topics en Kafka, ya que cada consumidor se encuentra consumiendo mensajes de una de las particiones del topic.

Sigue leyendo

Apache Kafka, el sistema de mensajería distribuido de Linkedin

Kafka

Es un sistema de mensajería basado en el modelo publicador/subcriptor, persistente, escalable, replicado, tolerante a fallos, capaz de atender cientos de megas por segundo de lecturas y escrituras provenientes de miles de clientes.

Es un proyecto opensource creado inicialmente por Linkedin para solventar las limitaciones de los sistemas de mensajería como Jms.

Sigue leyendo