• 多襄丸
    2020-10-19
    在处理每个元素的时候可以注册一个计时器 也可以在处理元素的时候通过deleteEventTimeTimer(ts)来删除当前key的计时器 但是这个key的计时器可能已经有多个还未触发,我调用delete的时候删除的是最早创建的那个吗? 我还想问一下 对于processElement 和 onTimer这两个方法的调用是同步的 这个应该怎么理解?

    作者回复: 删除定时器这种操作比较少,是按照给定时间来删除的,processElement 和 onTimer两个方法是在同一个线程中处理的,如果不是同步的话就会出现线程安全的问题,这样processElement()方法处理的数据就会出现不一致的情况

    
    2
  • 多襄丸
    2020-10-19
    另外 老师我想问一下 视频中的代码在每一次处理新元素的时候注册一个计时器 那如果上一次注册的计时器还未触发,本次注册的计时器 是继续新注册一个计时器,还是覆盖上一次那个未触发的计时器?

    作者回复: 继续注册Timer,注意Timer数据都是存在JVM Heap中的,并且也是要做快照处理的。

    
    1
  • 长脖子树
    2020-10-22
    TimerService 接口中有删除定时器的接口 void deleteProcessingTimeTimer(long time); void deleteEventTimeTimer(long time); 输入给定的时间, 就可以删除那个时间的定时器

    作者回复: 是的

    
    
  • 多襄丸
    2020-10-19
    考虑一种删除计时器的场景: 假设上游发送过来的key-value中的value可正可负 我们需要在state中维护一个value的sum值, 当这个value值变大的时候我们注册一个计时器,进行sum的输出并清除这个状态; 当这个value值变小的时候我们取消这个计时器,不做sum的输出与清除。
    
    3
  • 小菜鸟
    2023-06-21 来自内蒙古
    这个state 如果算子是多并行度 是怎么保证数据计算是正确的呢
    
    
  • Geek_bad486
    2023-02-23 来自湖北
    请问注册定时器的代价是否高昂?因为这里的实例注册定时器太过于频繁了
    
    
  • Zoro
    2022-03-31
    您好,我现在要对全国单量进行统计,但是如果用allwindow会影响性能,我先通过订单做一个hash 然后keyed分开计算,最后要用什么方式再合并起来
    
    
  • 维E
    2021-11-24
    可以在处理当前元素之前把上一个元素的定时器删除掉?这样就不会每个元素处理完的100ms后多要触发一次onTimer了,只有在100ms内没有来新元素把上一个元素的定时器删除掉的时候才会触发onTimer
    
    
  • Allan
    2021-03-03
    在onTimer中我们可以通过ctx拿到ctx.timerService().deleteEventTimeTimer(timestamp);进行删除。删除只是删除了定时器,感觉已经到了onTimer,删不删除已经没啥意义了吧?数据发不发下游 通过收集器控制就好了。
    
    
  • 小白
    2020-11-04
    例子中数据流里的key都是相同的值吗?如果不是,是每个key都对应一个ValueState对象吗?
    共 1 条评论
    