Друкарня від WE.UA

Kafka. ZooKeeper. Raft

KRaft - Apache Kafka Without ZooKeeper

Apache Kafka, популярна система обробки потокових даних, зробила значний крок у своєму розвитку, вирішивши перейти від використання Apache Zookeeper до власної реалізації протоколу консенсусу, відомого як KRaft (Kafka Raft). Це рішення має значні наслідки для архітектури та управління Kafka.

Консенсус

Консенсус в розподілених системах — це фундаментальний принцип, який дозволяє декільком взаємопов'язаним вузлам (або процесам) у системі досягти загальної домовленості щодо певних даних або стану системи, незважаючи на наявність помилок або відмов деяких вузлів. Цей принцип є ключовим для забезпечення надійності та послідовності в розподілених системах, таких як блокчейни, бази даних, системи управління версіями тощо. Протоколи консенсусу, такі як Paxos, Raft, або Zab, дозволяють системі продовжувати роботу коректно, навіть коли деякі компоненти відмовляють або існують мережеві розриви, забезпечуючи, що всі підняті вузли мають консистентний вигляд даних.

Основні аспекти консенсусу в розподілених системах включають:

  1. Узгодженість (Agreement): Всі коректні вузли системи мають погодитися на одне й те саме значення або рішення.

  2. Стійкість до відмов (Fault Tolerance): Система повинна забезпечувати консенсус навіть у присутності відмов частини вузлів. Це означає, що система може витримувати певну кількість відмов (зазвичай меншу половину вузлів) без втрати здатності досягати консенсусу.

  3. Живучість (Liveness): Система повинна забезпечити, що кожен коректний запит на досягнення консенсусу буде врешті-решт завершений.

  4. Відсутність блокувань (Non-blocking): Процес досягнення консенсусу не повинен назавжди застрягти в стані, де рішення не може бути прийняте.

А що таке розподілена система?

Розподілена система — це група комп'ютерів, що працюють разом, як єдине ціле, для досягнення спільної мети. Ці комп'ютери (вузли) можуть бути фізично розташовані в одному центрі обробки даних або розкидані по всьому світу. Розподілені системи дозволяють обробляти більші обсяги даних, забезпечувати високу доступність послуг шляхом реплікації даних та обчислювальних ресурсів, а також підвищити витривалість системи за рахунок толерантності до відмов окремих компонентів.

Zookeeper

Apache Zookeeper — це централізована служба для зберігання конфігурацій, неймінгу, синхронізації та надання групових послуг. Вона використовується для координації між вузлами в розподіленій системі. У контексті Kafka, Zookeeper використовувався для управління метаданими кластера (такими як інформація про топіки, партиції, репліки та їх статуси) та вибору лідера серед реплік.

Перехід до KRaft

Рішення Kafka перейти на використання KRaft замість Zookeeper було мотивовано декількома факторами:

  1. Спрощення архітектури: Видалення залежності від Zookeeper дозволяє спростити розгортання та управління Kafka, усуваючи потребу у додатковому компоненті та можливих точок збою.

  2. Покращення продуктивності: Власний протокол консенсусу може бути тісно інтегрований з логікою Kafka, забезпечуючи кращу продуктивність та масштабованість.

  3. Контроль та оптимізація: Розробка протоколу KRaft надає команді Kafka більше можливостей для контролю та оптимізації протоколу консенсусу. Вони можуть адаптувати протокол до специфічних потреб та сценаріїв використання Kafka, що може сприяти покращенню загальної ефективності та надійності системи.

Що таке Raft?

Raft — це протокол консенсусу, який був розроблений як більш проста альтернатива іншим протоколам, наприклад Paxos. Його основне завдання полягає в забезпеченні узгодженого стану між вузлами у розподіленій системі, що дозволяє системі залишатися стійкою до збоїв окремих вузлів. Основою Raft є механізм 'вибору лідера', який гарантує, що в кожний момент часу існує один вузол-лідер, відповідальний за управління процесом реплікації даних між вузлами, з метою досягнення консистентності інформації в усьому кластері.

Концепція 'вибору лідера' полягає в автоматичному виборі одного вузла кластера, який тимчасово виконує роль координатора між усіма вузлами. Цей лідер відповідає за прийняття оновлень і координування процесу їх реплікації до інших вузлів, забезпечуючи, щоб усі вузли мали однаковий, актуальний стан даних.

Відмінності між Zookeeper і Raft

  • Концепція та архітектура: Zookeeper був розроблений як загальний інструмент для координації розподілених систем, тоді як Raft спеціально призначений для забезпечення консенсусу в таких системах.

  • Спрощення vs універсальність: Raft надає більш простий підхід до досягнення консенсусу, зосереджуючись на легкості розуміння та реалізації. Zookeeper, навпаки, пропонує більш універсальні можливості координації, що може призвести до більшої складності в конфігурації та управлінні.

  • Інтеграція з Kafka: Перехід до KRaft дозволяє Kafka тісніше інтегрувати логіку консенсусу з внутрішніми процесами системи, забезпечуючи кращу продуктивність та масштабованість.

Статті про вітчизняний бізнес та цікавих людей:

  • CRM keyCRM: зручне рішення для продажів, комунікацій і керування командою

    Успіх компанії залежить від того, наскільки швидко вона здатна опрацьовувати вхідні запити. Коли дані про клієнтів розпорошені між різними месенджерами, виникає хаос. CRM keyCRM пропонує вихід із цієї ситуації, об’єднуючи всі робочі процеси в єдиному зручному інтерфейсі.

    Теми цього довгочиту:

    Crm
  • Різниця між UX і UI, яку варто зрозуміти ще до першого заняття

    Більшість людей, які обирають професію UX чи UI, довго вважають це одним і тим самим. Насправді це два різних підходи до роботи над продуктом, і плутанина між ними гальмує розвиток ще на старті.

    Теми цього довгочиту:

    Ui-ux
  • Логіка змін: як SEO оптимізація прибирає бар’єри до зростання

    Багато компаній приходять у SEO з очікуванням швидкого ривка, але дійсний ефект починається там, де сайт перестають латати точково. Тому в центрі роботи стоїть не окрема дія, а послідовні зміни. Оптимізація сайту має прибирати системні перешкоди, а не маскувати їх новими текстами

    Теми цього довгочиту:

    Seo
  • Музичний футуризм: неймовірні інструменти XXI століття

    Еволюція музичних інструментів це один із найкрутіших проявів потужності людської уяви і потреби виразити себе через мистецтво. І хоча багато традиційних інструментів майже не змінилися за століття існування, інновації і пошук не зупиняються.

    Теми цього довгочиту:

    Музичні Інструменти
  • Стіл – всьому голова? Так, якщо його правильно підібрати

    Коли починаєш вивчати пропозицію меблевих фабрик щодо столів, дивуєшся кількості варіантів, адже вони пропонують різні розміри, різні матеріали, різноманітні форми та дизайни. Скористайтесь нашим каталогом MebelOK, щоб Ви могли підібрати найкращу модель для Вашого приміщення

    Теми цього довгочиту:

    Столи
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Oleksandr Klymenko
Oleksandr Klymenko@overpathz

Java Software Engineer

40Довгочити
8.9KПерегляди
101Підписники
На Друкарні з 19 квітня 2023

Більше від автора

  • Java Memory Model ↔ PostgreSQL MVCC: один і той самий фундамент конкурентності

    Java Memory Model та PostgreSQL MVCC/Isolation Levels — це дві відповіді на одне й те саме фундаментальне питання: за яких умов зміна, зроблена одним учасником (потоком / транзакцією), стає видимою для іншого?

    Теми цього довгочиту:

    Java
  • Як виконується SQL-запит

    Сьогодні розберемо, що відбувається з вашим SELECT * FROM users WHERE age > 21 перед тим, як БД поверне вам дані

    Теми цього довгочиту:

    Computer Science

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: