TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 309 subscribers
Post #115 113
🙏 Kafka #5: Сегменты и индексы. Как брокер указывает консьюмеру на своё место?

Кажись у меня появилась энергия даже на такую душную тему, как кафка.

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

🚸 Начнем с того, что кафка работает по TCP и использует свой бинарный протокол. Как он работает?

1️⃣ Когда консьюмер подключается к брокеру, он посылает в него запрос на поиск нужного оффсета: void seek(TopicPartition, offset). Есть еще seekToBeginning или seekToEnd, они работают почти так же, только ищут по времени, а не по оффсету.
2️⃣ Брокер находит нужный оффсет.
3️⃣ Консьюмер вызывает метод poll(timeout) и начинает консьюмить.
(Пояснительный дикпик 1)

🅰️ Как брокер быстро находит нужный оффсет? Понятное дело по индексу. Обычно индекс кажется загадочной структурой, которая магически ускоряет всё в этой жизни, но на деле это тупо файл.

Мне проще разбирать штуки на конкретных примерах, поэтому представим, что нам пришел запрос seek() с параметрами TopicPartition = "configured-topic-0" и offset = 1.
 
1️⃣ Сначала по имени партиции находим нужную папку.
2️⃣ Потом в нужной папке находим файл с индексом.
3️⃣ В файле индекса находим нужный offset.
4️⃣ В файле сегмента находим нужное сообщение по offset.
(Пояснительный дикпик 2)

Так и работают индексы в кафке. Индексы по времени устроены так же, только мы лезем в файл с расширением .timeindex.

Мне было прикольно во всем этом разобраться, но возможно я где-то накосячил. Так что не стесняйтесь в комментариях или личке писать мне всякие критические доводы по этому посту. А в следующий раз я думаю разобрать механизмы реплицирования топиков.
#kafka
  • 🔥 1
More from @dimasshortposts
  1. Oct 2, 2026s
  2. Oct 2, 2026Post #503
  3. Sep 30, 2026🛤 Путь до Tier1: от чего он зависит В прошлый раз мы гоняли hello world в цикле и увидели…
  4. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  5. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  6. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →