全部產品
Search
文件中心

Realtime Compute for Apache Flink:Paimon的時效性與一致性

更新時間:Jul 13, 2024

本文為您介紹Paimon的時效性與一致性。

快照檔案

快照(snapshot)檔案是讀取Paimon表資料的入口。消費者可以通過快照檔案,查詢在該快照檔案產生時刻的Paimon表中的具體資料。因此,通過讀取不同的快照檔案,消費者可以查詢Paimon表在不同時間點的狀態,在流作業中實現消費位點的修改,以及在批作業中實現time travel功能。

如果您需要查詢目前有哪些可用的快照檔案,以及每個快照檔案建立的時間點,詳情請參見Snapshots系統資料表

說明

Paimon表的消費依賴快照檔案。預設情況下,快照檔案的到期時間為1小時。若消費過程中,由於快照到期時間太短或消費作業效率較低等原因,導致消費作業的消費速率跟不上快照檔案的到期速度,正在消費的快照檔案因到期被刪除,則消費作業將會報錯。此時請考慮調整快照檔案到期時間指定Consumer IDPaimon效能最佳化

時效性

資料寫入Paimon表時,Paimon writer運算元會首先將資料緩衝在記憶體以及臨時檔案中。在Flink作業建立檢查點(Checkpoint)後,才會將臨時檔案進行提交(Commit),併產生快照(Snapshot)檔案。下遊的流式消費者將監聽Paimon表的快照檔案清單,發現新的快照檔案後,才會讀取該快照檔案對應的變更資料。

因此,Paimon的時效性受快照檔案產生頻率的影響,而在Flink作業沒有反壓的情況下,產生快照檔案的時間間隔等同於Flink作業建立檢查點的時間間隔(checkpoint interval)。也就是說,Paimon表的時效性等同於Flink作業建立檢查點的時間間隔。然而,建立檢查點的時間間隔過小,可能會對Flink作業的運行效率產生負面影響。在使用Paimon表時,我們建議將Flink作業建立檢查點的時間間隔設定為1分鐘至10分鐘。且根據業務的接受程度,應儘可能提高這一時間間隔,以進一步提高Paimon表的讀寫效率。

一致性

Paimon使用兩階段交易認可協議將資料進行原子化的提交。對於同時寫入同一張Paimon表的兩個Flink作業:

  • 不修改同一個分桶內的資料時,兩個作業中的提交操作可同時進行,並保證sequential層級的一致性。

  • (不推薦)如果兩個作業同時修改同一個分桶內的資料,Paimon將通過作業失敗重啟(Failover)的方式解決資料衝突,且只能保證Snapshot Isolation層級的一致性。也就是說,Paimon表的最終狀態可能是兩個作業結果資料的混合,不會有資料丟失。