Apache kafka 如何在没有Kafka Connect接收器的情况下将数据从Kafka获取到存储中?

Apache kafka 如何在没有Kafka Connect接收器的情况下将数据从Kafka获取到存储中?,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,当阅读有关卡夫卡以及如何将数据从卡夫卡获取到适合某些特定任务的可查询数据库时,通常会提到卡夫卡连接接收器。 如果我需要Kafka来搜索索引(如ElasticSearch)或分析(如Hadoop)来激发Kafka连接接收器的可用性,那么这听起来是一个不错的选择 但我的问题是,处理不像MyImageAryDB这样受欢迎的存储的最佳方式是什么?在MyImageAryDB中,我唯一可以访问它的方式是通过一些API,数据需要安全可靠地处理,并在插入之前进行适当的转换?建议: 只需使用Kafka提供的API

当阅读有关卡夫卡以及如何将数据从卡夫卡获取到适合某些特定任务的可查询数据库时,通常会提到卡夫卡连接接收器。 如果我需要Kafka来搜索索引(如ElasticSearch)或分析(如Hadoop)来激发Kafka连接接收器的可用性,那么这听起来是一个不错的选择

但我的问题是,处理不像MyImageAryDB这样受欢迎的存储的最佳方式是什么?在MyImageAryDB中,我唯一可以访问它的方式是通过一些API,数据需要安全可靠地处理,并在插入之前进行适当的转换?建议:

  • 只需使用Kafka提供的API,并使用MyImaginaryDB驱动程序进行编写
  • 了解如何构建自定义Kafka Connect接收器(假设它能够处理模式、身份验证/授权、重试、容错、转换和登录MyImageAryDB之前所需的后处理)

  • 我也一直在阅读关于Kafka KSQL和Streams的文章,我想知道这是否有助于在数据发送到终端存储之前对其进行转换。

    选项2,当然。仅仅因为没有现有的源连接器,并不意味着Kafka Connect不适合您。如果您打算编写一些代码,那么挂接到Kafka Connect框架仍然是有意义的。Kafka Connect处理所有常见事务(模式、序列化、重新启动、偏移量跟踪、扩展、并行等),让您只需实现将数据获取到MyImageAryDB的功能

    关于转换,标准模式为:

    • 对轻量级的东西使用单一消息转换
    • 使用Kafka Streams/KSQL并写回另一个主题,然后通过Kafka Connect将该主题路由到目标
    如果你试图构建自己的应用程序(转换+数据接收器),那么你就是在分担责任,并且你正在重新创造已经存在的一大块轮子(以可靠的可扩展方式与外部系统集成)


    您可能会发现这篇演讲对于了解Kafka Connect的功能非常有用:

    如果您告诉我们要使用什么数据库,您可能会得到更好的答案。否则它可能会因为“不清楚你在问什么”或“太宽泛”而关闭。这取决于你的总体情况。如果您已经在其他几个地方使用了Connect,那么使用Connect也可以保持系统的一致性。如果你没有这方面的经验,你需要做出战略决策,决定是否开始。写一个简单的消费者肯定是最简单的解决方案。哇,你就是那个在所有合流文章上都有脸的人!谢谢,我真的很喜欢这次谈话,学到了很多!对于我的特定用例,我计划与区块链集成(尚未提供预制接收器:P)。通常,您会编写一个REST/GraphQL API,通过区块链的驱动程序/SDK库将一些JSON/string/buffer传递给链码函数,因此似乎只要该特定区块链有Java驱动程序,API部分就可以抽象为Kafka连接接收器。是时候学习Java/Kafka/Kafka Connect了!:)