Каковы преимущества и недостатки Кафки перед Apache Pulsar
Yahoo разработала Pulsar, систему обмена сообщениями в пабе и сделала ее открытой. Теперь это инкубационный проект Apache. Поскольку Кафка также используется для той же цели. Хочу узнать, основные плюсы и минусы у Кафки над Пульсаром.
4 ответа
В последнее время я немного поиграл с обоими, и вот что я собрал.
Нейтральные:
- Я собирался сделать так, чтобы Кафка победил в сообществе / документации и т. Д. Но я не мог легко найти ответы на вопросы, которые у меня были по Кафке, некоторые были старыми и запутанными (нацелены на устаревший API). Но документация Pulsar достаточно хороша, разработчики очень отзывчивы на Slack (привет @Matteo Merli:)), и базовые части (Zookeeper, Bookkeeper) также имеют приличную документацию, если вы захотите погрузиться во внутренности.
- Кафка стремится к высокой пропускной способности, Пульсар - к низкой задержке. Оба предоставляют настройки для управления им.
- Оба готовы к производству и проверены в бою в нескольких компаниях
Про пульсар:
- из моего опыта API проще в использовании. В Кафке брокер тупой, а потребители выполняют работу по структурированию коммуникаций так, как они считают нужным. Эта гибкость достигается за счет того, что пользователь Kafka должен понимать, как соединить детали друг с другом. Я предполагаю, что предполагаемая выгода - увеличенная гибкость, но так как Pulsar смог воспроизвести API-интерфейс Kafka Consumers (и с довольно небольшим кодом), я даю это в качестве профессионала Pulsar.
- Вы можете делать вещи, которые нелегко сделать (или, возможно, невозможно в Kafka): мультитенантность (безопасность, изоляция...), управление ресурсами (регулирование тем, квоты), гео-репликация
- У него есть некоторые функции, которых в настоящее время нет у Kafka, например, поиск определенного MessageId
- Пульсар масштабируется до миллионов тем, а Кафка ограничена тем, как она структурирует данные в Zookeeper.
- Более простое развертывание. Автономный Pulsar запустит свой собственный локальный Zookeeper, и я лично обнаружил, что конфигурация легче понять
- написанный на Java, в отличие от устаревшего кода Scala и Java. Кроме того, я обнаружил, что кодовая база хорошо организована и намного легче следовать. Частично потому, что он опирается на Zookeeper и Bookkeeper, которые являются внешними проектами с их собственной документацией / сообществом / разработчиками и т. Д. (Обратите внимание, они также находятся в основе Apache, а также от Yahoo, поэтому они хорошо работают вместе).
Про Кафку:
- Кафка имеет такие вещи, как Kafka Streams (никогда не использовал его, поэтому я не могу сказать, есть ли аналог)
Также прочитайте:
Очень странно, что этот вопрос был отвергнут, так как это законный вопрос, требующий сравнения 2 проектов потоковой передачи данных Apache
Apache Kafka более зрелый (он существует дольше) и имеет API более высокого уровня (т.е. KStreams). Это срок погашения, однако ограничивает текучесть и гибкость, т.е. ~500 открытых PR на GitHub
Apache Pulsar глубоко изучил проектные решения Apache Kafka и включил в него улучшенный дизайн и набор захватывающих возможностей, то есть идею тем пространств имен, и возможность применения ACL или квот на уровне пространства имен кажется таким глубоким благом Идея, чтобы обеспечить лучшую поддержку нескольких арендаторов. Некоторые другие интересные особенности Pulsar - это гео-репликация, а также объединение очереди и потоковой передачи.
Нам была нужна потоковая платформа с постоянными темами, разумной задержкой и высокой пропускной способностью. Недавно мы оценили, стоит ли нам идти с Кафкой или Пульсаром, и в отличие от @nha, мы теперь за Apache Kafka. Вот наши выводы:
Пульсар - Плюсы
- многофункциональный - постоянные / непостоянные темы, многопользовательская работа, списки ACL, репликация нескольких контроллеров и т. д.
- более гибкий клиентский API - включая CompletableFutures, свободные интерфейсы и т. д.
- Клиентские компоненты Java являются поточно-ориентированными - потребитель может подтверждать сообщения из разных потоков.
Пульсар - Минусы
- Java-клиент имеет мало или нет Javadoc
- небольшое сообщество - 8 вопросов на стеке
- Концепция messageId связана с BookKeeper - потребители не могут легко позиционировать себя в теме по сравнению со смещением Kafka, которое представляет собой непрерывную последовательность чисел.
- Читатель не может легко прочитать последнее сообщение в теме - нужно просмотреть все сообщения до конца.
- нет транзакций
- повышенная сложность работы - Zookeeper + брокерские узлы + BookKeeper - все кластеризовано
- задержка сомнительна - существует один дополнительный удаленный вызов между узлом брокера и BookKeeper (по сравнению с Kafka)
Кафка - Плюсы
- очень богатый и полезный Javadoc
- Потоки Кафки
- зрелое и широкое сообщество
- проще в работе - меньше компонентов - узел брокера также обеспечивает хранение
- транзакции - атомарное чтение и запись в темах
- смещения образуют непрерывную последовательность - потребитель может легко искать последнее сообщение
Кафка - Минусы
- потребитель не может подтвердить сообщение из другого потока
- нет многопользовательской
- нет надежной репликации Multi-DC - (предлагается в Confluent Enterprise)
У меня нет прямого сравнения по функциям, хотя мы писали несколько постов в блоге, иллюстрирующих некоторые преимущества Apache Pulsar.
Почему Апач Пульсар?
Гео-репликации
Pulsar, новейший проект Apache Software Foundation по достижению статуса верхнего уровня, проводит много сравнений с Kafka, другим проектом ASF.
Pulsar - это масштабируемая платформа обмена сообщениями с низкой задержкой, работающая на обычном оборудовании. Он обеспечивает простую семантику pub-sub и очереди по темам, облегченную вычислительную среду, автоматическое управление курсорами для подписчиков и репликацию между центрами обработки данных.
Между тем, в отчете Apache Kafka за 2018 год, в ходе которого было опрошено более 600 пользователей, были обнаружены конвейеры данных и обмен сообщениями в двух основных областях применения этой технологии. Это нашло все большее применение с ростом архитектуры микросервисов.
"Существуют большие совпадения в сценариях использования для двух систем, но первоначальный дизайн сильно отличался", - сказал Маттео Мерли, один из его создателей, который с тех пор создал Streamlio, стартап, предлагающий платформу для быстрой передачи данных.
Yahoo создала Pulsar как единую мультитенантную систему в качестве решения своих проблем с несколькими системами обмена сообщениями и несколькими группами, развертывающими их.
Он был выпущен как открытый исходный код в 2016 году и поступил в инкубатор ASF в июне 2017 года. В течение примерно четырех лет он использовался в приложениях Yahoo Mail, Finance, Sports, Gemini Ads и Sherpa, распределенной службе ключей-значений Yahoo.
В своем блоге соучредитель Сиджи Го подвел итог "Пульсар против Кафки" следующим образом:
"Apache Pulsar объединяет высокопроизводительную потоковую передачу (которую преследует Apache Kafka) и гибкую традиционную организацию очередей (которую преследует RabbitMQ) в единую модель обмена сообщениями и API. Pulsar предоставляет вам единую систему как для потоковой передачи, так и для организации очередей, с одинаково высокой производительностью и унифицированным API ".
Мерли сказал: "Есть различия между потоковой передачей и очередями; Есть много вариантов использования, когда вам нужен один или другой, но большинству людей нужны оба варианта для разных вариантов использования ".
Двухслойная архитектура Двухслойная конструкция - ключ к Pulsar, сказал Мерли. Существует слой посредников без сохранения состояния, которые получают и доставляют сообщения, и уровень сохраняемого состояния с набором узлов хранения Apache BookKeeper, называемых букмекерами, которые обеспечивают долговременное хранение с низкой задержкой.
По словам Мерли, Pulsar был основан на идее надежных гарантий данных. Он был рассчитан на совместное потребление, а Кафки не было. Кроме того, Pulsar позволяет пользователям настраивать срок хранения сообщений даже после их использования всеми подписками.
Его многоуровневая архитектура и сегментно-ориентированное хранилище обеспечивают ключевые преимущества:
Вы можете масштабировать брокеров или уровень хранилища независимо друг от друга. Поскольку брокеры не имеют статуса, тему можно быстро перенести на других брокеров. Это открывает эффективный способ сбалансировать трафик между брокерами. Может иметь несколько потребителей в одном разделе, и вы можете добавить столько, сколько хотите. Поскольку никакие данные не хранятся локально, это устраняет необходимость копировать данные раздела при расширении емкости и не требует повторной балансировки. Когда создается разделенная тема, Pulsar автоматически разбивает данные независимо от потребителей и производителей.
Посредник отправляет данные сообщения нескольким узлам BookKeeper, которые записывают данные в журнал опережающей записи, а также сохраняют копию в памяти. Перед тем как узел отправит подтверждение, журнал принудительно записывается в стабильное хранилище, что обеспечивает сохранение даже в случае потери питания. Разделы разделов могут масштабироваться до общей емкости всего кластера BookKeeper, и вы можете масштабировать кластер, просто добавляя узлы.
С момента входа в инкубатор основной упор был сделан на то, чтобы облегчить начало работы с Pulsar .
Версия 2.0 Pulsar была выпущена в июне, включая "потоковую" обработку, называемую Pulsar Functions, которая позволяет пользователям писать функции обработки данных на Java или Python для данных при их перемещении по конвейеру. Версия 2.2 будет выпущена в ближайшее время, которая будет включать интерактивные запросы SQL.
Pulsar предоставляет несколько привязок к языку и протоколу, включая Java, C++, Python и WebSockets, а также API-интерфейс, совместимый с Kafka.
Дополнительное чтение: Apache Pulsar: это KAFKA Killer?
Apache Pulsar: это убийца КАФКА? Автор Бхагван с. Soni
ПОЧЕМУ мы должны выбрать Apache Pulsar вместо Kafka?
Apache Pulsar - это корпоративная версия PubSub, изначально разработанная Yahoo и в настоящее время поддерживаемая Apache Software Foundation. Apache Pulsar работает на производственных системах более 3 лет и доказал свою стабильность.
Apache Pulsar охватывает почти все функции, которые предлагает нам Kafka, возможно, с разными именами. У Pulsar есть много особенностей, но я хотел бы выделить некоторые из них, которые помогут нам отличиться от Kafka -
1} Apache Pulsar предоставляет вам 3 типа подписки на тему: A} Эксклюзивно - только один потребитель будет использовать данные из темы B} Shared - несколько потребителей будут использовать данные из темы C} Failover - более одного потребителя, но в данный момент времени только один будет потреблять данные.
2} Каждое пространство имен может иметь одну или несколько тем
3} Сильная поддержка Multitanency
4} Репликация данных через несколько кластеров
5} Сильная поддержка долговечности сообщений от потери данных