Знаете ли вы, что более трети компаний из списка FORTUNE 500 используют Kafka в качестве единственной потоковой платформы?
Для тех, кто не знаком с Kafka, это система обмена сообщениями на основе публикации и подписки, которая является высокоэффективной, отказоустойчивой, масштабируемой и позволяет разработчикам проектировать и создавать распределенные приложения.
Как вы читаете, Kafka поддерживает такие сервисы, как Spotify, Slack, Uber, AirBnB, Twitter, LinkedIn и другие. Люди часто задаются вопросом: «В чем истинная ценность Кафки?» Что ж, я бы сказал, что небольшие фреймворки для обмена сообщениями приходят и уходят, но у Kafka определенно есть большой импульс.
Почему? Давайте проверим это!
Представление:
Kafka предлагает пропускную способность в миллионы сообщений в секунду с ограниченными ресурсами благодаря последовательному дисковому вводу-выводу. RabbitMQ также может соответствовать пропускной способности в миллион сообщений в секунду. Однако для этого требуются значительные ресурсы (более 30 узлов или около того).
Заказ сообщений:
Сообщения в Kafka управляются разделами. Таким образом, Kafka поддерживает упорядочение сообщений, которое решает и обеспечивает эффективность N отраслевых проблем.
Срок службы сообщения:
Там, где другие потоковые фреймворки построены на очередях, Kafka процветает на журналах. Это означает, что в очередях, как только вы используете сообщение, запись исчезает навсегда. Однако ваши сообщения всегда есть в журналах Kafka. При управлении экземплярами Producer & Consumer у вас есть возможность передать политику хранения сообщений, соответствующую вашему варианту использования.
Гарантия доставки:
Kafka предоставляет столь необходимую гарантию того, будут ли сообщения, содержащиеся в разделе, доставлены успешно или нет. RabbitMQ, ZeroMQ и другие популярные фреймворки для обмена сообщениями не гарантируют атомарность, даже если в транзакции задействована одна очередь.
При выборе между Kafka и RabbitMQ инженеры часто сталкиваются с дилеммой:
Kafka не является реализацией брокера сообщений. Но это сама по себе распределенная потоковая платформа. RabbitMQ — это классическая реализация брокера сообщений, в которой вы получаете очередь сообщений из коробки.
Kafka, с другой стороны, предоставляет API-интерфейсы потоковой передачи и позволяет обрабатывать потоки в режиме реального времени из различных источников данных, связанных вместе.
В следующем посте я углублюсь, реализую и сравню Kafka и RabbitMQ на предмет эффективности и сделаю вывод, что лучше подходит для отраслевых тестовых случаев.