成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從盤古開天辟地說起為什么 Flink CP 能實現精確一次?

大數據 數據倉庫
對于很多做離線或者實時數倉的小伙伴來說,我先問幾個問題,看看小伙伴萌能回答上來嗎?

1.前言

對于很多做離線或者實時數倉的小伙伴來說,我先問幾個問題,看看小伙伴萌能回答上來嗎?

  • ? 你知道狀態是什么嗎?在離線數據開發的經歷中,你碰到過狀態的概念嗎?
  • ? 為什么離線數倉不需要狀態,實時數據開發中老是提到狀態的概念?
  • ? Flink 中的狀態、狀態后端、全局一致性快照(Checkpoint\Savepoint) 的作用都是什么,這三個概念的關聯又是什么?
  • ? Flink 是通過什么機制來做 Checkpoint 的?為什么這套機制能夠做到精確一次呢?
  • ? Flink Checkpoint 是基于 Chandy-Lamport 算法的,但是 Flink 的實現相比 Chandy-Lamport 算法之間又有哪些優點、缺點?
  • ? Flink Checkpoint 用到了 barrier,為什么用了 barrier 做的快照就能保證全局一致性快照的正確性?barrier 到底起到了什么作用?

小伙伴們思考一下,都能回答上來么,如果對于某些問題你還有疑問,樓主會通過本篇文章幫你解答這些問題,理清這些概念!

由于本文內容較多,所以博主將本文分為上,下兩集,本別在兩天發出。

我們先來看看博主整理的本文介紹思路以及博主希望大家在看完每一小節之后能夠學到的內容。

? 什么是狀態?

希望小伙伴萌能夠發散思維的去思考狀態,狀態這個概念不僅僅只限于 Flink 的狀態,狀態是一個無處不在的東西

? 什么是全局一致性快照?其和狀態的管理?

舉一些狀態、全局一致性快照的一些生活、工作中應用的例子,希望大家大家學習到全局一致性快照 = 一個應用某一時刻(瞬間)所有事物所處狀態的合集,兩者是包含關系

? 為什么需要全局一致性快照?

希望大家學習到有了全局一致性快照能幫助我們做故障恢復、死鎖檢測等很多有利的事情。

? 常見分布式應用中的全局一致性快照包含哪些內容?

通過一個簡單分布式應用介紹一下一個全局一致性快照包含:分布式應用每個進程的狀態 + 正在網絡傳輸中的消息(這個消息其實就是狀態)。并且全局一致性快照每時每刻都存在的,時間軸上的每一個時刻都存在一個全局一致性快照(類似無時無刻的在拍照片,每個照片都是一個全局一致性快照)。Flink 做 Checkpoint 其實就是每隔固定的時間(小伙伴萌自己在程序代碼中設定的 Checkpoint 間隔)從時間軸上的一個點拿出來這個時間點對應的一個全局一致性狀態。

? 分布式應用實現全局一致性快照的方案?

2.什么是狀態?

2.1.首先看看狀態

的定義當前計算流程需要依賴到之前計算的結果,那么之前計算的結果就是狀態。

從上面這個定義出發。我們就可以意識到,狀態并不僅僅是在 Flink 中有這個概念,其實這是一個很廣泛的概念。狀態是一個普遍存在的東西!

2.2.狀態的常見案例

  • ? 生活中的例子:為什么我知道我的面前放著一臺電腦?因為眼睛接收到外界的圖案,然后我的大腦接收到這個眼睛傳輸的圖案信息后,拿記憶中存儲的圖案進行對比,匹配得到這是電腦,所以我才識別除了這是一臺電腦,其中記憶中存儲的圖案就是狀態;比如日久生情,為什么感情會越來越深,因為今天的感情 = 今天積累的感情 + 以前積累的感情,以前積累的感情就是狀態。其實可以看到生活中無處不在都有狀態!
  • ? web server 應用中的狀態:打開 github 頁面,列表展示了我的歸屬倉庫。其流程就是 web client 發給 web server 去查詢我的歸屬倉庫,web server 接收到請求之后,然后去存儲引擎中進行查詢匹配返回。那么存儲引擎中存儲的內容就是狀態,如下圖所示:

  • ? Flink 應用中的狀態:計算最常見的 DAU 指標,那么必然需要做 id 去重,涉及到去重時,就要存儲歷史所有來過的的 id,如下圖所示,案例非常之多:

3.什么是全局一致性快照?

? 生活中的例子:拍一個照片,如下圖,那么照片的內容就是當時的一個全局一致性快照(其中每一個人都有一個 狀態,這些 狀態 在同一時刻的組合就是一個 全局一致性快照)。所以其實 全局一致性快照 是由所有 狀態 的一個時刻的快照組成。

? 分布式應用的例子:我們有一個分布式應用,其有多個進程分布在多個物理機上,在每個進程內部都有自己的處理邏輯和狀態,并且每個進程之間可以互相通信。那么這個分布式應用某一時刻的全局狀態,也叫做 全局一致性快照。

在了解了狀態以及全局一致性快照之后,我們來看看我們為什么需要全局一致性快照?

4.為什么需要全局一致性快照?

  • ? 可以用來故障恢復:我們以 Flink 計算 DAU 為例,如果沒有全局一致性快照(即沒有狀態),也就是我們沒有使用到 MapState 去重,而只用一個存在內存中的 HashMap 做去重的話,當 Flink 任務發生故障時,重新拉起之后,HashMap 的數據就清空了,那么我們就需要從歷史最開始的起點開始重跑所有的數據,才能得到正確的數據。但是:
  • ? 流式應用的上游存儲介質一般都不支持存儲歷史所有數據(比如上游為 kafka,kafka 不可能存儲歷史所有數據)
  • ? 重跑時效性不能滿足時效性要求(回溯歷史數據的情況下,一定會產生延遲,時效性是達不到要求的)
  • ? 而當有了全局一致性快照之后,我們就不必要從【歷史最開始的起點】開始重跑所有的數據(其實這就是我們需要全局一致性快照的目的!!!),數據可以從近處回溯,并且由于回溯數據范圍小,時效性也可以被滿足
  • ? 可以做任務的死鎖檢測:快照其實就相當于某一個時刻的抓拍,當我們抓拍到了一個任務某一時刻的運行情況時,我們就可以分析在任務是不是有死鎖。

回到 Flink 來說,Flink 的 Checkpoint 和Savepoint 實際上就是全局一致性快照這個概念在工業應用上的一個具體實現。

5.常見分布式應用中的全局一致性快照包含哪些內容?

如下面第一張圖所示,就是一個分布式應用,我們可以看到,分布式應用的一個全局一致性快照包含:分布式應用每個進程的狀態 + 正在網絡傳輸中的消息(這個消息其實就是狀態),也就是以上帝視角去抓拍這個分布式應用時,這個分布式應用的全局快照會包含 Process 的狀態 + 網絡 Channel 中的狀態。

以這個前提出發,我們連看下面四張圖:

上面四張圖對應到這個分布式應用四個時刻的四個快照,其實應用的每一個時刻都存在一個全局一致性快照,遠遠不止四個。

6.分布式應用實現全局一致性快照的方案?

實現方式主要分為同步實現方式和異步實現方式兩類。

6.1.同步實現方式

  • ? NTP[1]: NTP服務器[Network Time Protocol(NTP)]是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鐘源(如石英鐘,GPS等等)做同步化,它可以提供高精準度的時間校正(LAN上與標準間差小于1毫秒,WAN上幾十毫秒)結論:在分布式應用中,不同機器上面的進行無法實現時鐘的完全對齊,所以分布式應用也就沒法用時鐘同步的方式做出全局一致性快照。
  • ? Stop-The-World[2]結論:使用此種方式做快照,分布式應用所有進程會停下來做快照,不滿足時效等需求,在實時分布式應用中無法采用。

上述兩種同步方式都不行,那如果同步實現方式不滿足需求,能使用異步方式做到同步相同的快照也是可以滿足需求的。

參考資料

[1]什么是 NTP: https://baike.baidu.com/item/NTP%E6%9C%8D%E5%8A%A1%E5%99%A8/8633994?fr=aladdin。

[2]Stop-The-World 說明: https://www.jianshu.com/p/b210f9db19a3。

[3]Chandy-Lamport 論文鏈接: https://www.microsoft.com/en-us/research/uploads/prod/2016/12/Determining-Global-States-of-a-Distributed-System.pdf?ranMID=24542&ranEAID=J84DHJLQkR4&ranSiteID=J84DHJLQkR4-mVoVymFnAblBx3zwyf98Pw&epi=J84DHJLQkR4-mVoVymFnAblBx3zwyf98Pw&irgwc=1&OCID=AID2000142_aff_7593_1243925&tduid=%28ir__1hs2uuow6wkfq3oxkk0sohzzwm2xpc33lxd0o6g200%29%287593%29%281243925%29%28J84DHJLQkR4-mVoVymFnAblBx3zwyf98Pw%29%28%29&irclickid=_1hs2uuow6wkfq3oxkk0sohzzwm2xpc33lxd0o6g200。

責任編輯:武曉燕 來源: 大數據羊說
相關推薦

2022-02-20 10:47:54

Flink CP通用算法實時數倉

2019-07-08 19:30:09

Windows Pho鴻蒙

2011-07-16 17:25:27

激光打印機評測

2021-10-27 18:36:50

TCP 隊列全連接

2011-06-28 10:41:50

DBA

2021-04-27 18:12:22

WebSocket持久化連接HTTP

2019-01-14 07:28:56

大數據云計算互聯網

2021-12-27 10:08:16

Python編程語言

2020-10-24 13:50:59

Python編程語言

2021-02-01 08:41:45

Flink語義數據

2021-08-13 13:55:13

網絡安全勒索軟件互聯網

2016-01-07 12:40:02

機器學習權威定義

2024-09-05 09:46:37

操作體系密碼

2020-03-18 13:07:16

華為

2017-01-23 12:40:45

設計演講報表數據

2020-10-18 12:53:29

黑科技網站軟件

2020-03-10 07:51:35

面試諷刺標準

2013-11-20 13:55:01

代碼提交優秀

2022-10-28 11:26:01

光纖終端盒光纖安裝

2019-07-18 17:01:10

機器學習人工智能計算機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99reav| 在线日韩欧美 | 日韩在线国产 | 天天操夜夜爽 | 国产欧美一区二区三区在线看 | 久久综合久久自在自线精品自 | 黄色一级毛片免费看 | 久久91精品久久久久久9鸭 | 欧美激情国产日韩精品一区18 | 成人免费福利 | 亚洲人成人一区二区在线观看 | 99在线观看| 国产日韩一区二区三免费 | 91九色婷婷| 国产视频一区在线观看 | 做a视频| 亚洲成人毛片 | 成人在线视频一区 | re久久| 国产电影精品久久 | 成人在线国产 | 亚洲国产精品日韩av不卡在线 | 中文字幕av中文字幕 | 国产日韩中文字幕 | 宅男噜噜噜66一区二区 | 少妇特黄a一区二区三区88av | 国产精品完整版 | 日韩精品视频在线观看一区二区三区 | 国产免费一区二区 | 中文字幕一区二区三区不卡 | 色综合成人网 | 久久精品国产一区二区电影 | 日本一区二区三区在线观看 | 不卡一区二区三区四区 | 免费在线观看毛片 | 久久男人| 亚洲欧美一区二区三区在线 | 手机av在线 | 国产亚洲精品久久久久久豆腐 | 男女视频网站 | 国产一区二区三区四区三区四 |