本文講解 Flink 用于訪問外部數(shù)據(jù)存儲(chǔ)的異步 I/O API。對(duì)于不熟悉異步或者事件驅(qū)動(dòng)編程的用戶,建議先儲(chǔ)備一些關(guān)于 Future 和事件驅(qū)動(dòng)編程的知識(shí)。
本文代碼gitee地址:
https://gitee.com/ddxygq/BigDataTechnical/blob/main/Flink/src/main/java/operator/AsyncIODemo.java
對(duì)于異步 I/O 操作的需求
在與外部系統(tǒng)交互(用數(shù)據(jù)庫中的數(shù)據(jù)擴(kuò)充流數(shù)據(jù))的時(shí)候,需要考慮與外部系統(tǒng)的通信延遲對(duì)整個(gè)流處理應(yīng)用的影響。
簡單地訪問外部數(shù)據(jù)庫的數(shù)據(jù),比如使用 MapFunction,通常意味著同步交互:MapFunction 向數(shù)據(jù)庫發(fā)送一個(gè)請(qǐng)求然后一直等待,直到收到響應(yīng)。在許多情況下,等待占據(jù)了函數(shù)運(yùn)行的大部分時(shí)間。
與數(shù)據(jù)庫異步交互是指一個(gè)并行函數(shù)實(shí)例可以并發(fā)地處理多個(gè)請(qǐng)求和接收多個(gè)響應(yīng)。這樣,函數(shù)在等待的時(shí)間可以發(fā)送其他請(qǐng)求和接收其他響應(yīng)。至少等待的時(shí)間可以被多個(gè)請(qǐng)求攤分。大多數(shù)情況下,異步交互可以大幅度提高流處理的吞吐量。文章來源:http://www.zghlxwxcb.cn/news/detail-784967.html

注意:僅僅提高 MapFunction 的并行度(parallelism)在有些情況下也可以提升吞吐量,但是這樣做通常會(huì)導(dǎo)致非常高的資源消耗?文章來源地址http://www.zghlxwxcb.cn/news/detail-784967.html
到了這里,關(guān)于Flink異步IO的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!