Flink精確消費一次

 在大數據計算裏面,計算引擎是處於承上啓下的作用,對上承接數據源,對下承接各種各種數據庫,比如mysql、oracle。對於任何數據計算來說要想精確消費一次,就需要支持事務或者冪等,我們最常見的支持事務的就是單點的oracle、mysql數據庫,那麼Flink作爲分佈式計算引擎,是如何做到精確消費一次的呢?

   Source端的精確消費一次比較好實現,畢竟Flink是消費者,比如它消費Kafka時,它可以記錄下相關的偏移量,恢復時重置偏移量就可以了,Flink應用內部就是通過checkpoint機制來實現精確一次的,難點是sink端如何保證精確消費一次,畢竟數據寫到外部系統後,Flink就無法管控了,目前針對sink端是kafka的情況時,是通過兩段提交(預提交、正式提交)的方式來實現的,所以理論上提供了必要的協調機制的三方系統,都是可以實現精確一次的。

 

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