Flink 容錯性機制- 屏障(barrier)實現(xiàn)原理

我們知道Flink提供了容錯機制杰妓,能夠在應用失敗的時候重新恢復任務歪玲。這個機制主要就是通過持續(xù)產(chǎn)生快照的方式實現(xiàn)的。Flink快照主要包括兩部分數(shù)據(jù)一部分是數(shù)據(jù)流的數(shù)據(jù)币励,另一部分是operator的狀態(tài)數(shù)據(jù)吱殉。對應的快照機制的實現(xiàn)有主要兩個部分組成掸冤,一個是屏障(Barrier),一個是狀態(tài)(State)友雳。因為Flink這里處理的數(shù)據(jù)流稿湿,數(shù)據(jù)在多個operator的DAG拓撲中持續(xù)流動,要想實現(xiàn)某個時刻快照可以用于系統(tǒng)故障恢復押赊,必須保證這個快照饺藤,完全能夠確定某一個時刻狀態(tài),這個時刻之前的數(shù)據(jù)全部處理完流礁,之后的數(shù)據(jù)一個都沒有處理涕俗。這里就引入了屏障這個概念。這里我們主要介紹一下屏障實現(xiàn)神帅。

屏障 Barrier

Flink 分布式快照里面的一個核心的元素就是流屏障(stream barrier)再姑。這些屏障會被插入(injected)到數(shù)據(jù)流中,并作為數(shù)據(jù)流的一部分隨著數(shù)據(jù)流動找御。屏障并不會持有任何數(shù)據(jù)元镀,而是和數(shù)據(jù)一樣線性的流動绍填。可以看到屏障將數(shù)據(jù)流分成了兩部分數(shù)據(jù)(實際上是多個連續(xù)的部分)栖疑,一部分是當前快照的數(shù)據(jù)讨永,一部分下一個快照的數(shù)據(jù)。每個屏障會帶有它的快照ID遇革。這個快照的數(shù)據(jù)都在這個屏障的前面卿闹。從圖上看,數(shù)據(jù)是從左向右移動(右邊的先進入系統(tǒng))萝快,那么快照n包含的數(shù)據(jù)就是右側(cè)到下一個屏障(n-1)截止的數(shù)據(jù)比原,圖中兩個灰色豎線之間的部分,也就是part of checkpoint n杠巡。另外屏障并不會打斷數(shù)的流動,因而屏障是非常輕量的。在同一個時刻雇寇,多個快照可以在同一個數(shù)據(jù)流中氢拥,這也就是說多個快照可以同時產(chǎn)生。


屏障示意圖

如果是多個輸入數(shù)據(jù)流锨侯,多個數(shù)據(jù)流的屏障會被同時插入到數(shù)據(jù)流中嫩海。快照n的屏障被插入到數(shù)據(jù)流的點(我們稱之為Sn)囚痴,就是數(shù)據(jù)流中一直到的某個位置(包含了當前時刻之前時間的所有數(shù)據(jù))叁怪,也就是包含的這部分數(shù)據(jù)的快照。舉例來說深滚,在Kafka中奕谭,這個位置就是這個分區(qū)的最后一條記錄的offset。這個位置Sn就會上報給 checkpoint 的協(xié)調(diào)器(Flink的 JobManager)痴荐。

然后屏障開始向下流動血柳。當一個中間的operator收到它的所有輸入源的快照n屏障后,它就會向它所有的輸出流發(fā)射一個快照n的屏障生兆,一旦一個sink的operator收到所有輸入數(shù)據(jù)流的屏障n难捌,它就會向checkpoint的協(xié)調(diào)器發(fā)送快照n確認。當所有的sink都確認了快照n鸦难,系統(tǒng)才認為當前快照的數(shù)據(jù)已經(jīng)完成根吁。

一旦快照n已經(jīng)執(zhí)行完成,任務則不會再請求Sn之前的數(shù)據(jù)合蔽,因為此刻击敌,這些數(shù)據(jù)都已經(jīng)完全通過了數(shù)據(jù)流拓撲圖。

對齊機制

接收不止一個數(shù)據(jù)輸入的operator需要基于屏障對齊輸入數(shù)據(jù)流辈末。詳述如下:
整個流程圖如下所示

image.png

然后我們挨個看一下:

  • 當operator接收到快照的屏障n后并不能直接處理之后的數(shù)據(jù)愚争,而是需要等待其他輸入快照的屏障n映皆。否則話,將會將快照n的數(shù)據(jù)和快照n+1的數(shù)據(jù)混在一起轰枝。圖中第一個所示捅彻,operator即將要收到數(shù)據(jù)流1(上面這個我們當成數(shù)據(jù)流1(6,5鞍陨,4步淹,3,2诚撵,1)缭裆,下面的當成數(shù)據(jù)流2好了)的屏障n,1寿烟,2澈驼,3在屏障n之后到達operator,這個時候如果數(shù)據(jù)流1的繼續(xù)處理筛武,那么operator中就會包含n屏障之后的數(shù)據(jù)(1缝其,2,3)徘六,但是operator中此刻在接收和處理數(shù)據(jù)流2内边,數(shù)據(jù)(a,b,c)就會和數(shù)據(jù)流1中的(1,2待锈,3)混合漠其。


    image.png
  • 快照n的數(shù)據(jù)流會被暫時放到一邊。從這些數(shù)據(jù)流中獲取到的數(shù)據(jù)不會被處理竿音,而是存儲到一個緩沖中和屎。圖中第一個所示,因為數(shù)據(jù)流2的屏障n還沒到春瞬,所以operator持續(xù)接收1眶俩,2,3然而并不做任何處理快鱼。但是需要將1颠印,2,3存入到buffer中抹竹。此時第二個數(shù)據(jù)流接到a线罕,b,則直接發(fā)送窃判,接到c發(fā)送c钞楼。
image.png
  • 一旦最后一個數(shù)據(jù)流收到了快照n,opertor就會將發(fā)出所有阻塞的數(shù)據(jù)袄琳,并發(fā)出自己的屏障询件。如圖中第三個所示燃乍,operator最后收到了另一個數(shù)據(jù)流的屏障n,然后再發(fā)出a,b,c(圖中operator中的c,b,a)以后宛琅,發(fā)出自己的屏障刻蟹,這個時候buffer中又增加了一個4,變成(4嘿辟,3舆瘪,2,1)红伦。
image.png
  • 之后operator會重新開始處理所有的輸入數(shù)據(jù)流英古,先處理buffer中的數(shù)據(jù),處理完之后再處理輸入數(shù)據(jù)流的數(shù)據(jù)昙读。如圖第四個所示召调,先將buffer中的1,2蛮浑,3某残,4先處理完,在接收并處理這兩個數(shù)據(jù)源的數(shù)據(jù)陵吸。
image.png

··=-·=···············

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市介牙,隨后出現(xiàn)的幾起案子壮虫,更是在濱河造成了極大的恐慌,老刑警劉巖环础,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件囚似,死亡現(xiàn)場離奇詭異,居然都是意外死亡线得,警方通過查閱死者的電腦和手機饶唤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贯钩,“玉大人募狂,你說我怎么就攤上這事〗抢祝” “怎么了祸穷?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長勺三。 經(jīng)常有香客問我雷滚,道長,這世上最難降的妖魔是什么吗坚? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任祈远,我火速辦了婚禮呆万,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘车份。我一直安慰自己谋减,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布躬充。 她就那樣靜靜地躺著逃顶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪充甚。 梳的紋絲不亂的頭發(fā)上以政,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音伴找,去河邊找鬼盈蛮。 笑死,一個胖子當著我的面吹牛技矮,可吹牛的內(nèi)容都是我干的抖誉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衰倦,長吁一口氣:“原來是場噩夢啊……” “哼袒炉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起樊零,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤我磁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后驻襟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夺艰,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年沉衣,在試婚紗的時候發(fā)現(xiàn)自己被綠了郁副。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡豌习,死狀恐怖存谎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肥隆,我是刑警寧澤愕贡,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站巷屿,受9級特大地震影響固以,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一憨琳、第九天 我趴在偏房一處隱蔽的房頂上張望诫钓。 院中可真熱鬧,春花似錦篙螟、人聲如沸菌湃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惧所。三九已至,卻和暖如春绪杏,著一層夾襖步出監(jiān)牢的瞬間下愈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工蕾久, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留势似,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓僧著,卻偏偏與公主長得像履因,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盹愚,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Flink總結(jié) Flink簡介 Apache Flink作為一款高吞吐量栅迄、低延遲的針對流數(shù)據(jù)和批數(shù)據(jù)的分布式實時處...
    bigdata_er閱讀 10,599評論 0 10
  • Apache Flink是一個面向分布式數(shù)據(jù)流處理和批量數(shù)據(jù)處理的開源計算平臺,它能夠基于同一個Flink運行時皆怕,...
    康小為6840閱讀 1,199評論 0 7
  • 記錄一下曾經(jīng)走過的一些坑毅舆,一定要注意operator狀態(tài)之前盡量不要用keyby Flink提供了Exactly ...
    大醬游說大數(shù)據(jù)閱讀 3,926評論 0 3
  • Flink源碼分析系列文檔目錄 請點擊:Flink 源碼分析系列文檔目錄[https://www.jianshu....
    AlienPaul閱讀 2,928評論 0 1
  • 大家都覺得文敏獨立有想法穩(wěn)妥 只有他知道文敏也是一個需要被照顧的女生 哈哈 今天的大象先生,有點甜端逼。
    文敏_4e83閱讀 245評論 0 0