【譯】Flink 應(yīng)用實(shí)踐

得益于其強(qiáng)大的可擴(kuò)展性,Apache Flink 在開發(fā)并運(yùn)行各種不同類型的應(yīng)用方面都是一個(gè)不錯(cuò)的選擇,這些特性包括:

  • 對(duì)流處理與批處理的支持
  • 復(fù)雜狀態(tài)管理
  • 事件-時(shí)間型的處理方法
  • 狀態(tài)的持續(xù)唯一性保證

不僅如此躯畴,F(xiàn)link 還可以部署在各種各樣的資源管理平臺(tái),如YARN山林、Apache Mesos 以及 Kubernetes润脸,同時(shí)也支持在邏輯上獨(dú)立運(yùn)行為一個(gè)集群漠魏。即便是高可用方面倔矾,F(xiàn)link 也無可挑剔。事實(shí)證明蛉幸,F(xiàn)link 可以擴(kuò)展到成千上萬個(gè)內(nèi)核破讨,處理TB量級(jí)的應(yīng)用狀態(tài),高吞吐奕纫,低時(shí)延提陶,同時(shí)能夠hold得住世上大部分流處理應(yīng)用。
接下來匹层,我們會(huì)探索基于Flink 實(shí)現(xiàn)的最常見的幾種應(yīng)用隙笆,并給一些真實(shí)的案例。

  • 事件驅(qū)動(dòng)型應(yīng)用(Event-Driven Applications)
  • 數(shù)據(jù)分析型應(yīng)用(Data Analytics Applications)
  • 數(shù)據(jù)流水線型應(yīng)用(Data Pipeline Applications)

事件驅(qū)動(dòng)型應(yīng)用(Event-driven Applications)

什么是事件驅(qū)動(dòng)型應(yīng)用升筏?

一個(gè)事件驅(qū)動(dòng)型應(yīng)用往往是一個(gè)有狀態(tài)的應(yīng)用撑柔,該應(yīng)用從一個(gè)或多個(gè)事件流源接受事件,并且通過進(jìn)行相應(yīng)的計(jì)算您访、狀態(tài)變更以及其他操作來對(duì)這些事件做出響應(yīng)铅忿。
相比傳統(tǒng)的應(yīng)用設(shè)計(jì),事件驅(qū)動(dòng)型應(yīng)用無疑是一個(gè)革命灵汪。在傳統(tǒng)場(chǎng)景中檀训,計(jì)算和存儲(chǔ)是分開的,應(yīng)用程序從遠(yuǎn)程事務(wù)數(shù)據(jù)庫讀取數(shù)據(jù)并將數(shù)據(jù)持久化到該數(shù)據(jù)庫享言。而事件驅(qū)動(dòng)型應(yīng)用恰恰相反峻凫,它基于一些有狀態(tài)的流處理應(yīng)用,數(shù)據(jù)和計(jì)算資源位于一處览露,從而可以實(shí)現(xiàn)本地?cái)?shù)據(jù)訪問(從內(nèi)存或本地磁盤)荧琼。在處理期間,會(huì)周期性的拉取本地狀態(tài)并同步寫入遠(yuǎn)端一個(gè)位置來實(shí)現(xiàn)容錯(cuò)性這一特征。下面的圖表揭示了傳統(tǒng)型架構(gòu)與事件驅(qū)動(dòng)型應(yīng)用架構(gòu)的不同:


image

事件驅(qū)動(dòng)型應(yīng)用的好處命锄?

高吞吐堰乔、低時(shí)延:相比傳統(tǒng)方式中先存到遠(yuǎn)程數(shù)據(jù)庫,再讀取進(jìn)行處理累舷,事件驅(qū)動(dòng)型應(yīng)用直接本地訪問事件浩考,并直接處理夹孔,從而帶來更好的表現(xiàn)被盈。
容錯(cuò)性設(shè)計(jì):周期性檢查本地任務(wù)狀態(tài)并異步奸焙、增量地更新到遠(yuǎn)端持久層狂票。因此型将,檢查點(diǎn)對(duì)常規(guī)事件處理的影響非常小纸淮。

事件驅(qū)動(dòng)型應(yīng)用的好處不僅是提供本地?cái)?shù)據(jù)訪問這一點(diǎn)奄喂,在傳統(tǒng)架構(gòu)中梳杏,多個(gè)應(yīng)用往往共享一個(gè)數(shù)據(jù)庫實(shí)例们童,因此每當(dāng)有數(shù)據(jù)結(jié)構(gòu)變更時(shí)权谁,其他服務(wù)往往都需要做一定的配合拍鲤,或者實(shí)例擴(kuò)容情況出現(xiàn)時(shí)贴谎,其他服務(wù)訪問數(shù)據(jù)庫也會(huì)受到一定的性能影響。然而季稳,本地化的數(shù)據(jù)訪問模式擅这,使得事件驅(qū)動(dòng)型應(yīng)用只需要負(fù)責(zé)自己的數(shù)據(jù)即可,數(shù)據(jù)結(jié)構(gòu)的變更以及本應(yīng)用的擴(kuò)容操作也只需要較少的協(xié)同操作景鼠。

Flink 是如何支持事件驅(qū)動(dòng)型應(yīng)用的仲翎?

事件驅(qū)動(dòng)應(yīng)用程序的限制由流處理器處理時(shí)間和狀態(tài)的能力來定義。Flink的許多突出特征都集中在這些概念上铛漓。Flink提供了一組豐富的狀態(tài)原語溯香,可以管理非常大的數(shù)據(jù)卷(最多可達(dá)幾TB),并且精確地保證了一致性浓恶。此外玫坛,F(xiàn)link支持事件時(shí)間、高度可定制的窗口邏輯和ProcessFunction提供的細(xì)粒度時(shí)間控制包晰,從而實(shí)現(xiàn)了高級(jí)業(yè)務(wù)邏輯湿镀。此外,F(xiàn)link還提供了一個(gè)用于復(fù)雜事件處理(CEP)的庫杜窄,用于檢測(cè)數(shù)據(jù)流中的模式肠骆。

然而,F(xiàn)link對(duì)于事件驅(qū)動(dòng)應(yīng)用程序的突出特性是savepoint塞耕。保存點(diǎn)是一個(gè)一致的狀態(tài)鏡像蚀腿,可以用作兼容應(yīng)用程序的起點(diǎn)。給定一個(gè)保存點(diǎn),應(yīng)用程序可以更新或調(diào)整其規(guī)模莉钙,或者可以啟動(dòng)多個(gè)應(yīng)用程序版本以進(jìn)行A/B測(cè)試廓脆。

數(shù)據(jù)分析型應(yīng)用(Data-Analytics Applications)

什么是數(shù)據(jù)分析型應(yīng)用?

分析工作從源數(shù)據(jù)中抽取并洞察信息磁玉。在傳統(tǒng)架構(gòu)中停忿,分析工作往往是基于一個(gè)有限的數(shù)據(jù)集來做批量查詢。如果想要得到最新數(shù)據(jù)的結(jié)果蚊伞,需要不斷地把新數(shù)據(jù)增量加進(jìn)去再做分析工作席赂。結(jié)果會(huì)寫到存儲(chǔ)系統(tǒng)中,或者生成報(bào)告时迫。
但是颅停,借助一復(fù)雜流處理引擎,分析工作可以實(shí)時(shí)運(yùn)行掠拳。在這種模式下癞揉,應(yīng)用接收實(shí)時(shí)數(shù)據(jù),并且隨著新數(shù)據(jù)被消費(fèi)溺欧,持續(xù)產(chǎn)生新的結(jié)果喊熟。這些結(jié)果要么寫到一個(gè)外部數(shù)據(jù)庫,要么以內(nèi)部狀態(tài)被維護(hù)起來姐刁。報(bào)表應(yīng)用可以直接從外部數(shù)據(jù)庫或者從本地應(yīng)用讀取最新的數(shù)據(jù)芥牌。Apache Flink 同時(shí)支持批處理分析以及流處理分析:


image

流分析應(yīng)用的好處是什么?

批處理架構(gòu)往往由幾個(gè)獨(dú)立的組件組成:

  • 周期性拉取數(shù)據(jù)
  • 執(zhí)行查詢操作

這些操作帶來了時(shí)間開銷龙填,一旦某個(gè)環(huán)節(jié)出錯(cuò)就會(huì)影響整體胳泉。而基于復(fù)雜流處理引擎(如:Flink )的應(yīng)用把所有步驟合并到一起:數(shù)據(jù)抓取、持續(xù)結(jié)果計(jì)算岩遗,因此避開了各出錯(cuò)環(huán)節(jié)扇商,同時(shí)可以依賴引擎的錯(cuò)誤恢復(fù)機(jī)制。

Flink 是如何支持?jǐn)?shù)據(jù)分析應(yīng)用型應(yīng)用的宿礁?

Flink 對(duì)持續(xù)的流處理以及批處理都支持得很好案铺。具體來說,它具有一個(gè)符合ANSI標(biāo)準(zhǔn)的SQL接口梆靖,該接口具有用于批處理和流式查詢的統(tǒng)一語義控汉。不管是查詢靜態(tài)事件記錄數(shù)據(jù)集,還是查詢實(shí)時(shí)事件流返吻,該接口都能計(jì)算出相同的結(jié)果姑子。豐富的自定義函數(shù)使得用戶能夠在SQL查詢中執(zhí)行自己的代碼。如果需要更加定制化的處理邏輯测僵,F(xiàn)link 的DataStream API 或者DataSet API 也能夠提供初級(jí)的控制支持街佑。此外谢翎,F(xiàn)link的Gelly庫為批量數(shù)據(jù)集的大規(guī)模和高性能圖形分析提供了算法和構(gòu)建塊。

數(shù)據(jù)流水線型應(yīng)用(Data Pipeline Applications)

什么是數(shù)據(jù)流水線沐旨?

ETL是一種常見的在不同存儲(chǔ)系統(tǒng)之間轉(zhuǎn)換森逮、遷移數(shù)據(jù)的方法。通常來說磁携,他的工作就是周期性的觸發(fā)數(shù)據(jù)拷貝動(dòng)作褒侧,從一個(gè)關(guān)系型數(shù)據(jù)庫,到一個(gè)分析型數(shù)據(jù)庫谊迄,或者數(shù)據(jù)倉庫闷供。
數(shù)據(jù)流水線跟ETL的目的是一樣的,都是在不同存儲(chǔ)系統(tǒng)之間轉(zhuǎn)換鳞上、加工这吻、遷移數(shù)據(jù),然而他是以一種持續(xù)六的模式運(yùn)行篙议,而不是周期性的觸發(fā),因此怠硼,它可以從那些持續(xù)產(chǎn)生數(shù)據(jù)的源讀取并遷移數(shù)據(jù)鬼贱,同時(shí)在較低時(shí)延的情況下寫入另一個(gè)數(shù)據(jù)源。比如說香璃,一個(gè)數(shù)據(jù)流水線可以監(jiān)控某個(gè)文件系統(tǒng)目錄中新文件的生成这难,并且將寫入一個(gè)事件日志流內(nèi),另一個(gè)應(yīng)用就能基于此事件流實(shí)現(xiàn)一個(gè)增量型的文件搜索引擎葡秒。
下面的表格解釋了周期性ETL以及持續(xù)數(shù)據(jù)流水線應(yīng)用的區(qū)別:


image

數(shù)據(jù)流水線的好處是什么姻乓?

最明顯的一個(gè)好處就是低時(shí)延,其次眯牧,由于這種模式能夠持續(xù)的消費(fèi)并產(chǎn)生數(shù)據(jù)蹋岩,因此有更廣闊的應(yīng)用場(chǎng)景。

Flink 是如何支持?jǐn)?shù)據(jù)流水線的学少?

很多常見的數(shù)據(jù)轉(zhuǎn)換或者加工任務(wù)都可以通過Flink 的SQL接口來達(dá)成剪个,它也支持自定義處理函數(shù)。用戶還可以使用DataStream PI來實(shí)現(xiàn)更高級(jí)的數(shù)據(jù)流水線需求版确。Flink 提供了相當(dāng)豐富的存儲(chǔ)系統(tǒng)連接器扣囊,如:Kafka、Kinesis绒疗、Elasticsearch以及JDBC數(shù)據(jù)庫系統(tǒng)侵歇。他也為那些監(jiān)控文件目錄的系統(tǒng)以及以時(shí)間桶形式寫文件的系統(tǒng)提供持續(xù)的數(shù)據(jù)源支持。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吓蘑,一起剝皮案震驚了整個(gè)濱河市惕虑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖枷遂,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件樱衷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡酒唉,警方通過查閱死者的電腦和手機(jī)矩桂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痪伦,“玉大人侄榴,你說我怎么就攤上這事⊥矗” “怎么了癞蚕?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辉哥。 經(jīng)常有香客問我桦山,道長,這世上最難降的妖魔是什么醋旦? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任恒水,我火速辦了婚禮,結(jié)果婚禮上饲齐,老公的妹妹穿的比我還像新娘钉凌。我一直安慰自己,他們只是感情好捂人,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布御雕。 她就那樣靜靜地躺著,像睡著了一般滥搭。 火紅的嫁衣襯著肌膚如雪酸纲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天论熙,我揣著相機(jī)與錄音福青,去河邊找鬼。 笑死脓诡,一個(gè)胖子當(dāng)著我的面吹牛无午,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祝谚,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼宪迟,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了交惯?” 一聲冷哼從身側(cè)響起次泽,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤穿仪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后意荤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啊片,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年玖像,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了紫谷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捐寥,死狀恐怖笤昨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情握恳,我是刑警寧澤瞒窒,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站乡洼,受9級(jí)特大地震影響崇裁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜就珠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一寇壳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妻怎,春花似錦、人聲如沸泞歉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腰耙。三九已至榛丢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挺庞,已是汗流浹背晰赞。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留选侨,地道東北人掖鱼。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像援制,于是被迫代替她去往敵國和親戏挡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

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