Apache Kafka — це розподілене сховище подій і платформа для їх багатопотокового оброблення. Метою проєкту є створення уніфікованої високопродуктивної платформи з низькою затримкою для обробки потоків даних у реальному часі.
Kafka може бути підключена до зовнішніх систем (для імпорту/експорту даних) через Kafka Connect, програми потокової обробки даних можуть працювати з Kafka через бібліотеку Kafka Streams. Kafka використовує бінарний протокол на базі TCP, оптимізований для більшої ефективності.
В основі концепції Kafka лежить абстракція «набір повідомлень» (англ. message set), яка передбачає групування повідомлення разом, щоб зменшити накладні витрати на транспортування по мережі. Це призводить до "більших мережевих пакетів, більших послідовних операцій на диску та неперервних блоків пам'яті […], що дозволяє Kafka перетворювати хаотичний потік випадкових повідомлень на лінійні записи".
Історія
Kafka було розроблено компанією LinkedIn. На початку 2011 року було відкрито вихідний код проєкту. Серед розробників Kafka: Джей Крепс, Неха Наркхеде та Джун Рао. Вихід з відбувся 23 жовтня 2012 року. Джей Крепс вибрав ім'я Kafka на честь письменника Франца Кафки, тому що це «система, оптимізована для записування», а йому подобались роботи Кафки.
Додатки
В основі Apache Kafka лежить журнал транзакцій (commit log), на який клієнти можуть підписуватись і куди публікувати дані для будь-якої кількості додатків реального часу. До прикладів таких додатків можна віднести управління підбором водія для пасажира в Uber, забезпечення аналітики в реальному часі і прогнозування необхідності обслуговування для розумних будинків компанії British Gas і, робота численних сервісів у реальному часі по усьому LinkedIn.
Архітектура
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:
- Producer API — Дозволяє клієнту публікувати потоки записів.
- Consumer API — Дозволяє клієнту підписуватися на теми та обробляти вхідні потоки записів.
- Connector API — Дозволяє перевикористовувати клієнтів Consumer та Producer API, для зв’язування існуючих додатків з новими темами (топіками).
- Streams API — Перетворює вхідні потоки на вихідні та формує результат.
- Admin API — Дозволяє керувати темами (топіками), брокерами та іншими об’єктами Kafka.
Consumer та Producer API відокремлені від основого функціоналу за допомогою базового протоколу обміну повідомленнями. Це дозволяє писати сумісні API на будь-якій мові програмування і вони будуть такими ж ефективними як Java API, що постачається з коробки. Проєкт Apache Kafka веде список таких сторонніх API.
Див. також
Примітки
- https://projects.apache.org/json/projects/kafka.json
- The apache-kafka Open Source Project on Open Hub: Languages Page — 2006.
- Efficiency. kafka.apache.org. Процитовано 19 вересня 2019.
- Li, S. (2020). He Left His High-Paying Job At LinkedIn And Then Built A $4.5 Billion Business In A Niche You've Never Heard Of. Forbes. Retrieved 8 June 2021, from Forbes_Kreps.
- Apache Incubator: Kafka Incubation Status.
- What is the relation between Kafka, the writer, and Apache Kafka, the distributed messaging system?. Quora. Процитовано 12 червня 2017.
- What is Apache Kafka. confluent.io. Процитовано 4 травня 2018.
Посилання
- Офіційний сайт
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Apache Kafka ce rozpodilene shovishe podij i platforma dlya yih bagatopotokovogo obroblennya Metoyu proyektu ye stvorennya unifikovanoyi visokoproduktivnoyi platformi z nizkoyu zatrimkoyu dlya obrobki potokiv danih u realnomu chasi Apache KafkaTippromizhne programne zabezpechennya oriyentovane na obrobku povidomlenAvtordRozrobnikiApache Software Foundation i LinkedInOperacijna sistemakrosplatformova programaMova programuvannyaJava 1 i Scala 2 Licenziyad i Apache LicenseRepozitorijhttps github com apache kafka https gitbox apache org repos asf kafka gitVebsajtkafka apache org Mediafajli u Vikishovishi Kafka mozhe buti pidklyuchena do zovnishnih sistem dlya importu eksportu danih cherez Kafka Connect programi potokovoyi obrobki danih mozhut pracyuvati z Kafka cherez biblioteku Kafka Streams Kafka vikoristovuye binarnij protokol na bazi TCP optimizovanij dlya bilshoyi efektivnosti V osnovi koncepciyi Kafka lezhit abstrakciya nabir povidomlen angl message set yaka peredbachaye grupuvannya povidomlennya razom shob zmenshiti nakladni vitrati na transportuvannya po merezhi Ce prizvodit do bilshih merezhevih paketiv bilshih poslidovnih operacij na disku ta neperervnih blokiv pam yati sho dozvolyaye Kafka peretvoryuvati haotichnij potik vipadkovih povidomlen na linijni zapisi IstoriyaKafka bulo rozrobleno kompaniyeyu LinkedIn Na pochatku 2011 roku bulo vidkrito vihidnij kod proyektu Sered rozrobnikiv Kafka Dzhej Kreps Neha Narkhede ta Dzhun Rao Vihid z vidbuvsya 23 zhovtnya 2012 roku Dzhej Kreps vibrav im ya Kafka na chest pismennika Franca Kafki tomu sho ce sistema optimizovana dlya zapisuvannya a jomu podobalis roboti Kafki DodatkiV osnovi Apache Kafka lezhit zhurnal tranzakcij commit log na yakij kliyenti mozhut pidpisuvatis i kudi publikuvati dani dlya bud yakoyi kilkosti dodatkiv realnogo chasu Do prikladiv takih dodatkiv mozhna vidnesti upravlinnya pidborom vodiya dlya pasazhira v Uber zabezpechennya analitiki v realnomu chasi i prognozuvannya neobhidnosti obslugovuvannya dlya rozumnih budinkiv kompaniyi British Gas i robota chislennih servisiv u realnomu chasi po usomu LinkedIn ArhitekturaOglyad arhitekturi z Kafka Kafka zberigaye povidomlennya u formati klyuch znachennya yaki prihodyat vid neobmezhenoyi kilkosti kliyentiv sho nazivayutsya prodyuserami producers Dani mozhut buti rozdileni na okremi rozdili partitions zalezhno vid temi temi topic Vseredini rozdilu povidomlennya suvoro vporyadkovuyutsya za vidstupom offsets poziciyeyu povidomlennya v rozdili indeksuyutsya i zberigayutsya razom z poznachkoyu chasu timestamp Inshi kliyenti yaki nazivayetsya spozhivachami consumers mozhut chitati povidomlennya z rozdiliv Dlya potokovoyi obrobki Kafka nadaye Streams API sho dozvolyaye stvoryuvati dodatki yaki zchituyut informaciyu z Kafka i zapisuyut rezultati nazad v Kafka Apache Kafka takozh pracyuye z zovnishimi sistemami potokovyi obrobki danih takimi yak Apache Apex Apache Beam Apache Flink Apache Spark Apache Storm i Apache NiFi Kafka pracyuye v klasteri z odnogo abo bilshe serveriv yaki she nazivayutsya brokerami brokers i rozdili usih tem topikiv rozpodilyayutsya po vuzlah klastera Dodatkovo rozdili replikuyutsya dekilkoma brokerami Taka arhitektura dozvolyaye Kafka dostavlyati masivni potoki povidomlen u vidmovostijkij sposib i zaminiti soboyu deyaki tradicijni sistemu obminu povidomlennyami taki yak Java Message Service AMQP tosho Pochinayuchi z versiyi 0 11 0 0 Kafka dozvolyaye vikonuvati tranzakcijni zapisi transactional writes sho dozvolyaye zabezpechiti lishe odne opracyuvannya danih vikoristovuyuchi Streams API V Kafka ye 5 osnovnih API Producer API Dozvolyaye kliyentu publikuvati potoki zapisiv Consumer API Dozvolyaye kliyentu pidpisuvatisya na temi ta obroblyati vhidni potoki zapisiv Connector API Dozvolyaye perevikoristovuvati kliyentiv Consumer ta Producer API dlya zv yazuvannya isnuyuchih dodatkiv z novimi temami topikami Streams API Peretvoryuye vhidni potoki na vihidni ta formuye rezultat Admin API Dozvolyaye keruvati temami topikami brokerami ta inshimi ob yektami Kafka Consumer ta Producer API vidokremleni vid osnovogo funkcionalu za dopomogoyu bazovogo protokolu obminu povidomlennyami Ce dozvolyaye pisati sumisni API na bud yakij movi programuvannya i voni budut takimi zh efektivnimi yak Java API sho postachayetsya z korobki Proyekt Apache Kafka vede spisok takih storonnih API Div takozhRabbitMQ Redis Apache Spark Streaming Data Distribution Service Streaming analytics Servisno oriyentovana arhitekturaPrimitkihttps projects apache org json projects kafka json The apache kafka Open Source Project on Open Hub Languages Page 2006 d Track Q124688 Efficiency kafka apache org Procitovano 19 veresnya 2019 Li S 2020 He Left His High Paying Job At LinkedIn And Then Built A 4 5 Billion Business In A Niche You ve Never Heard Of Forbes Retrieved 8 June 2021 from Forbes Kreps Apache Incubator Kafka Incubation Status What is the relation between Kafka the writer and Apache Kafka the distributed messaging system Quora Procitovano 12 chervnya 2017 What is Apache Kafka confluent io Procitovano 4 travnya 2018 PosilannyaOficijnij sajt