apache-flink - 计时器(堆与 RocksDB)
问题描述
因为我使用 RocksDB 作为我的 Flink 作业的状态后端并且我正在配置这个状态后端的参数,所以我在Flink的这个页面中读到我有两个选项来保留我的计时器(rocksDB 或堆),我已阅读说明,但仍然缺少这部分的含义:
“然而,在 RocksDB 中维护定时器可能会产生一定的成本,这就是为什么 Flink 提供了将定时器存储在 JVM 堆上的选项,即使 RocksDB 用于存储其他状态。基于堆的定时器在这种情况下可以有更好的性能是较少数量的计时器。”
- 他们在这里提到的成本是多少(延迟)?
- 什么意味着更少的定时器(可以以某种方式测量这个数字,堆中允许的最大定时器数量是多少)?
解决方案
可以以更少的延迟访问基于堆的计时器。我听说的基准测试只提到了适度的改进(加速了 5-10%)。但是,将计时器保持在堆上会增加垃圾收集所涉及的对象数量,因此这也会损害整体性能(例如,最坏情况下的延迟)。
我认为您必须进行自己的基准测试才能确定在您的情况下什么是最好的,但我不希望以这种或另一种方式产生任何戏剧性的影响。
推荐阅读
- python - DM discord.py 中的特定用户
- python - Flask 服务器发送事件 (SSE) - 客户端流数据错误
- python-3.x - Django模型-保存时计算字段不起作用
- android - 首次触摸时,Material io 下拉菜单会在全垂直屏幕上打开
- c - 为什么这个 C 程序在字符串的最后加上“v”?
- image - Golang Overlay 图像总是黑白的
- json - json_decode() 在 Laravel Blade 模板中直接调用时中断 - (期望字符串,给定对象)
- python - 'index 0 is out of bounds for axis 0 with size 0' 是什么意思,我该如何解决这个错误?
- java - Spark 3.1-java 在 GCP 中运行时引发内部错误 - Dataproc 集群
- redirect - 简单的 301 重定向 - 为什么它不起作用?