Akka Streams - это библиотека, реализующая спецификацию реактивных потоков .
Apache Flink - потоковый движок.
Основное различие высокого уровня заключается в том, что в Apache Flink вы создаете работу, кодируя один из API-интерфейсов Flink, и отправляете эту работу в Apache Flink кластер. Именно кластер Apache Flink выполняет задание обработки потока. Используя Akka Streams , вы создаете отдельное приложение. В этом смысле Akka Streams является более легким из этих двух.
Вы все еще можете распространять приложение Akka Streams , используя StreamRefs , хотя вам нужно сделать это явно в коде и запустить Akka Cluster . Apache Flink уже управляет кластером, поэтому вам не нужно делать это явно в вашем коде (хотя вам все еще нужно настроить и запустить кластер, чтобы отправлять задания). Apache Flink имеет встроенные умные способности, позволяющие выполнять работу и выполнять ее оптимальным образом. Распараллеливание / распределение выполнения , когда это возможно . Вы не получите этого с Akka Streams .
Apache Flink Потоковая обработка предназначена для достижения end2end ровно после обработки семантики в лицо неудач. В Akka Streams такая гарантия должна быть явно реализована в вашем коде.
Akka Streams , поскольку реализация спецификации реактивных потоков полностью связана с асинхронной и связанной с памятью обработкой. Akka HTTP , например, построен поверх Akka Streams и в результате реализует очень эффективную и легкую клиентскую и серверную стороны протокола HTTP.
Akka Streams реализует асинхронное неблокирующее противодавление (согласно спецификации реактивных потоков), чтобы гарантировать ограниченность памяти во время выполнения. Apache Flink также имеет механизм противодавления , хотя он не реализован таким же образом.
Akka Streams , поскольку реализация спецификации реактивных потоков может взаимодействовать с другими реализациями, такими как Rx Java или Project Reactor . Apache Flink не является частью какого-либо более широкого стандарта.
Я бы сказал, что основными причинами go для Apache Flink являются как раз однажды гарантированные и автоматические рассылки, которые идут с ним. В противном случае Akka Streams - это очень мощный API с более простой моделью исполнения.
РЕДАКТИРОВАТЬ: Вероятно, стоит упомянуть проект Alpakka , который привносит множество технологий в Akka Streams , чтобы их можно было подключить к обработке на основе реактивных потоков.