Комментарии 8
Очень полезная статья, спасибо!
Большое спасибо. Особенно, за картинки.
Спасибо за статью. А что по времени? Сколько времени занимает ребалансировка?
Наверное тут сложно однозначно ответить, так как зависит от кучи факторов: Мощностей брокера, количества активных партиций, как быстро происходит обработка сообщений, как быстро новые поды ackают запросы на вхождение в группу, сам алгоритм партишн асаймента. На практике скажу что в более менее активном топики это происходит достаточно быстро, в пределах 10 секунд. Думаю точное число можно узнать только эмпирически :)
соглашусь с @Derfirm. По времени занимает по разному, в зависимости от среды, ресурсов, числа консьюмеров, протокола, числа топиков, партиций и т.д. Тут надо сравнивать в одной и то же среде разные протоколы и разные сценарии. Например, eager vs coop-sticky и добавление/удаление n-консьюмеров.
Здравствуйте, очень глубокий материал, большое спасибо:) Из хороший новостей - большинство описанной работы не нужно кодить самостоятельно, благо большое количество библиотек, фреймворков уже написано/портировано на практически любой язык. И вот отсюда вопрос, какой фреймворк/язык наиболее комфортный и какой посоветуете?
В этом вы правы. Для кафки очень много клиентских библиотек, где все описанное реализовано и доступно через удобные абстракции. Но всё таки, при работе с какой-то технологией, при решении каких-то особых задач, рано или поздно приходится выходить за рамки абстракций и погружаться в тонкости. Да и вообще, в целом хорошо понимать как-что работает, даже если реализовывать не придется. Надеюсь, что в этом моя статья будет полезна.
Конкретно я пишу на c#/.net. Для .net толковая библиотека - confluent.kafka.net (правда сейчас мы мигрируем на прослойку поверх grpc - об этом есть статья в блоге Озона). Conflient.kafka.net - библиотека вокруг неуправляемого кода (поверх librd) и у нее есть свои приколы и проблемы (удивляюсь, почему до сих пор нет достойной родной библиотеки).
Посоветовать язык сложно - зависит же от круга решаемых задач. Для микросервисной разработки c# весьма хорош. Мощный, выразительный, мультипарадигменный язык. С широким спектром и поддержкой фреймворков и инструментов.
Kafka: ребалансировка изнутри