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 - это распределенная платформа для потоковой передачи событий, разработанная для построения конвейеров данных в реальном времени и потоковых приложений. Она функционирует как высокомасштабируемая, отказоустойчивая и надежная система обмена сообщениями по принципу «издатель-подписчик». Основная архитектура вращается вокруг 'topics', которые являются категориями или потоками записей. Producers публикуют записи в topics, а Consumers подписываются на topics, чтобы читать эти записи. Kafka brokers, образующие кластер, надежно хранят эти записи и предоставляют их потребителям. Записи организованы в partitions внутри topics, что позволяет осуществлять параллельную обработку и высокую пропускную способность. Каждая partition представляет собой упорядоченную, неизменяемую последовательность записей. Репликация между брокерами обеспечивает отказоустойчивость; если брокер выходит из строя, другая реплика может взять на себя его функции. Надежность Kafka обеспечивается записью записей на диск. Ключевые компоненты включают Producers, Consumers, Brokers и ZooKeeper (для координации кластера, хотя более новые версии переходят на KRaft). Компромиссы включают операционную сложность управления распределенным кластером, особенно в отношении зависимостей от Zookeeper, и необходимость тщательного планирования мощностей. Однако он предлагает непревзойденную пропускную способность, низкую задержку и надежные гарантии надежности, что делает его идеальным для потоков данных с большим объемом.

        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;

      

🧠 Проверка знаний

1 / 1

🧒 Простыми словами

Это похоже на супер-организованную, супер-быструю почтовую службу для цифровой информации, где сообщения (события) отправляются в определенные почтовые ящики (topics), и их могут забрать все, кто подписан на этот почтовый ящик, без необходимости отправителю знать, кто получатели.

🤓 Expert Deep Dive

Архитектура Kafka построена вокруг концепции распределенного журнала фиксации. Топики разделены на партиции, и каждая партиция представляет собой упорядоченную последовательность сообщений. Брокеры хранят эти партиции, а репликация обеспечивает отказоустойчивость с динамикой "лидер-последователь" для управления партициями. Продюсеры записывают сообщения лидеру партиции, а последователи асинхронно реплицируют данные. Потребители поддерживают собственный смещение (offset) в каждой партиции, что позволяет им независимо отслеживать свой прогресс. Такая раздельная природа обеспечивает высокую пропускную способность и масштабируемость. Компромиссы включают потенциальную перестановку сообщений в пределах партиции, если потребители не обрабатывают это должным образом, и сложность управления перебалансировкой групп потребителей во время сбоев или масштабирования. ZooKeeper исторически был критически важен для управления метаданными, выбора лидера и регистрации брокеров, но протокол KRaft призван устранить эту зависимость. Уязвимости могут включать небезопасную межброкерную связь, недостаточный контроль доступа, ведущий к утечкам данных, и потенциальные атаки типа "отказ в обслуживании" (DoS), нацеленные на брокеры или ZooKeeper.

📚 Источники