用于无状态处理的flink

khbbv19g  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(377)

我是flink的新手,我们的用例处理的是无状态计算。读取事件、处理事件并持久化到数据库中。但是flink文档从来没有提到无状态处理。任何示例存储库都可以查找无状态的示例或文档。
最后,对于这个用例,哪个flink模型有效?流应用程序或事件驱动应用程序。

zed5wv10

zed5wv101#

文档中非常强调有状态流处理,因为社区很自豪地创建了一个高性能、容错的流处理器,即使在大规模操作有状态管道时也能提供一次准确的保证。但是你当然可以很好的利用flink而不用state。
然而,真正的无状态应用程序很少。即使在应用程序不执行任何明显有状态的操作(如窗口或模式匹配)的情况下,状态也需要提供一次准确的容错语义。flink可以确保每个传入事件只在sink中保留一次,但这样做需要flink的源和sink保持状态,并且必须检查该状态(并在失败后恢复)。这一切都是透明处理的,除了您需要启用和配置检查点之外,假设您只关心一次保证。
flink文档包括一个关于数据管道和etl的教程,其中包括一些示例和一个练习(https://github.com/apache/flink-training/tree/master/ride-cleansing)无国籍的。
flink有三个主要API:
datastreamapi:这个低级api功能非常强大,但是这里列出的其他api在某些用例中具有强大的优势。文档中的教程是一个很好的起点。另请参见https://training.ververica.com/.
flinksql和表api:这特别适合etl和分析工作负载。https://github.com/ververica/sql-training 这是一个很好的起点。
有状态函数api:这个api提供了一组不同的抽象,以及一个支持各种sdk的云本地、语言无关的运行时。对于事件驱动的应用程序来说,这是一个很好的选择。https://flink.apache.org/stateful-functions.html 以及https://github.com/ververica/flink-statefun-workshop 是一个很好的起点。

相关问题