在此方案中使用Apache Kafka是否有意义?

时间:2017-10-11 20:39:35

标签: apache-kafka messaging apache-kafka-streams apache-kafka-connect

有几个应用程序必须集成在一起,它们必须交换问题。因此,其中一个人会得到问题,然后做一些事情,然后改变这个问题的状态。可能涉及此问题的其他应用程序应获取新信息。这将持续到问题达到最终状态关闭。问题是必须映射问题,因为这些应用程序并不都支持相同的数据格式。

  1. 我不确定是始终发送整个问题还是仅将新状态作为事件发送。
  2. Kafka如何支持数据转换?
  3. 如果我的问题有附件怎么办?(> 5MB)
  4. 感谢您的建议

2 个答案:

答案 0 :(得分:1)

是的,它确实有意义。

Kafka可以通过Kafka Streams APIKSQL进行转换,这是一个基于Kafka Streams构建的流式SQL引擎。

通常Kafka用于较小的消息;要考虑更大内容的一种模式是将其存储在对象存储中(例如S3,或类似的,具体取决于您选择的体系结构),并在Kafka消息中引用指向它的指针。

答案 1 :(得分:0)

  1. 我不确定是始终发送整个问题还是仅将新状态作为事件发送。
  2. 你可以这样做。如果您发送整个问题,然后将所有后续更新发布到与包含公共kafka消息密钥(可能是唯一的问题ID号)的Kafka消息相同的问题,那么您可以将kafka主题配置为压缩主题,并且代理将自动删除任何较旧的数据副本以节省磁盘空间。

    如果您选择仅发送增量(更改),那么您需要小心保留足够长的保留期,以便在问题仍然打开并发布更新时,初始完整记录永不过期。默认保留期为7天。

    1. Kafka如何支持数据转换?
    2. 是。在Kafka Connect中通过单个消息转换(SMT)或在Kafka Streams中使用本机Streams代码(在Java中)。

      1. 如果我的问题有附件怎么办?(> 5MB)
      2. 您可以为大型邮件配置kafka,但如果它们远大于5或10 MB,那么通常最好遵循声明检查模式并将它们存储在Kafka外部,只需将引用链接发布回外部存储的数据即可消费者可以从Kafka带外检索附件。