четверг, 11 апреля 2019 г.

По следам мануала: Kafka

Решил  пройтись по мануалу по настройке Kafka, попробовав решив по сути хелловорлдную задачу: сделать передачу сообщений по сети, между двумя нодами (Windows 10  и Ubuntu 18.10).

Надо сказать, что дефолтный мануал по быстрому старту у Кафки очень даже хорош, в сравнении с тем же RabbitMQ, где надо осиливать кучу страниц, потом долго думать, что и как будет работать.


В принципе, всё относительно просто, для базовой настройки достаточно всем брокерам в *.properties (помимо стандартных настроек брокера) прописать строку 


zookeeper.connect=<адрес ноды zookeeper>


И всё будет работать. Да-да, помимо самой кафки, по-любому надо запускать Zookeeper, без него, Kafka не работает.

Теперь о некоторых граблях. Например, при настройке есть нюансы, такие как брокеров Kafka и серверов Zookeeper должно быть нечётное количество (т.е. в моём случае, минимум 3) для того, чтобы работали алгоритмы кворума и устойчивости к сбоям. Подробнее об этом рассказывается здесь. Я, по наивности, запустил зачем-то два брокера и, само собой, получил проблемы.

Также у кафки есть проблемы с удалением topics под Windows, например вот такая. Есть вроде бы как pull-request, который фиксит проблему, но в моём случае оказалось проще пересобрать кластер, чем чинить это. В проде, впрочем я бы, наверное, просто не стал бы удалять topic, а просто перестал использовать его, ибо при попытке запустить сервер ещё раз, он начал тупо падать. Проблема решилась только удалением всех логов и пересборкой кластера.

Ещё один раз упал демон и оставил открытым сокет. Само собой, потом он не захотел запускаться. Мелочь, но  немного неприятно.

В остальном настраивать Kafka - одно удовольствие. Портов надо открывать совсем немного , документация по классам для обмена - тоже отличная, можно даже поставить в пример.


Комментариев нет:

Отправить комментарий