Kafka

Apache Kafka is a distributed event streaming platform capable of handling trillions of events per day, serving as a high-throughput, fault-tolerant, and scalab...

Apache Kafka es una plataforma de distributed event streaming diseñada para construir data pipelines en tiempo real y aplicaciones de streaming. Funciona como un sistema de publish-subscribe messaging altamente escalable, fault-tolerant y durable. La arquitectura central gira en torno a 'topics', que son categorías o feeds de records. Producers publican records a topics, y consumers se suscriben a topics para leer estos records. Kafka brokers, formando un cluster, almacenan estos records de forma durable y los sirven a los consumers. Los records se organizan en partitions dentro de topics, permitiendo procesamiento paralelo y alto throughput. Cada partition es una secuencia ordenada e inmutable de records. La replicación a través de brokers asegura fault tolerance; si un broker falla, otra réplica puede tomar el control. La durabilidad de Kafka proviene de escribir records en disco. Los componentes clave incluyen Producers, Consumers, Brokers y ZooKeeper (para coordinación de cluster, aunque versiones más nuevas se están moviendo hacia KRaft). Los trade-offs involucran la complejidad operacional de manejar un cluster distribuido, especialmente en cuanto a dependencias de Zookeeper, y la necesidad de una cuidadosa planificación de capacidad. Sin embargo, ofrece un throughput sin igual, baja latencia y fuertes garantías de durabilidad, haciéndolo ideal para flujos de datos de alto volumen.

        graph LR
  Center["Kafka"]:::main
  Rel_ipfs["ipfs"]:::related -.-> Center
  click Rel_ipfs "/terms/ipfs"
  Rel_file_systems["file-systems"]:::related -.-> Center
  click Rel_file_systems "/terms/file-systems"
  Rel_distributed_ledger_technology_dlt["distributed-ledger-technology-dlt"]:::related -.-> Center
  click Rel_distributed_ledger_technology_dlt "/terms/distributed-ledger-technology-dlt"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧠 Prueba de conocimiento

1 / 1

🧒 Explícalo como si tuviera 5 años

Es como un servicio postal súper organizado y súper rápido para información digital, donde los mensajes (events) se envían a buzones específicos (topics) y pueden ser recogidos por cualquiera que se suscriba a ese buzón, sin que el remitente necesite saber quiénes son los destinatarios.

🤓 Expert Deep Dive

La arquitectura de Kafka se basa en el concepto de un registro de confirmación distribuido. Los temas se particionan y cada partición es una secuencia ordenada de mensajes. Los brokers almacenan estas particiones, y la replicación garantiza la tolerancia a fallos, con una dinámica de líder-seguidor para la gestión de particiones. Los productores escriben mensajes al líder de una partición, y los seguidores replican los datos de forma asíncrona. Los consumidores mantienen su propio desplazamiento dentro de cada partición, lo que les permite seguir su progreso de forma independiente. Esta naturaleza desacoplada permite un alto rendimiento y escalabilidad. Las contrapartidas incluyen la posibilidad de reordenación de mensajes dentro de una partición si los consumidores no la manejan con cuidado, y la complejidad de gestionar el reequilibrio de grupos de consumidores durante fallos o eventos de escalado. Históricamente, ZooKeeper ha sido fundamental para la gestión de metadatos, la elección de líder y el registro de brokers, pero el protocolo KRaft pretende eliminar esta dependencia. Las vulnerabilidades pueden incluir comunicaciones inter-broker inseguras, control de acceso insuficiente que conduzca a brechas de datos y posibles ataques de denegación de servicio dirigidos a brokers o ZooKeeper.

📚 Fuentes