首页/数据/数仓建模速查/Flink 状态与状态后端
湖仓与引擎63 条

Flink 状态与状态后端

状态可分成键控状态与算子状态:键控状态随 key 分布、并行度高;状态后端常用 HashMapStateBackend(内存)与 EmbeddedRocksDBStateBackend(磁盘)。

数仓建模速查数据更新于 2026-10-12
键控状态ValueState/ListState/MapState
算子状态算子级共享
后端内存或 RocksDB
TTL状态过期清理

状态与 TTL

状态与 TTL
ValueStateDescriptor<Long> desc =
    new ValueStateDescriptor<>("pay_sum", Types.LONG);
StateTtlConfig ttl = StateTtlConfig
    .newBuilder(Time.days(7))
    .setUpdateType(StateTtlConfig.UpdateType.OnCreateAndWrite)
    .build();
desc.enableTimeToLive(ttl);
无 TTL 的大状态会持续膨胀,导致 Checkpoint 时间越来越长直至超时。

易错点

  • 状态无过期策略,checkpoint 逐渐超时

数据来源与参考

  • Apache Flink 官方文档:Stateful Stream Processing
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌