Kafka Flashcards

1
Q

Что такое распределённое хранилище?

A

Система, работающая на нескольких машинах, каждая машина - часть хранилища. Пользователь видит это как одно целое.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое горизонтальное и вертикальное масштабирование?

A

горизонтальное - Увеличение ресурсов засчёт добавления в систему новых машин.
вертикальное- увеличение мощности машины (cpu, ram, …). Имеет предел и даунтайм

эти 2 вида можно комбинировать.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое отказоустойчивость?

A

Свойство, позволяющее системе не иметь единую точку отказа (если машина вышла из строя система продолжит работать).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое лог?

A

Упорядоченная по времени append-only структура данных.
append-only: Может принимать данные, но содержащиеся данные неизменяемы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое Apache Kafka?

A

Распределённое отказоустойчивое горизонтально масштабируемое хранилище логов.
Она поддерживает потоковую обработку данных и имеет экосистему коннектооров для интеграции с БД и другими хранилищами.

Может выступать как:
- Брокер событий или система пайплайнов с помощью которой элементы распределенной системы общаются между собой.
- Система коммуникаций между сервисами, если она грамотно выстроена, позволяет компонентам ставить друг другу задачи, сообщать об изменениях в системе и уведомлять заинтересованные части логики приложения о своих состояниях.

https://mcs.mail.ru/blog/apache-kafka-chto-eto-i-kak-rabotaet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как работает кафка?

A

В упрощенном виде работа Kafka Apache выглядит следующим образом:

  • Приложение-продюсер создает сообщение и отправляет его на узел Kafka.
  • Брокер сохраняет сообщение в топике, на который подписаны приложения-потребители.
  • Потребитель при необходимости делает запрос в топик и получает из него нужные данные.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Кто такие producer & consumer?

A

продюсер (producer) — приложение или процесс, генерирующий и посылающий данные (публикующий сообщение);

потребитель (consumer) — приложение или процесс, который принимает сгенерированное продюсером сообщение;

сообщение — пакет данных, необходимый для совершения какой-либо операции (например, авторизации, оформления покупки или подписки);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое retention?

A

задает условия хранения данных:
retention.ms - время хранения
retention.bytes - задаёт размер партиции.
NB: срок хранения не влияет на производительность системы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Что такое сообщение в кафке?

A

Key + Value + Timestamp + Headers (metainfo).
Месаджи с одинаковыми ключами гарантированно пишутся в одну партицию

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое топик?

A

топик (тема) — виртуальное хранилище событий (запечатленный поток событий) одинакового или похожего содержания, из которого приложение-потребитель извлекает необходимую ему информацию.

Топик не гарантирует порядок записей в отличии от партишна.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое партиция?

A

Распределенный отказоустойчивый log.

Сообщения хранятся в одной из партиций топика.
Каждый топик состоит из 1 и более партиций, распределенных между брокерами внутри одного кластера, что позволяет клиентам писать и читать месаджи в / с несколько брокером одновременно.

Партиции - основной инструмент масштабирования кафки: если консумеры не справляются или нужно распределить нагрузку - добавляем партиции в топик.

Теоретический лимит партиций на кластер - 200000.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что таое auto.offset.reset?

A

определяет как должен вести себя консумер читая из партиции, в которой нет начального оффсета.
если мы на лету добавляем партицию в проде, надо сделать auto.offset.reset=earlyest, тогда можно будет прочитать все данные.

https://medium.com/lydtech-consulting/kafka-consumer-auto-offset-reset-d3962bad2665

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое Оффсет?

A

при попадании сообщения в партицию оно ставится в голову и ему назначается офсет: уникальный монотонно возрастающий 64-bit unsigned int

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что такое брокер?

A

брокер — сервер / узел / диспетчер передачи сообщения от процесса-продюсера приложению-потребителю;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что такое кластер?

A

Объединение серверов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое consumer group?

A

Каждый консумер является частью группы.
Kafka гарантирует, что конкретное сообщение будет обработано 1 раз на всю группу.
Разные группы могут независимо читать данные из одного топика в своём темпе.

каждая группа имеет название и регистрируется брокерами в кластере.
когда несколько консумеров из одной группы читают данные из одного топика, то каждый консумер читает данные из разных партиций, распределяя нагрузку.
каждому члену группы назначается уникальная партиция - 2 консумера не могут читать одну партицию.
идеально, если партиции = консумеры. если консумеров больше - кто-то из них не сможет читать.

BP: 4 партиции на консумера, 3 реплики на партицию.

17
Q

Что такое гарантии доставки, как при записи, так и при чтении?

A

Запись:
- Когда источник посылает сообщение, он даёт знать брокеру Kafka, какого рода уведомление он хочет получить, задав одну из настроек:
-Без уведомлений, автоматический режим. Acks=0.
-Уведомление о получении сообщения лидером. Acks=1 (default)
-Уведомление о получении сообщения лидером и всеми участвующими в синхронизации
репликами. Acks=All

Чтение:
- Брокер знает офсет партиции для каждого консумера и даже если к. отвалится, то подключившись, он запросит у брокера офсет и продолжит чтение.
- Долговечность сообщений — сообщения, сохранённые в сегменте, не теряются;

Потеря сообщений может произойти только в случае сбоя лидера и отсутствия участвующих в синхронизации реплик.

18
Q

отличие Кафки от MQ (вообще корректнее спрашивать отличие брокера ивентов от брокеров сообщений, но Кафка уже давно является синонимом брокера ивентов, но есть и другие, типа Apache Pulsar)

A

MQ + Kafka : Producer -> Server -> pull (kafka) / push (rabbitMQ) -> Consumer.
pull - консумер тянет сообщения из очереди,
push - очередь отправляет сообщения консумеру.

MQ: Сервер отправляет сообщение консумеру и ставит его в состояние “in flight” - оно недоступно другим консумерам, консумер обрабатывает сообщениие и посылает в ответ ack / nack, сервер либо удаляет сообщение из очереди, либо разблокирует его для отправки следующему консумеру. Разблокирует и в случае таймаута.

Kafka: сообщения не удаляются помере их обработки консумерами. таким образом одно сообщение может быть обработано сколько угодно раз разными консумерами и в разных контекстах.

Очередность в кафке:
брокер знает офсет партиции для каждого консумера и даже если к. отвалится, то подключившись, он запросит у б. офсет и продолжит чтение.

19
Q

Что такое Kafka Connect?

A

Фреймворк для обмена данными между топиком и внешней системой (БД / MQ / файловая система / …)

20
Q

zookeeper vs working node

A

zookeeper управляет кластером
working node - брокер, обрабатывает данные.

zookeeper хранит метаданные (
какой брокер - контроллер (брокер, отвечающий за выбор лидеров партиций)?
какой брокер - лидер?
в каком состоянии лидеры, их партиции и их реплики?
), работает асинхронно.
падение zookeeper = падение кластера.

Брокеры общаются друг с другом через зукипера.

21
Q

partition leader vs follower

A

MASTER <=> SLAVE
У каждой партиции есть лидер (брокер, который работает с клиентами: принимает и отдаёт сообщения).
К лидеру обращаются 0…n фоловеров (брокеры, хранящие реплику данной партиции).
Чтобы узнать кто лидер, клиент запрашивает у брокера метаданные.

Принимая сообщение от продюсера, узел реплицирует (копирует) его, а копии сохраняет на разных узлах. При этом один из узлов назначается лидером секции, через него потребители будут обращаться к записям. Другие брокеры остаются ведомыми, их главная задача — обеспечить сохранность сообщения (его копий) даже при выходе одного или нескольких узлов из строя.