Kafka, в чем преимущество использования?
Пытаясь выбрать событийную интеграционную шину часто встречаю упоминание kafka. Поскольку интеграций у меня планируется не так много, самих потоков много, а вот сценариев интеграции два-три, то задался вопросом - Какие непосредственно преимущества дает kafka перед средствами встроенными в язык(например java)?
Ответы (1 шт):
Могу дать только приблизительный ответ.
Брокеры сообщений, или серверы очередей, применяются в достаточно крупных системах как средство уменьшения связности компонентов.
При этом отдельные части системы работают независимо, как правило, используя архитектуру pub-sub.
Это означает, что сервер очередей (не обязательно kafka, а, например, rabbitMQ) превращается в "шину данных", на которую некоторые из сервисов "посылают" сообщения, а другие сервисы их "принимают".
Это даёт определенную гибкость: пускай сервис, "посылающий" сообщения - отлажен и вылизан до идеального состояния, тогда можно спокойно заниматься тем сервисом (или, чаще сервисамИ), которые получают и обрабатывают сообщения.
И со всеми ними можно работать независимо: серверы сообщений, фактически, просто гоняют потоки байтов. Поэтому сервисы, которые используют их как общую шину, могут быть написаны на разных языках и могут располагаться в различных локациях (датацентрах и т.п.).
Дальнейшие преимущества архитектуры с серверами очередей заключаются в отказоустойчивости: как правило, kafka "не ходит одна" - а есть целый кластер kaf'ок, который продолжит работать, даже если один из них "свалился" или "выпал из сети".
Дальше можно было бы поговорить об отличиях kafka от других серверов очередей, но так как вопрос в этом не заключается - я просто оставлю здесь две ссылки на обзорные статьи.
Надеюсь, после моего ответа у Вас будет больше аргументов для выбора того или иного решения.