在对Apache Kafka 0.9和0.10中的新特性进行调查期间,我们使用了KStreams和KTables。Kafka内部使用RocksDB是一个有趣的事实。请参阅介绍Kafka Streams:使流处理变得简单。RocksDB不是用JVM兼容的语言编写的,因此它需要仔细处理部署,因为它需要额外的共享库(OS依赖)。
这里有一些简单的问题:
我试图搜索答案,但我只看到隐含的原因,RocksDB对于每秒大约数百万次操作的操作来说非常快。
另一方面,我看到一些用Java编码的数据库,也许端到端它们可以做到这一点,因为它们没有JNI。
RocksDB的使用有几个(内部)原因(正如您已经提到的,例如它的性能)。从概念上讲,Kafka Streams不需要RocksDB——它用作内部键值缓存,任何其他提供类似功能的存储也可以工作。
下面@miguno的评论(改写):
与纯内存键值存储相比,RocksDB的一个重要优势是它能够写入磁盘。因此,Kafka Streams可以支持大于可用主存的状态。
上面@miguno的评论:
FYI:"RocksDB不是用JVM兼容的语言编写的,所以它需要仔细处理部署,因为它需要额外的共享库(OS依赖)。"
作为Kafka Streams的用户,你不需要安装任何东西。
使用Kafka StreamsDSL,从0.10.2版本(KAFKA-3825)开始,可以插入自定义状态存储并使用不同的键值存储。
使用Kafka Streams处理器API,您可以通过StateStore
接口实现自己的存储,并将其连接到拓扑中的处理器节点。