1. What is Kafka?1. Что такое Kafka?
Kafka is a system for moving streams of messages between programs, reliably and at huge scale. One side writes messages (events), the other side reads them — and Kafka keeps every message safely in the middle for a while, in order.
Kafka — это система для передачи потоков сообщений между программами, надёжно и на огромном масштабе. Одна сторона пишет сообщения (события), другая читает — а Kafka надёжно хранит каждое сообщение посередине какое-то время и по порядку.
2. The big idea: an append-only log2. Главная идея: лог только на дозапись
Most databases let you change rows in place. Kafka is different: it's a log. New messages are only ever added to the end, never edited. Each reader remembers how far it has read and moves forward at its own pace.
Большинство баз позволяют менять строки на месте. Kafka устроена иначе: это лог. Новые сообщения только дописываются в конец, их не редактируют. Каждый читатель помнит, до какого места он дочитал, и двигается вперёд в своём темпе.
3. Topics, partitions, offsets3. Топики, партиции, оффсеты
- A topic is a named stream — like a channel. E.g.
ordersorclicks. - Each topic is split into partitions — separate parallel lanes of the same topic. More partitions = more readers can work at once.
- An offset is just the position number of a message inside its partition (like a line number). Readers track their offset to know where they are.
- Топик — именованный поток, как канал. Например
ordersилиclicks. - Каждый топик делится на партиции — отдельные параллельные «дорожки» одного топика. Больше партиций = больше читателей работают одновременно.
- Оффсет — просто номер позиции сообщения внутри его партиции (как номер строки). Читатели хранят свой оффсет, чтобы знать, где они.
4. Producers, consumers & consumer groups4. Продюсеры, консьюмеры и группы консьюмеров
- A producer writes messages into a topic.
- A consumer reads them.
- A consumer group is a team of consumers sharing the work: Kafka gives each partition to one member of the team, so they read in parallel without stepping on each other.
- Продюсер пишет сообщения в топик.
- Консьюмер их читает.
- Группа консьюмеров — команда консьюмеров, делящая работу: Kafka отдаёт каждую партицию одному члену команды, чтобы они читали параллельно, не мешая друг другу.
5. "It might arrive twice" — duplicates5. «Может прийти дважды» — дубли
Networks are unreliable, so to avoid losing a message Kafka prefers to retry until it's sure the message was received. A side effect: sometimes a message is delivered more than once. There are three levels:
Сети ненадёжны, поэтому чтобы не потерять сообщение, Kafka предпочитает повторять, пока не убедится, что оно получено. Побочный эффект: иногда сообщение доставляется больше одного раза. Есть три уровня:
| Level | Meaning | Risk |
|---|---|---|
| At-most-once | Send and forget, no retry | Can lose messages |
| At-least-once (common) | Retry until confirmed | Can get duplicates |
| Exactly-once | No loss and no duplicates | More cost & complexity |
| Уровень | Смысл | Риск |
|---|---|---|
| At-most-once | Отправил и забыл, без повторов | Можно потерять сообщения |
| At-least-once (частый) | Повтор до подтверждения | Можно получить дубли |
| Exactly-once | Без потерь и без дублей | Дороже и сложнее |
6. How Kafka avoids losing data6. Как Kafka не теряет данные
Kafka runs on several servers called brokers. Each partition is copied onto a few brokers (this is replication). One copy is the "leader" that handles reads/writes; the others stay in sync as backups. If a broker dies, a backup copy takes over — no data lost.
Kafka работает на нескольких серверах — брокерах. Каждая партиция копируется на несколько брокеров (это репликация). Одна копия — «лидер», она обслуживает чтение/запись; остальные держатся в синхроне как резерв. Если брокер умирает, резервная копия берёт управление — данные не теряются.
A producer can also choose how careful to be with acks: wait for all copies to confirm (safest) or just the leader (faster, riskier).
Продюсер также выбирает, насколько осторожным быть, через acks: ждать подтверждения всех копий (надёжнее) или только лидера (быстрее, рискованнее).
7. Why teams use Kafka7. Зачем команды используют Kafka
- Decoupling: producers don't need to know who reads the data. Add new consumers anytime without touching producers.
- Absorbing spikes: if a sudden flood of events arrives, Kafka holds them and consumers drain at their own pace — instead of crashing.
- Replay: because it's a stored log, you can reprocess history (e.g. after fixing a bug) by re-reading from an earlier offset.
- Scale: partitions let many machines share the load — millions of messages per second.
- Развязка: продюсерам не нужно знать, кто читает данные. Новых консьюмеров можно добавлять в любой момент, не трогая продюсеров.
- Гашение всплесков: если внезапно нахлынул поток событий, Kafka держит их, а консьюмеры разбирают в своём темпе — вместо падения.
- Перечитка: раз это хранимый лог, можно переобработать историю (например, после фикса бага), перечитав с более раннего оффсета.
- Масштаб: партиции позволяют многим машинам делить нагрузку — миллионы сообщений в секунду.
8. Mini-glossary8. Мини-словарь
| Word | Plain meaning |
|---|---|
| Broker | One Kafka server. |
| Topic | A named stream / channel of messages. |
| Partition | A parallel lane of a topic; ordering holds only inside one. |
| Offset | A message's position number in a partition. |
| Producer / Consumer | Writer / reader of messages. |
| Consumer group | A team of consumers splitting the partitions. |
| Replication | Copies of a partition on other brokers, for safety. |
| Retention | How long messages are kept before deletion. |
| Idempotency | Processing the same message twice is safe. |
| Слово | Простой смысл |
|---|---|
| Брокер | Один сервер Kafka. |
| Топик | Именованный поток / канал сообщений. |
| Партиция | Параллельная дорожка топика; порядок держится только внутри одной. |
| Оффсет | Номер позиции сообщения в партиции. |
| Продюсер / Консьюмер | Писатель / читатель сообщений. |
| Группа консьюмеров | Команда консьюмеров, делящая партиции. |
| Репликация | Копии партиции на других брокерах ради сохранности. |
| Retention | Сколько хранятся сообщения до удаления. |
| Идемпотентность | Обработать одно сообщение дважды — безопасно. |
9. Quick self-check9. Быстрая самопроверка
Answer in your head, then tap to flip.Ответь про себя, потом нажми, чтобы перевернуть.
acks).Каждая партиция реплицирована на несколько брокеров. Если брокер с лидер-копией умирает, синхронная резервная копия берёт управление. Данные не теряются (при безопасных acks).