Уже несколько лет мы используем ActiveMQ (Artemis) довольно хорошо. Недавно мы подумали о том, чтобы исследовать Kafka вместо ActiveMQ для повышения пропускной способности. Наш опыт был смешанным. Мы запускаем оба приложения на машинах Linux.
- По сравнению с ActiveMQ мы поняли, что Kafka требует больше инфраструктуры (выделенных виртуальных машин), тогда как ActiveMQ может работать вместе с другими приложениями в коробке. Кафка внезапно рухнул через несколько дней, если мы попытаемся запустить его вместе с другими приложениями. Почему это происходит?
- Кафке требуется гораздо больше памяти, чем ActiveMQ. Несколько раз после сбоя мы обнаружили, что это происходит из-за OutofMemoryError в Kafka (тогда как ActiveMQ работал очень хорошо на той же машине)
- На наших производственных серверах ActiveMQ работал на одном узле, тогда как для Kafka кластеризациятребуется.
- Кафка не имеет встроенного интерфейса. Да, мы можем получить другие инструменты, такие как Kafdrop.
- Kafka также требуется один узел / кластер Zookeeper.
В целом, мы обнаружили, что Kafka требует дорогостоящей инфраструктуры и инструментов мониторинга. Но я знаю, что Kafka используется многими великими компаниями.
Я хотел бы знать, почему Kafka часто падает с ошибкой памяти. Что-то не так с нашей настройкой? Пожалуйста, поделитесь своими мыслями.