gpt4 book ai didi

java-native-interface - 为什么 Apache Kafka Streams 使用 RocksDB 以及如何改变它?

转载 作者:行者123 更新时间:2023-12-03 13:29:55 25 4
gpt4 key购买 nike

在调查 Apache Kafka 0.9 和 0.10 的新功能时,
我们使用过 KStreams 和 KTables。有一个有趣的事实是 Kafka 在内部使用 RocksDB。
Introducing Kafka Streams: Stream Processing Made Simple .
RocksDB 不是用 JVM 兼容语言编写的,因此需要仔细处理部署,因为它需要额外的共享库(取决于操作系统)。

这里有一些简单的问题:

  • 为什么 Apache Kafka Streams 使用 RocksDB?
  • 怎么可能改变它?

  • 我曾试图寻找答案,但我只看到隐含的原因,即 RocksDB 对于每秒数百万次操作范围内的操作非常快。

    另一方面,我看到一些用 Java 编码的 DB,也许端到端它们可以做到这一点,而且它们不会通过 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.


    使用 卡夫卡流 DSL ,从 0.10.2 版本 ( KAFKA-3825 ) 开始,可以插入自定义状态存储并使用不同的键值存储。
    使用 Kafka 流处理器 API ,您可以通过 StateStore 实现自己的商店接口(interface)并将其连接到拓扑中的处理器节点。

    关于java-native-interface - 为什么 Apache Kafka Streams 使用 RocksDB 以及如何改变它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40110511/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com