在为我得到的项目选择其中一个之前,我正在学习和评估sparks和Flink。
在我的评估中,我提出了以下简单的任务,我可以弄清楚如何在这两个框架中实现它。
假设
1-/我有一个事件流,这些事件只是关于数据库中某个项目发生了更改的信息。
2-/I需要为每个事件查询数据库以获得新版本的项目
3-/应用一些转换
4-/连接到另一个Db并写入结果。
我的问题如下:
使用Flink或Sparks,如何确保对dbs的调用是异步处理的,以避免线程饥饿?
我来自scala/Akka,在那里,我们通常避免进行阻塞调用,并在这种情况下使用future。Akka流允许流处理的精细细节级别,例如将流与外部服务集成。这样可以避免线程不足。当我在io操作中等待时,线程可以用于其他操作。
简而言之,我不知道如何在这两个框架中处理期货。
所以我相信这两个框架都可以复制。
有人能解释一下在Flink或sparks中应该如何处理这件事吗。
如果这不是开箱即用的支持,有没有人有以某种方式将其纳入其中的经验。
从Flink的1.2.0版本开始,您现在可以使用Async I/O API来实现这一点。