实时数仓建设第3问:Lookup维表缓存数据TTL不需要设置几个小时,数据一被访问就更新生命周期生命周期?

同事说维表缓存,当缓存项在指定的时间段内没有被读就会被回收,如果被读就会延长ttl时间。如果关联的维表数据变动就会导致无法获取最新维度数据,这种场景必须关闭缓存。

在flink 1.16之前缓存的创建方式如下:

CacheBuilder.newBuilder()       .expireAfterWrite(cacheExpireMs, TimeUnit.MILLISECONDS)        .maximumSize(cacheMaxSize)        .build()

flink1.16后缓存增加了参数给用户设置如下:

CacheBuilder guavaCacheBuilder = CacheBuilder.newBuilder();
                if (expireAfterAccessDuration != null) {
                    guavaCacheBuilder.expireAfterAccess(expireAfterAccessDuration);
                }
                if (expireAfterWriteDuration != null) {
                    guavaCacheBuilder.expireAfterWrite(expireAfterWriteDuration);
                }
                if (maximumSize != null) {
                    guavaCacheBuilder.maximumSize(maximumSize);
                }
                if (ticker != null) {
                    guavaCacheBuilder.ticker(ticker);
                }
                guavaCache = guavaCacheBuilder.build();

expireAfterAccess: 当缓存项在指定的时间段内没有被读或写就会被回收。

expireAfterWrite:当缓存项在指定的时间段内没有更新就会被回收。

refreshAfterWrite:当缓存项上一次更新操作之后的多久会被刷新。

专栏初衷:

  • 要想快速建设实时数仓,对齐离线数仓分层,首选Flink SQL,相比datastream 代码,Flink SQL可大幅提升10倍实时数仓建设落地时间。
  • 作者位于大厂实时数仓团队,目前运行实时任务3000+,实时集群规模2万CU,集群checkpoint峰值5TB,单任务最大QPS峰值50W。
  • 本专栏将分享作者在实时数仓建设过程中遇到的细节点,帮组大家快速建设实时数仓。

作者信息:

  • 1.《深入理解Flink核心设计与实践原理》一书作者
  • 2.GitHub 热门项目 fink-boot(800+) 开发者,致力于flink与spring生态集成

你可能感兴趣的:(Flink,SQL实时数仓建设512点,flink)