为什么 Apache Kafka Streams 使用 RocksDB 以及如何改变它?
Why Apache Kafka Streams uses RocksDB and if how is it possible to change it?
在调查 Apache Kafka 0.9 和 0.10 的新功能期间,
我们用过 KStreams 和 KTables。有一个有趣的事实,Kafka 内部使用 RocksDB。
参见 Introducing Kafka Streams: Stream Processing Made Simple。
RocksDB 不是用 JVM 兼容语言编写的,因此需要小心处理部署,因为它需要额外的共享库(OS 依赖)。
还有一些简单的问题:
- 为什么 Apache Kafka Streams 使用 RocksDB?
- 如何改变它?
我曾尝试搜索答案,但我只看到隐含的原因,即 RocksDB 对于每秒大约数百万次操作范围内的操作非常快。
另一方面,我看到一些数据库在 Java 中编码,也许端到端它们可以这样做,而且它们不通过 JNI。
出于几个(内部)原因使用 RocksDB(正如您已经提到的,例如它的性能)。从概念上讲,Kafka Streams 不需要 RocksDB——它用作内部键值缓存,任何其他提供类似功能的存储也可以。
下面@miguno 的评论(改写):
One important advantage of RocksDB in contrast to pure in-memory key-value stores is its ability to write to disc. Thus, a state larger than available main memory can be supported by Kafka Streams.
以上来自@miguno 的评论:
FYI: "RocksDB is not written in JVM compatible language, so it needs careful handling of the deployment, as it needs extra shared library (OS dependent)."
As a user of Kafka Streams you don't need to install anything.
使用 Kafka Streams DSL,从 0.10.2 版本 (KAFKA-3825) 开始,可以插入自定义状态存储并使用不同的键值存储.
使用 Kafka Streams Processor API,您可以通过 StateStore
接口实现自己的存储并将其连接到拓扑中的处理器节点。
在调查 Apache Kafka 0.9 和 0.10 的新功能期间, 我们用过 KStreams 和 KTables。有一个有趣的事实,Kafka 内部使用 RocksDB。 参见 Introducing Kafka Streams: Stream Processing Made Simple。 RocksDB 不是用 JVM 兼容语言编写的,因此需要小心处理部署,因为它需要额外的共享库(OS 依赖)。
还有一些简单的问题:
- 为什么 Apache Kafka Streams 使用 RocksDB?
- 如何改变它?
我曾尝试搜索答案,但我只看到隐含的原因,即 RocksDB 对于每秒大约数百万次操作范围内的操作非常快。
另一方面,我看到一些数据库在 Java 中编码,也许端到端它们可以这样做,而且它们不通过 JNI。
出于几个(内部)原因使用 RocksDB(正如您已经提到的,例如它的性能)。从概念上讲,Kafka Streams 不需要 RocksDB——它用作内部键值缓存,任何其他提供类似功能的存储也可以。
下面@miguno 的评论(改写):
One important advantage of RocksDB in contrast to pure in-memory key-value stores is its ability to write to disc. Thus, a state larger than available main memory can be supported by Kafka Streams.
以上来自@miguno 的评论:
FYI:
"RocksDB is not written in JVM compatible language, so it needs careful handling of the deployment, as it needs extra shared library (OS dependent)."
As a user of Kafka Streams you don't need to install anything.
使用 Kafka Streams DSL,从 0.10.2 版本 (KAFKA-3825) 开始,可以插入自定义状态存储并使用不同的键值存储.
使用 Kafka Streams Processor API,您可以通过 StateStore
接口实现自己的存储并将其连接到拓扑中的处理器节点。