Flink Asynchronous I/O for External Data Access

该翻译原文来之flink官网asyncio.html

用于外部数据访问的异步I/O

本页面解释了如何使用Flink的API对具有外部数据存储的异步I/O进行操作。对于不熟悉异步或事件驱动编程的用户,一篇关于Futures和事件驱动编程的文章可能是有用的准备。

注意:关于异步I/O实用程序的设计和实现的详细信息可以在建议和设计文档FLIP-12: Asynchronous I/O Design and Implementation中找到。

异步I/O操作的需要

当与外部系统交互时(例如,当使用存储在数据库中的数据丰富流事件时),需要注意与外部系统的通信延迟不会流应用程序的全部工作。
天真地访问外部数据库中的数据,例如在MapFunction中,通常意味着同步交互:一个请求被发送到数据库,MapFunction等待,直到收到响应。在许多情况下,这种等待占据了函数的绝大部分时间。
与数据库的异步交互意味着一个并行函数实例可以同时处理多个请求并同时接收响应。这样,等待时间就可以被发送其他请求和接收响应所覆盖。至少,等待时间是在多个请求上平摊的。在大多数情况下,这将导致更高的流吞吐量。在这里插入图片描述
注:改进吞吐量仅仅改变MapFunction非常高并行度在某些情况下是可能的,但通常意味着非常高的资源成本:有更多的并行MapFunction实例意味着更多的任务,线程,Flink-internal网络连接,网络连接到数据库,缓冲区,和一般内部记帐开销。

预备知识

如上一节所示,对数据库(或键/值存储)实现适当的异步I/O需要客户端到支持异步请求的数据库。许多流行的数据库都提供这样的客户端。
在没有此类客户端的情况下,可以通过创建多个客户端并使用线程池处理同步调用,尝试将同步客户端转换为有限的并发客户端。然而,这种方法通常比适当的异步客户端效率要低。

异步I / O API

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值