如何分析及處理 Flink 反壓?

反壓(backpressure)是實時計算應用開發中,特別是流式計算中,十分常見的問題。反壓意味着數據管道中某個節點成爲瓶頸,處理速率跟不上上游發送數據的速率,而需要對上游進行限速。由於實時計算應用通常使用消息隊列來進行生產端和消費端的解耦,消費端數據源是 pull-based 的,所以反壓通常是從某個節點傳導至數據源並降低數據源(比如 Kafka consumer)的攝入速率。

關於 Flink 的反壓機制,網上已經有不少博客介紹,中文博客推薦這兩篇1。簡單來說,Flink 拓撲中每個節點(Task)間的數據都以阻塞隊列的方式傳輸,下游來不及消費導致隊列被佔滿後,上游的生產也會被阻塞,最終導致數據源的攝入被阻塞。而本文將着重結合官方的博客[4]分享筆者在實踐中分析和處理 Flink 反壓的經驗。

反壓的影響

反壓並不會直接影響作業的可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章