Topic в Kafka — это именованный поток сообщений, по сути распределённый журнал, в который продюсеры записывают события, а консьюмеры их читают.
Topic разбивается на партиции для масштабирования и отказоустойчивости, при этом порядок сообщений гарантируется внутри каждой партиции.
В Apache Kafka topic — это логический канал или поток сообщений (журнал), к которому привязываются продюсеры и консьюмеры по его имени. Продюсеры публикуют сообщения в конкретный topic, а консьюмеры независимо друг от друга читают из него данные, не мешая друг другу.
Внутри каждый topic физически разбивается на партиции — упорядоченные, только дописываемые логи. Это даёт две ключевые вещи:
offset), но не между разными партициями.Для отказоустойчивости партиции реплицируются на несколько брокеров (параметр replication.factor). Есть лидер‑реплика, в которую ведётся запись, и фолловеры, которые её копируют; при падении лидера один из фолловеров становится новым лидером.
Сообщения в topic неизменяемы: их можно только добавлять, но не переписывать. Kafka хранит их до истечения политики ретенции (например, по времени или размеру), либо по правилу лог‑компакции — когда для каждого ключа в topic оставляется только последнее значение.
Консьюмеры читают topic, двигаясь по offset в каждой партиции. В рамках одной consumer group партиции распределяются между инстансами консьюмера — так достигается параллельное чтение при сохранении порядка внутри партиции.
На практике topic — это основной строительный блок интеграции в Kafka: сервисы публикуют доменные события в свои topics (например, orders, payments), а другие сервисы подписываются на них, оставаясь слабо связаны между собой.
Отметьте свой прогресс