Loading AI tools
З Вікіпедії, вільної енциклопедії
Apache Kafka — це розподілене сховище подій і платформа для їх багатопотокового оброблення. Метою проєкту є створення уніфікованої високопродуктивної платформи з низькою затримкою для обробки потоків даних у реальному часі.
Тип | проміжне програмне забезпечення, орієнтоване на обробку повідомлень |
---|---|
Автор | Neha Narkheded |
Розробники | Apache Software Foundation і LinkedIn |
Операційна система | кросплатформова програма |
Мова програмування | Java[1] і Scala[2] |
Ліцензія | Apache Software License 2.0d і Apache License |
Репозиторій | https://github.com/apache/kafka, https://gitbox.apache.org/repos/asf/kafka.git |
Вебсайт | kafka.apache.org |
Kafka може бути підключена до зовнішніх систем (для імпорту/експорту даних) через Kafka Connect, програми потокової обробки даних можуть працювати з Kafka через бібліотеку Kafka Streams. Kafka використовує бінарний протокол на базі TCP, оптимізований для більшої ефективності.
В основі концепції Kafka лежить абстракція «набір повідомлень» (англ. message set), яка передбачає групування повідомлення разом, щоб зменшити накладні витрати на транспортування по мережі. Це призводить до "більших мережевих пакетів, більших послідовних операцій на диску та неперервних блоків пам'яті […], що дозволяє Kafka перетворювати хаотичний потік випадкових повідомлень на лінійні записи"[3].
Kafka було розроблено компанією LinkedIn. На початку 2011 року було відкрито вихідний код проєкту. Серед розробників Kafka: Джей Крепс, Неха Наркхеде та Джун Рао[4]. Вихід з Apache Incubator відбувся 23 жовтня 2012 року[5]. Джей Крепс вибрав ім'я Kafka на честь письменника Франца Кафки, тому що це «система, оптимізована для записування», а йому подобались роботи Кафки[6].
В основі Apache Kafka лежить журнал транзакцій (commit log), на який клієнти можуть підписуватись і куди публікувати дані для будь-якої кількості додатків реального часу. До прикладів таких додатків можна віднести управління підбором водія для пасажира в Uber, забезпечення аналітики в реальному часі і прогнозування необхідності обслуговування для розумних будинків компанії British Gas і, робота численних сервісів у реальному часі по усьому LinkedIn[7].
Kafka зберігає повідомлення у форматі ключ-значення, які приходять від необмеженої кількості клієнтів, що називаються «продюсерами» (producers). Дані можуть бути розділені на окремі «розділи» (partitions) залежно від теми «теми» (topic). Всередині розділу, повідомлення суворо впорядковуються за відступом (offsets) — позицією повідомлення в розділі, індексуються і зберігаються разом з позначкою часу (timestamp). Інші клієнти, які називається «споживачами» (consumers) можуть читати повідомлення з розділів. Для потокової обробки Kafka надає Streams API, що дозволяє створювати додатки, які зчитують інформацію з Kafka і записують результати назад в Kafka. Apache Kafka також працює з зовнішіми системами потоковї обробки даних, такими як Apache Apex, Apache Beam, Apache Flink, Apache Spark, Apache Storm і Apache NiFi.
Kafka працює в кластері з одного або більше серверів (які ще називаються брокерами (brokers)), і розділи усіх тем (топіків) розподіляються по вузлах кластера. Додатково, розділи реплікуються декількома брокерами. Така архітектура дозволяє Kafka доставляти масивні потоки повідомлень у відмовостійкий спосіб і замінити собою деякі традиційні систему обміну повідомленнями, такі як Java Message Service, AMQP, тощо. Починаючи з версії 0.11.0.0, Kafka дозволяє виконувати транзакційні записи (transactional writes), що дозволяє забезпечити лише одне опрацювання даних, використовуючи Streams API.
В Kafka є 5 основних API:
Consumer та Producer API відокремлені від основого функціоналу за допомогою базового протоколу обміну повідомленнями. Це дозволяє писати сумісні API на будь-якій мові програмування і вони будуть такими ж ефективними як Java API, що постачається з коробки. Проєкт Apache Kafka веде список таких сторонніх API.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.