Introducció

En aquest tema, explorarem dos conceptes fonamentals de Kafka: els temes i les particions. Aquests conceptes són essencials per comprendre com Kafka organitza i distribueix les dades.

Què és un Tema?

Un tema en Kafka és una categoria o flux de dades a la qual es poden enviar missatges. Els temes són l'equivalent a les cues en altres sistemes de missatgeria, però amb algunes diferències clau.

Característiques dels Temes:

  • Nom: Cada tema té un nom únic dins del clúster de Kafka.
  • Persistència: Els missatges dins d'un tema es guarden durant un període de temps configurat.
  • Lectura Múltiple: Diversos consumidors poden llegir del mateix tema de manera independent.

Exemples de Temes:

  • logs: Un tema per a missatges de registre.
  • transactions: Un tema per a missatges de transaccions financeres.
  • user-signups: Un tema per a missatges de nous registres d'usuaris.

Què és una Partició?

Una partició és una subdivisió d'un tema. Cada tema es pot dividir en múltiples particions, i cada partició és una seqüència ordenada i immutable de missatges que es distribueixen entre els brokers de Kafka.

Característiques de les Particions:

  • Ordre: Els missatges dins d'una partició es mantenen en ordre.
  • Escalabilitat: Les particions permeten escalar el sistema distribuint la càrrega entre múltiples brokers.
  • Paral·lelisme: Els consumidors poden llegir de diferents particions en paral·lel, millorant el rendiment.

Exemples de Particions:

  • Un tema logs pot tenir particions com logs-0, logs-1, logs-2, etc.
  • Un tema transactions pot tenir particions com transactions-0, transactions-1, transactions-2, etc.

Relació entre Temes i Particions

Cada tema pot tenir una o més particions. La relació entre temes i particions és crucial per a la distribució i l'escalabilitat de Kafka.

Taula de Relació:

Tema Particions
logs logs-0, logs-1, logs-2
transactions transactions-0, transactions-1, transactions-2
user-signups user-signups-0, user-signups-1

Exemple Pràctic

Creació d'un Tema amb Particions

Per crear un tema amb particions, utilitzarem la línia de comandes de Kafka.

# Crear un tema anomenat 'logs' amb 3 particions
kafka-topics.sh --create --topic logs --partitions 3 --replication-factor 1 --bootstrap-server localhost:9092

Producció de Missatges a un Tema

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')

# Enviar missatges al tema 'logs'
producer.send('logs', b'Primer missatge')
producer.send('logs', b'Segon missatge')
producer.send('logs', b'Tercer missatge')

producer.flush()

Consum de Missatges d'un Tema

from kafka import KafkaConsumer

consumer = KafkaConsumer('logs', bootstrap_servers='localhost:9092')

for message in consumer:
    print(f"Rebut missatge: {message.value.decode('utf-8')}")

Exercicis Pràctics

Exercici 1: Crear un Tema amb 4 Particions

  1. Utilitza la línia de comandes de Kafka per crear un tema anomenat user-activity amb 4 particions.
  2. Envia 4 missatges diferents al tema user-activity.
  3. Consumeix els missatges del tema user-activity i imprimeix-los a la consola.

Solució de l'Exercici 1

# Crear el tema 'user-activity' amb 4 particions
kafka-topics.sh --create --topic user-activity --partitions 4 --replication-factor 1 --bootstrap-server localhost:9092
# Producció de missatges
producer.send('user-activity', b'Activitat 1')
producer.send('user-activity', b'Activitat 2')
producer.send('user-activity', b'Activitat 3')
producer.send('user-activity', b'Activitat 4')

producer.flush()
# Consum de missatges
consumer = KafkaConsumer('user-activity', bootstrap_servers='localhost:9092')

for message in consumer:
    print(f"Rebut missatge: {message.value.decode('utf-8')}")

Conclusió

En aquest tema, hem après què són els temes i les particions en Kafka, com es relacionen i com es poden utilitzar per organitzar i distribuir dades de manera eficient. Aquests conceptes són fonamentals per treballar amb Kafka i construir sistemes de missatgeria escalables i robustos. En el proper tema, explorarem els brokers i els clústers de Kafka.

© Copyright 2024. Tots els drets reservats