Skip to content

Topics, partitions y brokers ​

Kafka organiza los eventos en topics. Cada topic se divide en partitions y esas partitions viven repartidas entre brokers.

Topic ​

Un topic es una categoria logica de eventos.

Ejemplos:

txt
orders.created
orders.cancelled
payments.authorized
users.registered

Un topic debe representar un flujo de eventos con significado de negocio o tecnico claro.

Partition ​

Una partition es un log ordenado e inmutable.

mermaid
flowchart LR
  T["Topic orders.created"] --> P0["Partition 0"]
  T --> P1["Partition 1"]
  T --> P2["Partition 2"]
  P0 --> E0["offset 0,1,2..."]
  P1 --> E1["offset 0,1,2..."]
  P2 --> E2["offset 0,1,2..."]

Kafka garantiza orden dentro de una partition, no entre partitions distintas.

Offset ​

El offset es la posicion de un evento dentro de una partition.

txt
topic: orders.created
partition: 2
offset: 1538

El offset no es global. Solo tiene sentido dentro de topic + partition.

Broker ​

Un broker es un servidor Kafka. Un cluster tiene varios brokers para repartir carga y replicas.

mermaid
flowchart LR
  B1["Broker 1"] --> P0["orders-0 leader"]
  B2["Broker 2"] --> P1["orders-1 leader"]
  B3["Broker 3"] --> P2["orders-2 leader"]

Leader y replicas ​

Cada partition tiene un leader. Productores y consumidores hablan con el leader. Las replicas copian los datos.

mermaid
flowchart TB
  L["Broker 1\npartition leader"] --> R1["Broker 2\nreplica"]
  L --> R2["Broker 3\nreplica"]

Si el leader falla, Kafka puede elegir una replica sincronizada como nuevo leader.

Replication factor ​

replication.factor=3 significa que cada partition tiene tres copias.

Ventajas:

  • Tolerancia a fallos.
  • Mantenimiento sin perder disponibilidad.
  • Menor riesgo de perdida de datos.

Costes:

  • Mas disco.
  • Mas red.
  • Mas coordinacion.

Partitions y paralelismo ​

El numero de partitions limita el paralelismo de consumo dentro de un consumer group.

Si un topic tiene 6 partitions, un consumer group puede tener hasta 6 consumidores trabajando en paralelo de forma efectiva.

Elegir numero de partitions ​

Considera:

  • Throughput esperado.
  • Numero de consumidores paralelos.
  • Retencion y tamano de eventos.
  • Necesidad de orden por clave.
  • Coste operativo.

No crees cientos de partitions sin motivo. Las partitions tambien tienen coste.

Clave de particion ​

El producer puede enviar una key. Kafka usa esa key para decidir partition.

Ejemplo:

txt
key = order_id

Todos los eventos del mismo pedido iran a la misma partition, manteniendo orden para ese pedido.

Buenas practicas ​

  • Usa nombres de topics claros y estables.
  • Define keys pensando en orden y distribucion.
  • Usa replication factor 3 en produccion cuando sea posible.
  • Evita topics con partitions insuficientes para crecer.
  • No dependas de orden global.