Flink для обработки без сохранения состояния

Я новичок в flink, и наш вариант использования связан с вычислениями без сохранения состояния. Чтение события, обработка события и сохранение в базе данных. Но в документации Flink никогда не говорится об обработке без сохранения состояния. Любой репозиторий примеров, чтобы найти примеры или документацию без сохранения состояния.

Наконец, для этого случая использования какая модель Flink работает? потоковое приложение или приложение, управляемое событиями.


person Forece85    schedule 09.12.2020    source источник


Ответы (1)


В документах делается сильный акцент на потоковой обработке с отслеживанием состояния, потому что сообщество гордится тем, что создало высокопроизводительный, отказоустойчивый потоковый процессор, который гарантирует ровно один раз даже при работе с конвейерами с отслеживанием состояния в больших масштабах. Но вы, безусловно, можете эффективно использовать Flink без использования состояния.

Однако приложения без сохранения состояния встречаются редко. Даже в тех случаях, когда приложение не делает ничего явно зависящего от состояния (например, управление окнами или сопоставление с образцом), состояние требуется для однократной доставки отказоустойчивой семантики. Flink может гарантировать, что каждое входящее событие сохраняется только один раз в приемнике (приемниках), но для этого требуется, чтобы источники и приемники Flink сохраняли состояние, и это состояние должно быть проверено (и восстановлено после сбоев). Все это обрабатывается прозрачно, за исключением того, что вам нужно включить и настроить контрольные точки, предполагая, что вы заботитесь о гарантиях ровно один раз.

Документация Flink включает руководство по конвейерам данных и ETL, который включает несколько примеров и упражнение (https://github.com/apache/flink-training/tree/master/ride-cleansing), которые не имеют состояния.

Flink имеет три основных API:

  • API DataStream: этот низкоуровневый API очень функционален, но другие перечисленные здесь API имеют значительные преимущества в некоторых случаях использования. руководства в документации помогут отправная точка. См. также https://training.ververica.com/.

  • Flink SQL и Table API: это особенно хорошо подходит для рабочих нагрузок ETL и аналитики. https://github.com/ververica/sql-training — хорошая отправная точка.

  • Stateful Functions API: этот API предлагает другой набор абстракций и облачную среду выполнения, не зависящую от языка, которая поддерживает различные SDK. Это хороший выбор для приложений, управляемых событиями. https://flink.apache.org/stateful-functions.html и https://github.com/ververica/flink-statefun-workshop являются хорошей отправной точкой.

person David Anderson    schedule 09.12.2020
comment
Спасибо @Дэвид Андерсон. Где я могу получить сведения о приложениях Flink Streaming и Flink Event-Driven? Наш вариант использования не может быть удовлетворен SQL. Это связано с тяжелыми вычислениями. Любые предложения будут действительно полезны. - person Forece85; 09.12.2020
comment
Не зная больше о требованиях вашего варианта использования, я не знаю, что предложить. - person David Anderson; 09.12.2020
comment
Что бы это ни стоило, я не понимаю, почему тяжелые вычисления исключают Flink SQL. Конвейеры, построенные с помощью SQL, могут быть очень производительными. - person David Anderson; 09.12.2020
comment
Ссылка на конвейеры данных и ETL больше не работает, используйте эту ci.apache.org/projects/flink/flink-docs-release-1.13/docs/ - person Muhammad Faizan Fareed; 24.07.2021