我们可以使用任何其他数据库,如 MariaDB 或 MongoDB 来在 Kafka Streams 中存储状态而不是 Rocks DB,有啥方法可以配置它吗?

Posted

技术标签:

【中文标题】我们可以使用任何其他数据库,如 MariaDB 或 MongoDB 来在 Kafka Streams 中存储状态而不是 Rocks DB,有啥方法可以配置它吗?【英文标题】:Can we use any other database like MariaDB or MongoDB for Storing states in Kafka Streams instead of Rocks DB, is there any way to configure it?我们可以使用任何其他数据库,如 MariaDB 或 MongoDB 来在 Kafka Streams 中存储状态而不是 Rocks DB,有什么方法可以配置它吗? 【发布时间】:2020-12-16 00:19:03 【问题描述】:

我有一个 Spring Boot Kafka Stream 应用程序,它处理所有传入事件并将其存储在 Kafka Streams 内部提供的 State Store 中,并使用交互式查询服务对其进行查询。在所有这些使用“RocksDB”的 Kafka Streams 中,我想用任何其他可以配置的数据库替换这个 RocksDB,比如 MariaDB 或 MongoDB。有没有办法做到这一点?如果没有

如何配置 Kafka Stream 应用程序以使用 MongoDB 创建状态存储。

【问题讨论】:

【参考方案1】:

StateStore / KeyValueStore 是 Kafka Streams 中的开放接口,可以与 TopologyBuilder.addStateStore 一起使用

是的,您可以使用您选择的数据库将值具体化到您自己的存储实现中,但如果存在任何数据库连接问题(尤其是远程数据库),它将影响处理语义。

相反,使用更多事务日志的主题然后使用 Kafka Connect 跟进是外部系统的正确方法

【讨论】:

以上是关于我们可以使用任何其他数据库,如 MariaDB 或 MongoDB 来在 Kafka Streams 中存储状态而不是 Rocks DB,有啥方法可以配置它吗?的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB

从另一个 Docker 访问一个 Docker 中的 MariaDB

企业私有云之mariadb集群高可用

mysql/mariadb知识点总结 之 库管理语句

mysql/mariadb知识点总结 之 库管理语句

mysql/mariadb知识点总结 之 库管理语句