Topling Flink 使用 ToplingDB 作为状态后端,完全兼容将 rocksdb 状态后端的同时,性能提升 4 倍。
在大数据流处理领域,Apache Flink 凭借其出色的状态管理和容错机制成为了业界标杆。而 RocksDB 作为 Flink 最常用的状态后端存储引擎,其性能直接影响着整个流处理作业的吞吐量和延迟。近期,我们将 ToplingDB 成功集成到 Flink release-2.0 ,作为原版 RocksDB 的直接替代方案,取得了令人瞩目的性能提升。
其中横坐标数字表示测试项编号(测试项名字太长,编号名字对应关系见后面的详表)
从测试结果可以看出,ToplingDB 在所有基准测试项目中均展现出显著优势。具体表现在:
ToplingDB 作为 Flink 状态后端的巨大潜力。其卓越的性能表现、简单的集成方式和灵活的配置管理,使其成为高性能 Flink 应用的理想选择。 对于正在使用或考虑使用 Flink 的企业和开发者,我们强烈推荐尝试 ToplingDB 作为状态后端存储引擎。它不仅能够提供即时的性能提升,还能降低系统复杂性和运维成本。
Topling Flink 是基于 ToplingDB 的 Flink,分叉自 apache flink,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口。保持兼容的前提下,性能大幅提升。
我们已经发布了 Flink 状态后端: ToplingDB vs RocksDB,并且开源。编号 | 测试项名称 | ToplingDB | RocksDB |
1 | ListStateBenchmark.listAdd | 1079.393 | 421.951 |
2 | ListStateBenchmark.listAddAll | 505.823 | 282.129 |
3 | ListStateBenchmark.listAppend | 1203.678 | 396.385 |
4 | ListStateBenchmark.listGet | 1921.897 | 449.138 |
5 | ListStateBenchmark.listGetAndIterate | 1924.075 | 458.202 |
6 | ListStateBenchmark.listUpdate | 1235.666 | 407.245 |
7 | MapStateBenchmark.mapAdd | 1102.394 | 382.158 |
8 | MapStateBenchmark.mapContains | 1730.494 | 487.324 |
9 | MapStateBenchmark.mapEntries | 3085.54 | 1313.344 |
10 | MapStateBenchmark.mapGet | 1523.645 | 398.023 |
11 | MapStateBenchmark.mapIsEmpty | 843.915 | 266.39 |
12 | MapStateBenchmark.mapIterator | 3327.355 | 1280.043 |
13 | MapStateBenchmark.mapKeys | 3810.861 | 1293.438 |
14 | MapStateBenchmark.mapPutAll | 296.987 | 126.714 |
15 | MapStateBenchmark.mapRemove | 1272.567 | 363.7 |
16 | MapStateBenchmark.mapUpdate | 1129.528 | 376.142 |
17 | MapStateBenchmark.mapValues | 3492.021 | 1319.331 |
18 | ValueStateBenchmark.valueAdd | 1213.985 | 388.418 |
19 | ValueStateBenchmark.valueGet | 2290.746 | 775.011 |
20 | ValueStateBenchmark.valueUpdate | 1192.72 | 385.393 |
21 | ttl.TtlListStateBenchmark.listAdd - OnCreateAndWrite | 1083.25 | 394.83 |
22 | ttl.TtlListStateBenchmark.listAdd - OnReadAndWrite | 1071.17 | 395.58 |
23 | ttl.TtlListStateBenchmark.listAddAll - OnCreateAndWrite | 257.383 | 79.02 |
24 | ttl.TtlListStateBenchmark.listAddAll - OnReadAndWrite | 253.553 | 79.02 |
25 | ttl.TtlListStateBenchmark.listAppend - OnCreateAndWrite | 1069.01 | 386.36 |
26 | ttl.TtlListStateBenchmark.listAppend - OnReadAndWrite | 1072.84 | 383.72 |
27 | ttl.TtlListStateBenchmark.listGet - OnCreateAndWrite | 1779.89 | 493.85 |
28 | ttl.TtlListStateBenchmark.listGet - OnReadAndWrite | 710.25 | 213.1 |
29 | ttl.TtlListStateBenchmark.listGetAndIterate - OnCreateAndWrite | 1671.69 | 481.71 |
30 | ttl.TtlListStateBenchmark.listGetAndIterate - OnReadAndWrite | 710.39 | 213.94 |
31 | ttl.TtlListStateBenchmark.listUpdate - OnCreateAndWrite | 1082.45 | 395.91 |
32 | ttl.TtlListStateBenchmark.listUpdate - OnReadAndWrite | 1081.67 | 396.05 |
33 | ttl.TtlMapStateBenchmark.mapAdd - OnCreateAndWrite | 1016.88 | 381.27 |
34 | ttl.TtlMapStateBenchmark.mapAdd - OnReadAndWrite | 1000.12 | 375.6 |
35 | ttl.TtlMapStateBenchmark.mapGet - OnCreateAndWrite | 1226.75 | 343.37 |
36 | ttl.TtlMapStateBenchmark.mapGet - OnReadAndWrite | 688.46 | 205.08 |
37 | ttl.TtlMapStateBenchmark.mapIsEmpty - OnCreateAndWrite | 561.11 | 215.98 |
38 | ttl.TtlMapStateBenchmark.mapIsEmpty - OnReadAndWrite | 563.68 | 220.08 |
39 | ttl.TtlMapStateBenchmark.mapIterator - OnCreateAndWrite | 2401.46 | 1063.89 |
40 | ttl.TtlMapStateBenchmark.mapIterator - OnReadAndWrite | 610.19 | 292.63 |
41 | ttl.TtlMapStateBenchmark.mapPutAll - OnCreateAndWrite | 264.431 | 113.49 |
42 | ttl.TtlMapStateBenchmark.mapPutAll - OnReadAndWrite | 259.079 | 114.55 |
43 | ttl.TtlMapStateBenchmark.mapUpdate - OnCreateAndWrite | 1026.27 | 372.86 |
44 | ttl.TtlMapStateBenchmark.mapUpdate - OnReadAndWrite | 1026 | 375.41 |
45 | ttl.TtlValueStateBenchmark.valueAdd - OnCreateAndWrite | 1110.14 | 382.84 |
46 | ttl.TtlValueStateBenchmark.valueAdd - OnReadAndWrite | 1110.93 | 380.08 |
47 | ttl.TtlValueStateBenchmark.valueGet - OnCreateAndWrite | 2001.33 | 730.91 |
48 | ttl.TtlValueStateBenchmark.valueGet - OnReadAndWrite | 683.83 | 209.58 |
49 | ttl.TtlValueStateBenchmark.valueUpdate - OnCreateAndWrite | 1050.12 | 383.82 |
50 | ttl.TtlValueStateBenchmark.valueUpdate - OnReadAndWrite | 1054.43 | 383.33 |