00:00
那接下来我们聊一聊flink circle的一个优化。Link circle呢?首先咱们可以从官网上看到很多的参数。大家可以去上面找啊,就是说你有疑问说circleq支不支持什么东西啊,你看看参数有没有对应参数就可以,好,那首先聊一个设置空闲状态保存时间,这是可能大家写蛇口容易忘了一个事儿啊,主要是新手啊,老手应该不会啊,有这么几个场景,大家要注意第一个。咱们的常规胶印。不管是inner join,还是left join right join。它实现join的方式其实就是每一条流的数据来,它都存在状态里面。然后去对方遍历一下能不能匹配上,并且呢,它的状态是不会清理的,默认都不会清理,也就是说他来多少数据就一直存,一直存,一直存很容易就爆掉。对吧?所以如果你非要用inner join right join,要么你就设置一个过期状态,过期清理就TTL。
01:07
要么你就使用flink circle里边的interval join语法,因为interval join它是有个时间区间,那到了一定的时间,它会去清理状态,这是interval join啊,这是大家要注意的第一个事,第二个事就是他们平常使用的一些语法呀,比如说用top n语法进行去重是什么意思呢?就是你用over开窗,然后取第一条的这种方式去去重。那它实现去重是不是得保存状态呀,对吧。那一般重复的数据都位于特定的区间内,也就是说你去完重之后,你不能一直保存的吧。从来不清理啊,那也不合适,那比如说正常都是一个小时或一天内,咱们的数据会重复。你要判断驱虫是要存数据的,对吧,那其实过了这段时间,这些状态是不是没必要保留了。
02:00
对吧,但是这个时候它并不会自动帮你清理啊,所以呢,我们也要去设置一些TT啊,防止咱们的一个状态膨胀的问题。那么flink是可以指定的啊,就是从我不更新开始距离的多久啊,咱们去把自动将状态清理掉。当我们某个key对应的状态未更新的时间,达到这个阈值,会自动清理,它呢,有这么一个参数。你看table ex ET TL,你可以指定为指定一个时间单位就行,或者你可以调API啊,Table,烟v get con,然后设置一个什么。空闲状态保留时间啊,两种写法都可以啊。这是要提醒大家的一件事。第二一个是mini。Mini其实就是什么长PV批次对吧,其实就长V批次,为什么要长P呢?
03:01
它的目的在于提高性能,那性能在哪呢?减少对状态的访问,诶,我一批次去访问一次。另外呢,就提升一个吞吐,减少数据的输出量,对吧,它并不是拿一条算完直接往后发,而是攒一批数据算完才发一个结果啊,有点像开了一个小窗口一样,你可以这么理解,其实就是,但是大家可想而知,是不是会影响那个咱们那个延迟啊,对吧,因为毕竟你长P了嘛。这就看你一个取舍了,但一般情况下,大部分场景还是建议开启这个mini batch功能啊,对于咱们吞吐的提升有很明显的效果。它默认是关闭的,咱们可以指定参数把它开启,其中呢主要有三个参数,第一个是开关E,把它制成处。那另外一个就是批次的一些参数了,这个批次是要攒多少条,对吧,这是攒的条数,另外一个场景就是如果迟迟攒不齐,你也不能一直攒着呀,所以它有一个时间啊,批次时间这两个条件其中一个满足,就会将该批次的数据啊,该计算计算,该输出输出,这就是一个mini batch。
04:13
对吧,那就是增加延迟换取高吞吐。那如果有超低延迟要求,那你就啊还是不开还是不开,但一般场景还是开,另外呢,大家注意看你的版本啊,就这种的配置像仅被咱们的link所支持,就是这种设置方式啊。另外呢,如果你用的flink版本是一二之前的版本啊,不包含一二,也就是说你用的可能是1.9 1.10 1.11这种版本是有bug的,就如果你开的mini Bach,咱们前面提到那个TT它是会失效的啊,这边是有bug,它是在一二版本才修复的,这边给到了这个问题列表,我们看一眼。咱也不是瞎说对吧。
05:03
有点慢,哎。好,那么大家看到是不是一个bug对吧,Bug级别的mini。分组聚合。不会过期那个状态。对吧,一是什么呢?Ttr开启,那目前已经修复了,修复的版本是1.12啊,这是要提醒大家的,应该日常在用的应该都知道这个问题。既然大家都知道,你更得知道。那咱们目前用的一三版本啊,不会有这个问题。那么这是两个也没什么好演示的,对吧,咱们结合具体后面结合一个具体案例,咱们演示一下mini batch一般,呃,咱们会也会结合其他功能一起用啊,这是关于这两点的一个介绍。
我来说两句