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 comlogs-0
,logs-1
,logs-2
, etc. - Un tema
transactions
pot tenir particions comtransactions-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
- Utilitza la línia de comandes de Kafka per crear un tema anomenat
user-activity
amb 4 particions. - Envia 4 missatges diferents al tema
user-activity
. - 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.
Curs de Kafka
Mòdul 1: Introducció a Kafka
Mòdul 2: Conceptes bàsics de Kafka
Mòdul 3: Operacions de Kafka
Mòdul 4: Configuració i Gestió de Kafka
Mòdul 5: Temes Avançats de Kafka
- Optimització del Rendiment de Kafka
- Kafka en una Configuració Multi-Centre de Dades
- Kafka amb Registre d'Esquemes
- Kafka Streams Avançat