rx java-Apache Flink和RxJava的使用


0

我目前正在使用apacheflink,并在其内部使用RxJava,我的问题是:使用这两种方法是否合适?因为我的flink操作总是 map函数,在它们里面我使用了大量的Rx,比如从flink获取元组并用它们进行异步操作(转到DB,写入队列等等),但是我没有使用flink公开给我的大多数方法,我的程序步骤在Rxjava处理结束时返回json。

你能告诉我这是flink的正确用法还是有更好的方法来做我需要做的事情吗。(比如使用它,但是在两个台阶之间传递观察值或者类似的东西)。

谢谢。

2 答案


0

Flink有强大的工具来处理状态(例如在windows中)[1,2],这使得避免调用其他系统成为可能。例如,您可以在Flink中使用( checkpoints)KeyValueState,而不是在外部 key值存储中处理状态。处理Flink内部的状态通常比调用外部系统/数据库更有效/更快。

Flink程序中异步调用的一个问题可能是Flink比被调用的系统快,这会导致打开未来的数量增加,最终导致内存问题。因此,我认为,一般建议在Flink操作符内部使用同步调用,以将Flink降低到被调用系统的速度,以避免内存泄漏。

邮件列表最近讨论了最后一点:http://mail archives.apache.org/mod_mbox/flink user/201606.mbox/%3CCALrNVjVw=iu7PB76VmKk+BD6rDXfSDwxpMrtzk8=L5d8xE-o8Q@mail.gmail.com%3E

[1]https://ci.apache.org/projects/flink/flink-docs-release-1.0/api/streaming/windows.html


0

当前的答案仍然是尽可能地将状态保持在Flink内,不过如果您仍然需要访问外部系统,则可以使用performant异步I/O方法。异步操作符与Flink的生命周期挂钩,管理并发异步请求的数量,希望能够控制内存问题。


我来回答

写文章

提问题

面试题