在kafka-streams本地商店(rocksdb)中存储批次唯一ID

时间:2019-12-02 16:09:12

标签: apache-kafka apache-kafka-streams

我正在研究kafka事务处理的一个常见案例:

  1. Topic A读取批次
  2. 流程批处理(业务逻辑)
  3. 保存到数据库(整个批次提交数据库事务)
  4. 将批次发送到Topic B(提交Kafka交易)

当前,为了方便起见,当步骤Batch ID (partition + offset)成功通过但步骤3失败时,我正在使用同一数据库存储业务数据和保存4应用程序崩溃。这样,在可恢复的应用程序启动时,我可以验证是否再次处理了该当前批次(由于崩溃前在步骤4上没有提交),因此我可以直接跳至步骤{{1 }}。

我正在考虑使用Kafka Streams解决下一个问题:

  1. 卸载主要业务数据库并将4存储在kafka流本地状态存储区(rocksdb)中,因为验证请求(保证服务的幂等性)在每一批中都执行
  2. 如果批次确实很胖,请利用本地商店的LRU。

Kafka-Streams是否是为此目的合适的选择?

Ps 我在这里问,因为我没有找到任何信息(在kafka文档,会议,演讲中搜索),以获取有关本地商店机制及其内幕机制的信息。

0 个答案:

没有答案