卡夫卡的古典建筑,您如何实现以下目标?

时间:2018-09-11 13:34:00

标签: apache-kafka apache-kafka-streams

我们正试图从经典体系结构J2EE应用服务器/关系数据库转移到Kafka。我有一个用例,我不确定该如何进行。...

我们的应用程序使用“关系数据库”中的“调度程序”进行导出,将来,我们计划完全不在“关系数据库”中放置信息,而是直接从Kafka Topic上的信息中实现导出。

我不确定最好的解决方案是配置使用与计划程序相同的计划来轮询主题的使用者并导出内容。

还是要在计划触发点创建KafkaStream以便从Kafka Stream收集此信息?

你怎么看?

1 个答案:

答案 0 :(得分:0)

您要采用的方法在技术上是可行的,几乎没有解决方案:

1)使用Duration=<export schedule time>

连续运行Kafka-Consumer

2)Cron触发了kafka-streaming-consumer,其批处理持续时间与计划相同。抵消对Kafka的提交。

3)Cron触发Kafka消费者以编程方式处理偏移量,并根据偏移量根据偏移量提取记录。

重要注意事项:

  1. 将tention.ms增加到比计划的批处理作业时间更多的时间。
  2. 增加磁盘空间以容纳数据量激增,因为您要保留数据的时间更长。

风险和问题:

  • 周末保留率可能会丢失。
  • 如果另一个应用程序错误地使用了相同的group.id,则可能会误导偏移量。
  • 在检索之前不能应用聚合/数学功能。
  • 您的应用程序无法基于任何参数过滤/提取记录。
  • 除非偏移量是从外部管理的,否则应用程序将无法重新读取记录。
  • 记录将不会被格式化,即大多数是Json字符串或其他一些格式。