打造通用缓存层:字节跳动 Flink StateBackend 性能提升之路
内容简介:StateBackend 作为 Flink 向上提供 State 能力的基石,其性能会严重影响任务的吞吐。本次分享主要介绍在字节跳动内部通过为 StateBackend 提供通用缓存层,来提高性能的相关优化。 作者|字节跳动基础架构研发工程师-李明 一、相关背景 StateBackend 是 Flink 向上提供 State 能力的基石,其性能会严重影响任务的吞吐。目前 Flink 提供的生产可用的 Statebackend 主要有两类,一类是 FsStateBackend,另一类是 RocksDBStateBackend。他们的基本原理都是提供一个 State API 给用户使用,底层会根据 StateBackend 类型选用不同的存储来存储数据。 FsStateBackend 底层实现是在内存中通过 Map 的数据结构来存储数据,把原始的数据对象直接存储到内存中。这种 StateBackend 的优点是访问速度特别快,所有操作都是在内存中进行,基本没有额外的 CPU 开销。缺点是随着状态规模的增长,JVM 的 GC 停顿时间也会越来越长,同时状态规模会受到内存的限制。 R...