Kafka Flashcards
Что такое распределённое хранилище?
Система, работающая на нескольких машинах, каждая машина - часть хранилища. Пользователь видит это как одно целое.
Что такое горизонтальное и вертикальное масштабирование?
горизонтальное - Увеличение ресурсов засчёт добавления в систему новых машин.
вертикальное- увеличение мощности машины (cpu, ram, …). Имеет предел и даунтайм
эти 2 вида можно комбинировать.
Что такое отказоустойчивость?
Свойство, позволяющее системе не иметь единую точку отказа (если машина вышла из строя система продолжит работать).
Что такое лог?
Упорядоченная по времени append-only структура данных.
append-only: Может принимать данные, но содержащиеся данные неизменяемы.
Что такое Apache Kafka?
Распределённое отказоустойчивое горизонтально масштабируемое хранилище логов.
Она поддерживает потоковую обработку данных и имеет экосистему коннектооров для интеграции с БД и другими хранилищами.
Может выступать как:
- Брокер событий или система пайплайнов с помощью которой элементы распределенной системы общаются между собой.
- Система коммуникаций между сервисами, если она грамотно выстроена, позволяет компонентам ставить друг другу задачи, сообщать об изменениях в системе и уведомлять заинтересованные части логики приложения о своих состояниях.
https://mcs.mail.ru/blog/apache-kafka-chto-eto-i-kak-rabotaet
Как работает кафка?
В упрощенном виде работа Kafka Apache выглядит следующим образом:
- Приложение-продюсер создает сообщение и отправляет его на узел Kafka.
- Брокер сохраняет сообщение в топике, на который подписаны приложения-потребители.
- Потребитель при необходимости делает запрос в топик и получает из него нужные данные.
Кто такие producer & consumer?
продюсер (producer) — приложение или процесс, генерирующий и посылающий данные (публикующий сообщение);
потребитель (consumer) — приложение или процесс, который принимает сгенерированное продюсером сообщение;
сообщение — пакет данных, необходимый для совершения какой-либо операции (например, авторизации, оформления покупки или подписки);
Что такое retention?
задает условия хранения данных:
retention.ms - время хранения
retention.bytes - задаёт размер партиции.
NB: срок хранения не влияет на производительность системы.
Что такое сообщение в кафке?
Key + Value + Timestamp + Headers (metainfo).
Месаджи с одинаковыми ключами гарантированно пишутся в одну партицию
Что такое топик?
топик (тема) — виртуальное хранилище событий (запечатленный поток событий) одинакового или похожего содержания, из которого приложение-потребитель извлекает необходимую ему информацию.
Топик не гарантирует порядок записей в отличии от партишна.
Что такое партиция?
Распределенный отказоустойчивый log.
Сообщения хранятся в одной из партиций топика.
Каждый топик состоит из 1 и более партиций, распределенных между брокерами внутри одного кластера, что позволяет клиентам писать и читать месаджи в / с несколько брокером одновременно.
Партиции - основной инструмент масштабирования кафки: если консумеры не справляются или нужно распределить нагрузку - добавляем партиции в топик.
Теоретический лимит партиций на кластер - 200000.
Что таое auto.offset.reset?
определяет как должен вести себя консумер читая из партиции, в которой нет начального оффсета.
если мы на лету добавляем партицию в проде, надо сделать auto.offset.reset=earlyest, тогда можно будет прочитать все данные.
https://medium.com/lydtech-consulting/kafka-consumer-auto-offset-reset-d3962bad2665
Что такое Оффсет?
при попадании сообщения в партицию оно ставится в голову и ему назначается офсет: уникальный монотонно возрастающий 64-bit unsigned int
Что такое брокер?
брокер — сервер / узел / диспетчер передачи сообщения от процесса-продюсера приложению-потребителю;
Что такое кластер?
Объединение серверов.