一步一個腳印,一天一道面試題
簡單寫幾個 Flink SQL
的優化
1.優化狀態管理
Flink
的狀態管理對整個程序的性能有較大影響。所以優化效果比較好。
- 設置空閑狀態自動清理(TTL Time-to-Live)
- 數據量大時選擇
RocksDBStateBackend
// 設置狀態TTL
tableEnv.getConfig().setIdleStateRetentionTime(Time.hours(2), Time.hours(24));// 設置 RockDB 狀態后端
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setStateBackend(new EmbeddedRocksDBStateBackend());
2.Checkpoint 策略優化
檢查點機制是會一定程度影響程序性能的,
- 設置較長時間
Checkpoint
- 如果不必要的話可以不設置精確一次性(Excatly-Once)
- 可以的話設置增量檢查點狀態快照
// 每10秒一次Checkpoint,精確一次語義
env.enableCheckpointing(10 * 1000L, CheckpointingMode.AT_LEAST_ONCE); // 在 1.15 之前,只有 RocksDB 支持增量快照
EmbeddedRocksDBStateBackend backend = new EmbeddedRocksDBStateBackend(true);
挺晚了,先寫這么多
我是近未來,祝你變得更強