Apache Apex против Apache Flink
Так как обе являются потоковыми средами, которые обрабатывают события одновременно, каковы основные архитектурные различия между этими двумя технологиями / потоковой средой?
Кроме того, каковы некоторые конкретные случаи использования, когда один является более подходящим, чем другой?
1 ответ
Как вы упомянули, обе являются потоковой платформой для вычислений в памяти в реальном времени. Но есть некоторые архитектурные различия, когда вы смотрите поближе.
- Apex - это нативная архитектура пряжи, она полностью использует пряжу для планирования, безопасности и многопользовательской аренды, когда Flink интегрируется с пряжей. Apex может распределять ресурсы на уровне оператора (контейнера) с помощью пряжи.
- Разделение: Apex поддерживает несколько сложных схем разделения потока, а также позволяет контролировать местоположение оператора и местоположение потока. Flink поддерживает простые хеш-разделы и пользовательские разделы.
- Apex позволяет динамически изменять топологию, не отключая приложение. Apex позволяет обновлять приложение во время выполнения, чтобы вы могли добавлять и удалять операторы, обновлять свойства операторов или автоматически масштабировать приложение во время выполнения. Apache Flink не поддерживает ни одну из этих возможностей.
- Буферный сервер: между операторами существует шина сообщений, называемая буферным сервером. Абоненты могут подключаться к серверу буфера и получать данные из определенных смещений. Это окно поддерживает данные и хранит данные до тех пор, пока они не нужны ни одному подписчику.
- Отказоустойчивость: Apex имеет модель инкрементного восстановления, при сбое он может перезапустить только часть топологии, не нужно возвращаться к источнику, где в мгновение ока возвращается к источнику.
- Апекс имеет высокий уровень API, а также низкий уровень API. Flink только имеет высокий уровень API.
- У Apex есть библиотека под названием Apache Malhar, в которой есть множество проверенных коннекторов и операторов обработки, которые можно легко использовать повторно.
- Наконец, Apex больше ориентирован на производство приложений для больших данных, поэтому обладает множеством функций, которые помогут в простой разработке и обслуживании приложений.
Примечание: я являюсь приверженцем Apache Apex, поэтому я могу быть предвзятым к Apex:)