日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据Flink(二十二):Time与Watermaker

發(fā)布時(shí)間:2023/11/28 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年大数据Flink(二十二):Time与Watermaker 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

Time分類

EventTime的重要性

示例1

示例2

???????示例3

???????示例4

???????總結(jié)

Watermaker水印機(jī)制/水位線機(jī)制

什么是Watermaker?

???????如何計(jì)算Watermaker?

???????Watermaker有什么用?

???????Watermaker如何觸發(fā)窗口計(jì)算的?

???????圖解Watermaker


Flink-Time與Watermaker

Time分類

在Flink的流式處理中,會(huì)涉及到時(shí)間的不同概念,如下圖所示:

?

事件時(shí)間EventTime: 事件真真正正發(fā)生產(chǎn)生的時(shí)間

攝入時(shí)間IngestionTime: 事件到達(dá)Flink的時(shí)間

處理時(shí)間ProcessingTime: 事件真正被處理/計(jì)算的時(shí)間

?

問題: 上面的三個(gè)時(shí)間,我們更關(guān)注哪一個(gè)?

答案: 更關(guān)注事件時(shí)間 !

因?yàn)? 事件時(shí)間更能反映事件的本質(zhì)! 只要事件時(shí)間一產(chǎn)生就不會(huì)變化

?

EventTime的重要性

示例1

假設(shè),你正在去往地下停車場的路上,并且打算用手機(jī)點(diǎn)一份外賣。選好了外賣后,你就用在線支付功能付款了,這個(gè)時(shí)候是11點(diǎn)59分。恰好這時(shí),你走進(jìn)了地下停車庫,而這里并沒有手機(jī)信號(hào)。因此外賣的在線支付并沒有立刻成功,而支付系統(tǒng)一直在Retry重試“支付”這個(gè)操作。

當(dāng)你找到自己的車并且開出地下停車場的時(shí)候,已經(jīng)是12點(diǎn)01分了。這個(gè)時(shí)候手機(jī)重新有了信號(hào),手機(jī)上的支付數(shù)據(jù)成功發(fā)到了外賣在線支付系統(tǒng),支付完成。

?

在上面這個(gè)場景中你可以看到,

支付數(shù)據(jù)的事件時(shí)間是11點(diǎn)59分,而支付數(shù)據(jù)的處理時(shí)間是12點(diǎn)01分

?

問題:

如果要統(tǒng)計(jì)12之前的訂單金額,那么這筆交易是否應(yīng)被統(tǒng)計(jì)?

答案:

應(yīng)該被統(tǒng)計(jì),因?yàn)樵摂?shù)據(jù)的真真正正的產(chǎn)生時(shí)間為11點(diǎn)59分,即該數(shù)據(jù)的事件時(shí)間為11點(diǎn)59分,

事件時(shí)間能夠真正反映/代表事件的本質(zhì)! 所以一般在實(shí)際開發(fā)中會(huì)以事件時(shí)間作為計(jì)算標(biāo)準(zhǔn)

?

???????示例2

一條錯(cuò)誤日志的內(nèi)容為:

2020-11:11?22:59:00?error NullPointExcep?--事件時(shí)間

進(jìn)入Flink的時(shí)間為2020-11:11?23:00:00 ???--攝入時(shí)間

到達(dá)Window的時(shí)間為2020-11:11?23:00:10 --處理時(shí)間

問題:

對(duì)于業(yè)務(wù)來說,要統(tǒng)計(jì)1h內(nèi)的故障日志個(gè)數(shù),哪個(gè)時(shí)間是最有意義的?

答案:

EventTime事件時(shí)間,因?yàn)閎ug真真正正產(chǎn)生的時(shí)間就是事件時(shí)間,只有事件時(shí)間才能真正反映/代表事件的本質(zhì)!

?

???????示例3

某 App 會(huì)記錄用戶的所有點(diǎn)擊行為,并回傳日志(在網(wǎng)絡(luò)不好的情況下,先保存在本地,延后回傳)。

A用戶在 11:01:00?對(duì) App 進(jìn)行操作,B用戶在 11:02:00?操作了 App,

但是A用戶的網(wǎng)絡(luò)不太穩(wěn)定,回傳日志延遲了,導(dǎo)致我們?cè)诜?wù)端先接受到B用戶的消息,然后再接受到A用戶的消息,消息亂序了。

問題:

如果這個(gè)是一個(gè)根據(jù)用戶操作先后順序,進(jìn)行搶購的業(yè)務(wù),那么是A用戶成功還是B用戶成功?

答案:

應(yīng)該算A成功,因?yàn)锳確實(shí)比B操作的早,但是實(shí)際中考慮到實(shí)現(xiàn)難度,可能直接按B成功算

也就是說,實(shí)際開發(fā)中希望基于事件時(shí)間來處理數(shù)據(jù),但因?yàn)閿?shù)據(jù)可能因?yàn)榫W(wǎng)絡(luò)延遲等原因,出現(xiàn)了亂序,按照事件時(shí)間處理起來有難度!

?

???????示例4

在實(shí)際環(huán)境中,經(jīng)常會(huì)出現(xiàn),因?yàn)榫W(wǎng)絡(luò)原因,數(shù)據(jù)有可能會(huì)延遲一會(huì)才到達(dá)Flink實(shí)時(shí)處理系統(tǒng)。我們先來設(shè)想一下下面這個(gè)場景:

原本應(yīng)該被該窗口計(jì)算的數(shù)據(jù)因?yàn)榫W(wǎng)絡(luò)延遲等原因晚到了,就有可能丟失了

?

???????總結(jié)

實(shí)際開發(fā)中我們希望基于事件時(shí)間來處理數(shù)據(jù),但因?yàn)閿?shù)據(jù)可能因?yàn)榫W(wǎng)絡(luò)延遲等原因,出現(xiàn)了亂序或延遲到達(dá),那么可能處理的結(jié)果不是我們想要的甚至出現(xiàn)數(shù)據(jù)丟失的情況,所以需要一種機(jī)制來解決一定程度上的數(shù)據(jù)亂序或延遲到底的問題!也就是我們接下來要學(xué)習(xí)的Watermaker水印機(jī)制/水位線機(jī)制

?

Watermaker水印機(jī)制/水位線機(jī)制

什么是Watermaker?

Watermaker就是給數(shù)據(jù)再額外的加的一個(gè)時(shí)間列

也就是Watermaker是個(gè)時(shí)間戳!

?

???????如何計(jì)算Watermaker?

Watermaker = 數(shù)據(jù)的事件時(shí)間 ?- ?最大允許的延遲時(shí)間或亂序時(shí)間

注意:后面通過源碼會(huì)發(fā)現(xiàn),準(zhǔn)確來說:

Watermaker = 當(dāng)前窗口的最大的事件時(shí)間 ?- ?最大允許的延遲時(shí)間或亂序時(shí)間

這樣可以保證Watermaker水位線會(huì)一直上升(變大),不會(huì)下降

?

???????Watermaker有什么用?

之前的窗口都是按照系統(tǒng)時(shí)間來觸發(fā)計(jì)算的,如: [10:00:00 ~ 10:00:10) 的窗口,

一但系統(tǒng)時(shí)間到了10:00:10就會(huì)觸發(fā)計(jì)算,那么可能會(huì)導(dǎo)致延遲到達(dá)的數(shù)據(jù)丟失!

那么現(xiàn)在有了Watermaker,窗口就可以按照Watermaker來觸發(fā)計(jì)算!

也就是說Watermaker是用來觸發(fā)窗口計(jì)算的!

?

???????Watermaker如何觸發(fā)窗口計(jì)算的?

窗口計(jì)算的觸發(fā)條件為:

  1. 窗口中有數(shù)據(jù)
  2. Watermaker >= 窗口的結(jié)束時(shí)間

?

因?yàn)榍懊嬲f到

Watermaker = 當(dāng)前窗口的最大的事件時(shí)間 ?- ?最大允許的延遲時(shí)間或亂序時(shí)間

也就是說只要不斷有數(shù)據(jù)來,就可以保證Watermaker水位線是會(huì)一直上升/變大的,不會(huì)下降/減小的

所以最終一定是會(huì)觸發(fā)窗口計(jì)算的

?

注意:

上面的觸發(fā)公式進(jìn)行如下變形:

Watermaker >= 窗口的結(jié)束時(shí)間

Watermaker = 當(dāng)前窗口的最大的事件時(shí)間 ?- ?最大允許的延遲時(shí)間或亂序時(shí)間

當(dāng)前窗口的最大的事件時(shí)間 ?- ?最大允許的延遲時(shí)間或亂序時(shí)間 ?>= 窗口的結(jié)束時(shí)間

當(dāng)前窗口的最大的事件時(shí)間 ?>= 窗口的結(jié)束時(shí)間 + ?最大允許的延遲時(shí)間或亂序時(shí)間

?

???????圖解Watermaker

?

總結(jié)

以上是生活随笔為你收集整理的2021年大数据Flink(二十二):Time与Watermaker的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。