2016-11-20 153 views
1

我需要获取从卡夫卡主题的消息,并通过基于HTTP的API通知其他系统。也就是说,从主题获取消息,映射到第三方API并调用它们。我打算为此写一个卡夫卡连接器。卡夫卡连接或卡夫卡客户

对于这种使用情况,是卡夫卡连接正确的选择,或者我应该与卡夫卡的客户端去。

回答

1

Kafka Connect可以很好地用于这个目的,但这也是一个非常简单的用户应用程序,因为消费者也具有容错性/可伸缩性的好处,在这种情况下,您可能只是在做简单的消息在每个消费者实例中进行时间处理。你也可以很容易地使用enable.auto.commit这个应用程序,所以你不会遇到直接使用消费者的棘手部分。你与使用消费者在这种情况下将是连接器可以由通用于不同的输入格式使用卡夫卡连接主要的东西会给,但可能不是一个自定义连接器对你很重要。

1

卡夫卡客户端时,你有你的代码的完全控制,你是专家开发者,你希望将应用程序连接到卡夫卡,并可以修改应用程序的代码。

push data into Kafka 

pull data from Kafka. 

https://cwiki.apache.org/confluence/display/KAFKA/Clients


卡夫卡连接时,你没有对第三方代码卡夫卡和你有卡夫卡连接到您不能修改代码数据存储新的控制。

卡夫卡连接的范围窄:它仅着眼于流数据复制到从卡夫卡和不处理其他任务。

http://docs.confluent.io/2.0.0/connect/


我加入几行形成其他的博客,解释差异

希望采取卡夫卡写一堆代码来发布他们的数据流的公司。我们从经验中学到的是,正确地做到这一点比看起来更为复杂。特别是,有一系列的问题,每一个连接器必须解决:

•架构管理:数据管道的携带模式信息,其中它是可用的能力。在没有这种能力的情况下,你最终不得不重建下游。此外,如果同一数据有多个消费者,则每个消费者都必须重新创建它。我们将在未来的博客文章中介绍数据管道的模式管理的细微差别。

•容错性:运行过程的几个实例,是有弹性的,以失败

•并行:横向扩展来处理大型数据集

•延迟:采集,运输和处理数据的实时,从而摆脱每日一次的数据转储。

•传递语义:提供了强有力的保证,当机器发生故障或者进程崩溃

•操作和监视:监视每一个数据整合过程中的健康和进度一致的方式

这些都是真的很难的问题他们自己的权利,在每个连接器中单独解决它们是不可行的。相反,您希望单个基础架构平台连接器可以构建在一起,以一致的方式解决这些问题。

直到最近,采用卡夫卡进行数据集成需要大量开发人员的专业知识;开发需要构建在客户端API上的Kafka连接器。

https://www.confluent.io/blog/announcing-kafka-connect-building-large-scale-low-latency-data-pipelines/

0

你应该使用卡夫卡当您使用卡夫卡连接片连接源生产的消息到一个特定的主题。

例如,当你使用文件源时,你应该使用文件接收器来消耗已经产生的源。或者当你使用jdbc-source时,你应该使用jdbc-sink来消费你已经生成的东西。

因为生产者和汇消费者的模式应该是兼容的,那么你应该在双方使用兼容的源和汇。

如果在某些情况下模式不兼容,您可以使用从kafka版本10.2开始添加的SMT(简单消息转换)功能,并且您将能够编写消息转换程序以在不兼容的生产者和消费者之间传输消息。

注意:如果您想更快地传输邮件,我建议您使用avro和模式注册表来更有效地传输邮件。

如果你可以用java代码,你可以使用java kafka流,Spring-Kafka项目或流处理来实现你想要的。