文章目录
一、异步I/O概述
Flink流计算系统中经常需要与外部系统进行交互,比如需要查询外部数据库以关联上用户的额外信息。通常,我们的实现方式是向数据库发送用户a的查询请求(例如在MapFunction中,同步方式访问),然后等待结果返回,在这之前,我们无法发送用户b的查询请求
Flink Async I/O允许用户在数据流中使用支持异步访问的客户端(如果数据库没有可以自行封装,例如自己实现一个Runnable,run()方法最后调用#asyncInvoke()提供的resultFuture返回结果),AsyncWaitOperator会处理与数据流的交互,同时在处理顺序、事件时间、容错有相应的实现,能够提升访问数据库的并发度和流计算系统并行处理性能
本文主要介绍异步I/O在Flink源码层的实现,关于异步I/O应用层原理,推荐阅读Flink(1.9.0)官方文档,里面介绍得比较详细:Asynchronous I/O for External Data Access ,也有一些翻译文章Flink学习笔记:异步I/O访问外部数据,对应Github代码示例在

本文深入探讨Flink流计算中异步I/O的实现,通过AsyncWaitOperator提升数据库访问并发度和系统性能。介绍如何创建AsyncWaitOperator,包括自定义UserAsyncFunction和调用AsyncDataStream的API。同时,分析了有序队列与无序队列在Flink异步I/O中的应用。
最低0.47元/天 解锁文章
2573

被折叠的 条评论
为什么被折叠?



