在阅读Kafka以及如何将数据从Kafka获取到适合于某些特定任务的可查询数据库时,通常会提到Kafka连接接收器。
如果我需要kafka来搜索索引(比如elasticsearch)或分析(比如hadoop)来激发kafka连接接收器的可用性,那么这听起来是一个不错的选择。
但我的问题是,处理一个没有像myimaginarydb那么流行的存储的最佳方法是什么?在myimaginarydb中,我唯一可以访问它的方法是通过一些api,并且需要安全可靠地处理数据,以及在插入之前进行适当的转换?建议:
只需使用kafka提供的api,并使用myimaginarydb驱动程序进行编写
弄清楚如何构建一个定制的kafka连接接收器(假设它可以处理模式、身份验证/授权、重试、容错、转换和登录myimaginarydb之前所需的后处理)
我也读过kafka ksql和streams,我想知道这是否有助于在数据发送到终端存储之前进行转换。
1条答案
按热度按时间aiazj4mn1#
选择2,当然。仅仅因为没有现有的源连接器,并不意味着kafka connect不适合您。不管怎样,如果你打算写一些代码,那么挂接到kafkaconnect框架还是有意义的。kafka connect处理所有常见的东西(模式、序列化、重新启动、偏移跟踪、扩展、并行等),让您只需实现将数据传输到
MyImaginaryDB
.关于转换,标准模式是:
对轻量级的东西使用单个消息转换
使用kafka streams/ksql并写回另一个主题,然后通过kafka connect路由到目标
如果你试图构建自己的应用程序(转换+数据接收器),那么你就是在绞尽脑汁地承担责任,你就是在重新设计已经存在的一大块轮子(以可靠的可扩展方式与外部系统集成)
您可能会发现这篇演讲对于了解Kafka连接的功能非常有用:http://rmoff.dev/ksldn19-kafka-connect