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
🧒 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.