@Li Benchao
(1)
如果不是每个key一个timer,但超时仍然应该是key级别的吧,只是说清理机制上不是每个key设置一个timer去清理。
比如有个全局的其他机制定期扫描清理,但超时时间应该还是key级别。

(2)
关于超时时间,对于一个key,他的value每次更新超时都会重新计算,还是永远按照这个key创建时时间开始计算呢。

Benchao Li <[email protected]> 于2020年8月15日周六 下午7:27写道:

> 是按照每个key来清理的。清理时机是跟它最后的更新时间有关系,
> 也就是在最后一次更新加上state retention时间这么长的时间后会清理。
>
> 最开始实现状态清理的时候,用的都是timer来清理,也就是每个key下都有自己的timer。
> 现在是比较推荐使用state本身的TTL来做状态清理,并且用的是UpdateType.OnCreateAndWrite。
> 不过现在还没有完全把每个算子和function都重构成这样子,所以还有些老的算子还是用的
> timer来实现的。
>
> sunfulin <[email protected]> 于2020年8月15日周六 下午6:12写道:
>
> >
> >
> >
> > hi,
> > 我的理解也是按每个key的时间来的,没仔细看具体实现。
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > 在 2020-08-15 17:28:43,"art" <[email protected]> 写道:
> >
> > The Idle State Retention Time parameters define for how long the state of
> > a key is retained without being updated before it is removed.
> > 我感觉我的理解错了,这个官方描述不是state of a key, 应该是每个key都有自己的过期时间吧,那么你那个状态不是应该以user登陆后
> 开始
> > 计时,不应该是作业启动吧,还望有个大佬可以解惑
> >
> >
> >
> > 在 2020年8月15日,下午3:06,sunfulin <[email protected]> 写道:
> >
> >
> > hi,
> > 有可能这个是默认实现。我还发现另外一个问题,如果我不使用minibatch,发现作业的状态貌似不生效。导致输出了多条数据。不知道这是为何。
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > 在 2020-08-15 13:30:24,"superainbower" <[email protected]> 写道:
> >
> > 新手感觉应该是统一启动后满足TTL设置的时间就会全部清理,如果不这样,你每一个user的清理时间都不一样,那不得记录成百上千的user的更新时间
> >
> > 在2020年08月15日 13:15,sunfulin 写道:
> > hi,community,
> >
> 想确认下idlestateretention的配置及生效机制,我有一个作业,设置了TTL为(10小时,10小时+5分钟)。假设我的作业是今天12:00启动,作业逻辑是统计当日10点后每个userId第一次登陆的时间:select
> > userId, first_value(xxx) from source group by userId,
> > date_format(eventtime,
> > 'yyyy-MM-dd')。那么我的作业的状态清理时机是从启动时间开始10小时之后么?还是会按照状态的数据更新的时间+10小时作为清理时间?
> > 我使用flink 1.10.1版本,初步观察到的现象是,启动时间开始大概10小时后,状态开始清理。这个感觉不符合预期?求大佬帮忙确认下。
> >
> >
> >
> >
> >
> >
> >
>
> --
>
> Best,
> Benchao Li
>

回复