网站代做多长时间,怎么样做网页设计,如何运营微信公众号,男人最好用的浏览器背景
由于我们在flink中使用了状态比较大#xff0c;无法完全把状态数据存放到tm的堆内存中#xff0c;所以我们选择了把状态存放到rockdb上#xff0c;也就是使用rockdb作为状态后端存储,本文就是简单记录下使用rockdb状态后端存储的几个重要的配置项
使用rockdb状态后端…背景
由于我们在flink中使用了状态比较大无法完全把状态数据存放到tm的堆内存中所以我们选择了把状态存放到rockdb上也就是使用rockdb作为状态后端存储,本文就是简单记录下使用rockdb状态后端存储的几个重要的配置项
使用rockdb状态后端
1.首先看一下rockdb的设计图
从中需要注意几点
1.1 每次状态读取操作不一定会经过磁盘有可能直接从内存中就可以获取到记录了也有可能要经过好几次IO操作才能读取到记录
1.2 每次写操作都会把记录先顺序写到WAL日志文件中然后写入memtable内存表由于写操作是顺序写虽然比不上直接操作内存但是性能也不会很差
2.flink全局维度的重要的配置项
state.backend.rocksdb.memory.managed 默认值true开启rockdb作为flink状态后端存储
taskmanager.memory.managed.size 默认不配置,显示给rockdb用的堆外内存的总大小 taskmanager.memory.managed.fraction 默认0.4当参数taskmanager.memory.managed.size没有配置时给rockdb用的堆外内存的总大小占堆大小的比例
3.rockdb内部的重要的配置项
我们知道rockdb中内部的内存占用主要包含memtable表索引(包括数据索引和布隆过滤器索引)以及BlockCache以下两个配置是调整rockdb内部的内存占用比例的
state.backend.rocksdb.memory.write-buffer-ratio默认值 0.5即 50% 的给定内存会分配给写缓冲区使用这里也就是memtable使用的内存 state.backend.rocksdb.memory.high-prio-pool-ratio默认值 0.1即 10% 的 block cache 内存会优先分配给索引及过滤器。 我们强烈建议不要将此值设置为零以防止索引和过滤器被频繁踢出缓存而导致性能问题