Kafka

Definição à espera.

Apache Kafka é uma plataforma de transmissão de dados distribuída projetada para a construção de pipelines de dados em tempo real e aplicações de transmissão. Funciona como um sistema de mensagens altamente escalável, tolerante a falhas e durável. A arquitetura central gira em torno de 'tópicos', que são categorias ou feeds de registros. Os produtores publicam registros para tópicos e os consumidores se inscrevem em tópicos para ler esses registros. Os corretores Kafka, formando um cluster, armazenam esses registros de forma duradoura e os servem aos consumidores. Os registros são organizados em partições dentro de tópicos, permitindo processamento paralelo e alta potência. Cada partição é uma seqüência de registros ordenada e imutável. Replicação entre corretores

        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;

      

🧠 Teste de conhecimento

1 / 1

🧒 Explique como se eu tivesse 5 anos

É como um serviço postal super organizado e super rápido para informações digitais, onde mensagens (eventos) são enviadas para caixas de correio específicas (tópicos) e podem ser recolhidas por qualquer pessoa que assine essa caixa de correio, sem que o remetente precise saber quem são os destinatários.

🤓 Expert Deep Dive

A arquitetura do Kafka é construída em torno do conceito de um commit log distribuído. Os tópicos são particionados, e cada partição é uma sequência ordenada de mensagens. Os brokers armazenam essas partições, e a replicação garante tolerância a falhas, com uma dinâmica de líder-seguidor para o gerenciamento de partições. Os produtores escrevem mensagens no líder de uma partição, e os seguidores replicam os dados de forma assíncrona. Os consumidores mantêm seu próprio offset dentro de cada partição, permitindo que acompanhem seu progresso independentemente. Essa natureza desacoplada possibilita alta vazão e escalabilidade. As desvantagens incluem o potencial de reordenação de mensagens dentro de uma partição se não for tratada cuidadosamente pelos consumidores, e a complexidade de gerenciar o rebalanceamento de grupos de consumidores durante falhas ou eventos de escalonamento. O ZooKeeper tem sido historicamente crítico para o gerenciamento de metadados, eleição de líder e registro de brokers, mas o protocolo KRaft visa remover essa dependência. As vulnerabilidades podem incluir comunicação insegura entre brokers, controle de acesso insuficiente levando a violações de dados e potenciais ataques de negação de serviço direcionados a brokers ou ao ZooKeeper.

📚 Fontes