我们是一个源系统,我们有几个下游系统需要我们的数据来满足他们的需求,目前我们正在将事件发布到Kafka主题当源系统发生变化时,它们需要对它们的表进行消费和更改(所有增量更新)
我们的下游系统正在访问我们的数据库除了订阅Kafka主题外,有时直接根据需要对他们的表进行完全刷新,以确保数据同步,正如你所知,当我们感到数据出于某种原因不同步时,我们总是需要数据刷新。
我们计划停止直接访问我们的数据库,我们如何实现这一点?是否有一种方法可以让消费者通过任何触发器请求我们他们的数据需求,比如将请求传递给我们,我们可以发布数据流供他们在他们的终端上消费,他们同步表或将批量数据存储到他们的内存中,以根据他们的需求执行一些任务。
我们现在所写的RESTful api来提供数据基于请求,但是我认为我们暴露小数据量作为api我们只发送小卷的数据,但它不会工作当我们想向消费者发送数以百万计的数据,我相信的唯一途径是对卡夫卡流数据,但卡夫卡从消费者和我们如何回应请求只有泵特定数据对卡夫卡主题消费?
您可以选择在任何主题上设置保留策略,以永久保留消息:
retention.ms: -1
参见docs
在这种情况下,您可以以与当前相同的方式存储整个更改日志。然后,如果消费者需要重新实现整个历史,他们可以从第一个偏移量开始,然后从那里开始,而无需生成专门的数据集。