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 scalable publish-subscribe messaging system fo...
Apache Kafka — це розподілена платформа для потокової передачі подій, розроблена для створення конвеєрів даних у реальному часі та потокових додатків. Вона функціонує як високомасштабована, відмовостійка та надійна система обміну повідомленнями за моделлю publish-subscribe. Основна архітектура обертається навколо '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;
🧠 Перевірка знань
🧒 Простими словами
Це як надзвичайно організована, надзвичайно швидка поштова служба для цифрової інформації, де повідомлення (events) надсилаються до певних поштових скриньок (topics) і можуть бути забрані будь-ким, хто підписаний на цю скриньку, без необхідності відправнику знати, хто є одержувачами.
🤓 Expert Deep Dive
Архітектура Kafka побудована навколо концепції розподіленого журналу фіксації. Теми розділені на партиції, і кожна партиція є впорядкованою послідовністю повідомлень. Брокери зберігають ці партиції, а реплікація забезпечує відмовостійкість завдяки динаміці лідер-послідовник для керування партиціями. Продюсери записують повідомлення до лідера партиції, а послідовники асинхронно реплікують дані. Споживачі відстежують власний зсув у кожній партиції, що дозволяє їм незалежно контролювати свій прогрес. Така відокремлена природа забезпечує високу пропускну здатність і масштабованість. Компроміси включають потенційне перевпорядкування повідомлень у межах партиції, якщо споживачі не обробляють це належним чином, а також складність керування перебалансуванням груп споживачів під час збоїв або подій масштабування. ZooKeeper історично був критично важливим для керування метаданими, вибору лідера та реєстрації брокерів, але протокол KRaft спрямований на усунення цієї залежності. Вразливості можуть включати незахищену міжброкерську комунікацію, недостатній контроль доступу, що призводить до витоків даних, і потенційні атаки типу "відмова в обслуговуванні", спрямовані на брокерів або ZooKeeper.