温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,同学们,现在呢,给大家补充一个知识点,就是关于我们的定时任务呢,如何去处理数据迟到的问题啊,我们刚才的场景呢,基本上都有一个这样的特点。啊,我的任务呢,每隔一段时间调度一次,比如说每隔30秒。啊,底下呢,这个是我的时间轴。好,呃,那么现在呢,是一分钟整。啊,这边呢是一分半。这边呢是两分钟。呃,那么假如说呢,我现在这个任务是每隔30秒调度一次,然后我的数据呢,不断的向我的这个数据库里面来插入。啊,我的数据呢,他带这个自己的时间戳。然后这时候呢,在我们的一分32秒的时候。在这个时间点的时候呢,来一条数据。但这条数据的带的时间戳呢,是一分28秒。
01:01
也就是说这条数据应该出现在这个位置,但是他迟到了,他在这个时候才来。呃,那么我们的任务呢,哎,不好意思,他已经呢。在一分30秒的时候执行了。所以说他去做一个统计,或者说什么操作的时候呢。就把我现在标定的这个这条数据给漏掉了。那么我们怎么样才可以避免这种问题呢?答案是,之前我给大家讲过一个东西,一直没有说叫offset。我们通过offset呢,就可以让这个任务呢来。把这个迟到的数据也给算进来,那么现在呢,给大家说一下它是怎么样一个情况。呃,我们之前在创建定时任务的时候呢,把这个屏清一下,在data explorer里面创建定时任务,或者是这个task里面的任务详情我们可以看到啊,有一个参数我们一直没有设置,叫做offset。呃,这个地方呢,大家不要管啊,这个20分钟其实是它的一个啊填充效果啊,它实际上呢是空值,呃,假如说我这里给它设置五秒,那么在这里呢,我们其实啊看不出来什么效果,点save。
02:13
然后再点下这个,呃,Edit task。啊,可以看到我这个在代码里面的啊,这个生成这个脚本的配置里面。有个就叫OFFSET5秒。呃,那么这个东西什么意思呢?就不在程序上给大家演示了,我们去文档上看这个逻辑。呃,说白了就是配上这个,呃,Offset等于五秒呢,它会达成一个这样的效果。我原来的任务是不是应该在一分30秒啊,一分30秒去执行我原来的任务。那么配上一个OFFSET5秒之后呢?我的任务的执行时间会向后延迟五秒,在这个时间点进行查询。那么查询查询哪里的数据呢?其实查询的还是我一分30秒时候往前30秒的数据。
03:00
也就是说查询数据的范围没变,但是任务执行的时间得到了一个延迟啊,如果说我任务执行的时间往后延迟了五秒,哎,那么我一分32秒的时候。进来了一个啊,我一分32秒的时候,进来了一个一分28秒的数据。它是不是就能被统计到正确的窗口里面呢?呃,所以说就是通过一个延迟的操作来帮我们解决这个数据迟到的问题。啊,那么这个地方呢,就不带大家进行演示了啊,大家知道这个逻辑就行。
我来说两句