Перейти к основному содержимому
Нормативная версия документации - английская

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

Журнал

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

Продюсер дописывает записи в партиции одной темы, а каждая из двух групп консьюмеров читает всю темуТема ordersГруппа billingГруппа auditПродюсерключ выбирает партициюP0012345P10123P201234Участник 1: P0, P1Участник 2: P2Участник 1:P0, P1, P2Каждая группа фиксирует своё смещение на партицию:запись, с которой она продолжит
Схема текстом
  1. Тема orders: P0; 0; 1; 2; 3; 4; 5; P1; 0; 1; 2; 3; P2; 0; 1; 2; 3; 4
  2. Группа billing: Участник 1: P0, P1; Участник 2: P2
  3. Группа audit: Участник 1: P0, P1, P2
  4. Продюсер ключ выбирает партицию → Тема orders: дописывает
  5. Тема orders → Группа billing: читает каждую запись
  6. Тема orders → Группа audit: читает каждую запись
  7. Каждая группа фиксирует своё смещение на партицию: запись, с которой она продолжит

Продюсер дописывает запись в одну партицию темы. Запись с ключом попадает в партицию, на которую указывает хеш ключа, поэтому записи одного ключа сохраняют порядок. Запись без ключа попадает туда, куда её направит партиционер продюсера.

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

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

То, что группа прочитала, - это одно число на партицию: её зафиксированное смещение, запись, с которой группа продолжит. Подтверждений по отдельным записям Kafka не хранит.

Эта модель взята у самой Apache Kafka (понятия и термины). Как группа делит свои партиции, показывает страница Группы, а как клиент читает и фиксирует смещения, - страница Консьюмер.