我只是好奇,用kafka消费api编写自己的代码从kafka读取,用aws sdk编写s3,这是不是很简单?有很多不明显的并发症需要处理吗?我这么问是因为kafka connect似乎是从kafka向s3写信的最受建议的方式。
vuktfyat1#
有两个优点:connect可以以分布式方式部署,因此可以扩展连接是容错的您只需配置连接器并使用它(无需编码)如果您进行了更新,则不需要更新任何代码(您没有编写任何代码)当然,您可以编写自己的消费者应用程序来编写s3,但是为什么要重新发明轮子呢?
vjrehmav2#
您可能已经看到前面提到的它是一个类比,所以我在这里也将使用它:您可能认为connect是kafka生产者和消费者的高级框架,旨在使用source和sink(connect中生产者和消费者的高级等价物)将您的数据与kafka集成。各种这样的源和汇,简单地说是连接器,已经有了。具体来说,关于从kafka到amazons3的数据导出,已经有一些连接器可用,而且由于我部分负责最新的一个,所以请允许我提到使用它的一些优点(希望这能回答您的问题:从头开始实现所有这些特性是简单还是简单)。与直接基于消费者编写程序相比,我将把我的论点大致分为两类:
集群上的透明和可伸缩执行。容错执行,与kafka使用者组相同(优点是无需编写代码即可获得容错)用于启动和停止连接器的rest接口。一小部分指标(不久将扩展到一整套性能和操作指标)。总之,定义简单直观的流式数据流,包括源、数据的简单转换(SMT)和汇。
多个格式化程序(当前正在导出binary.avro文件和text.json文件)支持结构化或非结构化数据,前者支持模式演化。一系列的分区器:基于大小、时间或字段的,如果它们不完全符合您的要求,您可以使用它们作为基类来构建适合您的用例的自定义分区器。上面的分区器的大多数用例都只有一次语义(这意味着,如果您重新处理数据,或者从故障中恢复,您将不会在s3中看到重复的记录)。易于配置。来自社区的积极支持(如果您将它们开源,那么您的类也可能最终获得这些支持)。总的来说,您不必从头开始编写和维护许多其他人(如您)想要使用的代码。此外,如果发现缺少一个或多个特性,可以在开源s3连接器中提供这些特性。
2条答案
按热度按时间vuktfyat1#
有两个优点:
connect可以以分布式方式部署,因此可以扩展
连接是容错的
您只需配置连接器并使用它(无需编码)
如果您进行了更新,则不需要更新任何代码(您没有编写任何代码)
当然,您可以编写自己的消费者应用程序来编写s3,但是为什么要重新发明轮子呢?
vjrehmav2#
您可能已经看到前面提到的它是一个类比,所以我在这里也将使用它:您可能认为connect是kafka生产者和消费者的高级框架,旨在使用source和sink(connect中生产者和消费者的高级等价物)将您的数据与kafka集成。各种这样的源和汇,简单地说是连接器,已经有了。
具体来说,关于从kafka到amazons3的数据导出,已经有一些连接器可用,而且由于我部分负责最新的一个,所以请允许我提到使用它的一些优点(希望这能回答您的问题:从头开始实现所有这些特性是简单还是简单)。
与直接基于消费者编写程序相比,我将把我的论点大致分为两类:
connect框架提供的优点
集群上的透明和可伸缩执行。
容错执行,与kafka使用者组相同(优点是无需编写代码即可获得容错)
用于启动和停止连接器的rest接口。
一小部分指标(不久将扩展到一整套性能和操作指标)。
总之,定义简单直观的流式数据流,包括源、数据的简单转换(SMT)和汇。
s3连接器提供的优点
多个格式化程序(当前正在导出binary.avro文件和text.json文件)
支持结构化或非结构化数据,前者支持模式演化。
一系列的分区器:基于大小、时间或字段的,如果它们不完全符合您的要求,您可以使用它们作为基类来构建适合您的用例的自定义分区器。
上面的分区器的大多数用例都只有一次语义(这意味着,如果您重新处理数据,或者从故障中恢复,您将不会在s3中看到重复的记录)。
易于配置。
来自社区的积极支持(如果您将它们开源,那么您的类也可能最终获得这些支持)。
总的来说,您不必从头开始编写和维护许多其他人(如您)想要使用的代码。此外,如果发现缺少一个或多个特性,可以在开源s3连接器中提供这些特性。