多易藝人直播-Flink實(shí)時(shí)數(shù)倉(cāng)
Flink 的重要特點(diǎn)
(1)事件驅(qū)動(dòng)型(Event-driven)
事件驅(qū)動(dòng)型應(yīng)用是一類具有狀態(tài)的應(yīng)用,它從一個(gè)或多個(gè)事件流提取數(shù)據(jù),并根據(jù)到來的事件觸發(fā)計(jì)算、狀態(tài)更新或其他外部動(dòng)作。比較典型的就是以 kafka 為代表的消息隊(duì)列幾乎都是事件驅(qū)動(dòng)型應(yīng)用。
與之不同的就是 SparkStreaming 微批次,如圖:

事件驅(qū)動(dòng)型:

流與批的世界觀
批處理的特點(diǎn)是有界、持久、大量,非常適合需要訪問全套記錄才能完成的計(jì)算工作,一般用于離線統(tǒng)計(jì)。
流處理的特點(diǎn)是無界、實(shí)時(shí), 無需針對(duì)整個(gè)數(shù)據(jù)集執(zhí)行操作,而是對(duì)通過系統(tǒng)傳輸?shù)拿總€(gè)數(shù)據(jù)項(xiàng)執(zhí)行操作,一般用于實(shí)時(shí)統(tǒng)計(jì)。 在 spark 的世界觀中,一切都是由批次組成的,離線數(shù)據(jù)是一個(gè)大批次,而實(shí)時(shí)數(shù)據(jù)是由一個(gè)一個(gè)無限的小批次組成的。
而在 flink 的世界觀中,一切都是由流組成的,離線數(shù)據(jù)是有界限的流,實(shí)時(shí)數(shù)據(jù)是一個(gè)沒有界限的流,這就是所謂的有界流和無界流。
無界數(shù)據(jù)流:無界數(shù)據(jù)流有一個(gè)開始但是沒有結(jié)束,它們不會(huì)在生成時(shí)終止并 提供數(shù)據(jù),必須連續(xù)處理無界流,也就是說必須在獲取后立即處理 event。對(duì)于無界數(shù)據(jù)流我們無法等待所有數(shù)據(jù)都到達(dá),因?yàn)檩斎胧菬o界的,并且在任何時(shí)間點(diǎn)都不會(huì)完成。處理無界數(shù)據(jù)通常要求以特定順序(例如事件發(fā)生的順序)獲取 event,以便能夠推斷結(jié)果完整性。
有界數(shù)據(jù)流:有界數(shù)據(jù)流有明確定義的開始和結(jié)束,可以在執(zhí)行任何計(jì)算之前通過獲取所有數(shù)據(jù)來處理有界流,處理有界流不需要有序獲取,因?yàn)榭梢允冀K對(duì)有界數(shù)據(jù)集進(jìn)行排序,有界流的處理也稱為批處理。
