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