我们可以使用任何其他数据库,如 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,有啥方法可以配置它吗?的主要内容,如果未能解决你的问题,请参考以下文章