《李明-使用缓存提高StateBackend性能.pdf》由会员分享,可在线阅读,更多相关《李明-使用缓存提高StateBackend性能.pdf(28页珍藏版)》请在三个皮匠报告上搜索。
1、李明/字节跳动基础架构工程师StateBackendStateBackend PerformancePerformanceImprovements with CacheImprovements with Cache相关背景相关背景Background优化思路优化思路Ideas难点难点&方案方案Difficulties&Solutions业务收益业务收益Benefits未来规划未来规划Future Work#1#2#3#4#5#1#1相关背景相关背景BackgroundBackground现有 StateBackend 特点Features of existing StateBackendFsS
2、tateBackendRocksDBStateBackend原始 Object 对象+内存 Map 结构优点:访问速度快,CPU 开销低缺点:状态规模小,GC 停顿时间长存储二进制数据到 RocksDB优点:内存开销低,可支持超大状态缺点:CPU 开销高StateBackendStateHeapRocksDB业务痛点Business pain pointsFsStateBackend 带来的GC停顿时间长,业务对此有感知GCGC停顿长停顿长RocksDBStateBackend 在非 SSD 磁盘性能较差,额外的序列化/反序列化操作,增加了资源成本资源开销高资源开销高状态规模难预估,切换Sta
3、teBackend 需要额外运维选型困难选型困难问题&思考Questions&Thinking能否将 Heap 和 RocksDB 的优势结合起来?SpillableStateBackendAnti-Caching架构:内存+磁盘数据存储以 KeyGroup 为粒度动态调整内存占用以支持小规模状态为主数据交换的粒度较粗状态较大时可能退化为磁盘访问大状态不适用SQL minibatch内存攒批访问状态,相同 key 只操作一次 stateOperator 粒度实现OperatorbackendreadwriterecordOperatorbackendreadwriterecordrecordr
4、ecord业务优化:内存中增加缓存优先从内存访问,制作快照时同步到底层Operator 粒度实现Operatorbackendread/writeread/writerecordcache问题&思考Questions&Thinking#2 2优化思路优化思路IdeasIdeas样本拼接/消重行为数据流推荐数据流模型训练/在线服务业务场景PB 类型数据为主,序列化开销高状态规模大,单 Task GB 级同一个 Key 对应多条数据,大部分数据同一时间段到来缓存热点数据,减少序列化/反序列化开销热点数据缓存Cache hot dataCache LayerStateBackendState API
5、降低 StateBackend 选型难度未来可扩展到多种 StateBackend业务需求通用缓存层General cache layer提供通用缓存层,适配多种 StateBackendCacheKeyedStateCachedKeyedStateBackendStateBackendStateCacheManagerKeyedState1.1.创建创建并注册并注册 C Cacheache2.Cache2.Cache 封装封装3.3.TtlTtl StateState 封装封装CacheManagerCacheKeyedStateBackendCacheKeyedStateTM 中的常驻服务
6、管理 TM 中所有的 Cache代理底层 StateBackend创建 Cache、注册以及 State 包装代理底层 State,优先访问 Cache整体架构Overall structure监控内存情况,周期触发 Cache 扩缩容CacheManagerHeapStatusMonitorCacheStatusMonitorMemoryManagerScalingManager1.1.注册注册CacheCache2.2.上报上报 GCGC 结果结果3.3.请求请求 scalescale 的内存大小的内存大小4.4.获取获取 CacheCache 的统计信息的统计信息5.5.通知通知 Cac
7、heCache进行进行 scalescaleHeapStatusMonitorCacheStatusMonitorScalingManager统计 Cache 的运行信息,例如命中率、内存使用等动态调整 Cache 大小,优化内存使用,降低 GCMemoryManager管理TM中所有 Cache 使用的内存整体架构 Cache 管理模块Overall structure-Cache ManagerCachedKeyedStateCacheMemoryEstimatorPolicyStatsDelegateStateDataSynchronizer1.1.访问访问 StateState2.2.
8、更新统计信息更新统计信息3.3.EvictEvict 或者或者 missmiss4.4.同步数据同步数据统计 Cache 的访问信息,上报指标PolicyStatsMemoryEstimatorDataSynchronizer与底层 State 进行状态同步Cache按照缓存策略存储热点数据预估 Cache 中的状态大小整体架构 State 封装 CacheOverall structure-Wrap state with Cache#3 3难点难点&方案方案Difficulties&SolutionsDifficulties&Solutions提高缓存命中率适配不同业务场景1432避免内存溢
9、出内存管理快照制作优化内存使用,降低 GC 压力动态扩缩容降低快照制作时间技术难点Technical difficultiesCacheStrategyStateStoreCacheCache 策略与数据存储分离可根据业务场景自定义策略固定以 Map 形式存储数据控制数据的存储与删除适配不同业务场景-可插拔的 Cache 策略Adapt to business-Pluggable Cache strategyMemoryManager:确保 Cache 使用的总内存不超过配置值 管理整个 TM 中所有 Cache 内存Block 粒度管理内存Cache 注册/销毁时分配/回收内存MemoryM
10、anagerCache1.1.注册时注册时分配内存分配内存2.2.销毁销毁时释放内存时释放内存内存管理 分配与回收Memory manager-allocation and recycleblockblockblockblockblockblockAvailable BlocksAllocatedBlocksMemoryEstimator:基于序列化后的结果预估大小Cache:访问时进行内存溢出判断访问时对数据进行抽样预估根据缓存策略增量清理数据CacheMemoryEstimatorPolicyStats1.1.访问访问 StateState2.2.抽象预估抽象预估 k k-v v 大小大小
11、3.3.更新统计信息更新统计信息4.4.检查内存是否溢出检查内存是否溢出PolicyStats:记录 Cache 的统计信息命中率、请求数、大小等内存管理 数据管理Memory manager-data management通过注册 GcNotificationListener 收集HeapStatusMonitor:收集最近一段时间的GC信息HeapStatusMonitorScalingManager1.1.GcNotificationListenerGcNotificationListener 通知通知 GCGC 结果结果2.2.上报最近的上报最近的 GCGC 情况情况ScalingMa
12、nager:根据 GC 情况触发扩缩容缩容:GC 时长、频率超过阈值扩容:GC 后的平均内存大小低于阈值动态扩缩容 扩缩容触发Dynamic scaling-trigger scaling动态扩缩容 扩缩容大小Dynamic scaling-size of the scalingMemoryManagerScalingManager1.1.请求请求 scalescale 的大小的大小ScalingManager:请求本次需要Scale 的大小2.2.根据现有情况计算大小根据现有情况计算大小按照一定比例计算 scale 的大小MemoryManager:根据当前 Cache分配的内存使用情况计算
13、内存动态扩缩容 挑选CacheDynamic scaling-choose CacheLoad 成功次数和 Cache 大小权重字段权重字段归一化处理,消除量纲影响归一化归一化ScalingManager:根据 Cache 权重挑选若干个 Cache 进行 Scale!=#$%&!()!+*+,-./)001+.23!快照制作Snapshot高低水位线机制:保证修改的数据量低于高水位线超过低水位线:仅在有 evict 操作时同步若干条数据超过高水位线:每次操作都同步若干条数据,直至降低到低水位线同步阶段 Flush 脏数据到底层 StateBackendModified hot dataUnm
14、odified dataModified cold dataHigh WatermarkLow Watermark#4 4业务收益业务收益Business benefitsBusiness benefitsBenchmark对比Benchmark comparison优化效果:社区Benchmark中点查性能提升3倍+线上收益Business benefitsCPU 使用率下降50%+内存使用率上升40%50%#5 5未来规划未来规划FutureFuture WorkWork未来规划Future Task优化 Cache 策略结合业务场景,自定义 Cache 策略Compaction 策略优化减少 CPU 尖刺、小文件数量恢复性能提升Savepoint 以及扩缩容场景探索新的 StateBackend例如 RemoteStateBackendTHANKS