加速Apache Kafka® Connect的开发的8个提示

加速Apache Kafka® Connect开发的8个技巧的翻译。

2022年11月29日 (2022 11 yuè 29 rì)

加快Apache Kafka® Connect开发的8个建议。

Apache Kafka® Connect的配置可能会有时候让人觉得像黑魔法一样。

Apache Kafka®是最新的数据平台的核心,可以将数据流动到需要的地方。Kafka Connect则是一种像魔法般的工具,只需使用几行JSON配置文件,就可以将Apache Kafka集成到各种技术中,作为数据源和数据接收端。

有时候,Apache Kafka® Connect可能看起来像黑魔法一样:拥有部分重复功能的连接器的数量,不一致的配置参数,以及模糊的错误消息都让人感觉像隐藏在工具背后的艺术品。因此,尤其是对于在这个领域还是初学者的人来说,通过一些Kafka Connect配置的提示,你可以从向Connect之神献上蟑螂开始,将其转化为完美运行、可信赖的流式处理管道。

提示 #0:基本规则

在提供提示之前,我会向您传授成为Apache Kafka® Connect魔法师的基本法则:阅读官方手册!

image

Apache Kafka® Connect在解决复杂的集成问题和减少复杂性方面做得非常出色。尽管如此,这个领域非常广泛,存在各种各样的技术,解决类似的集成问题的连接器部分重叠。

成为下一个 Kafka Connect Houdini 的首要义务是,要了解可用的连接器以解决正在努力解决的集成问题,并仔细阅读说明书来评估其在我们的情况下的使用方法。

好吧,正式开始给你们提示的时刻终于到了!

提示1:准备数据的落地点。

魔术师使用帽子来储存用于魔术的可爱兔子,我们也需要准备一个软垫子使数据能够正确着陆。不论是从Apache Kafka®获取数据还是同步数据,都需要事先创建所需的数据结构来接收数据。

通常情况下,会提供一些快捷方式,如auto_create_topics_enable、auto.create和auto.evolve,这些方式能够将目标主题和表的创建委托给Apache Kafka® Connect。然而,通过这样做,我们将无法控制这些工件,并且可能会导致下游数据管道出现问题。例如,Kafka Connect可以使用默认的分区数生成主题,或者生成表时没有按预期进行分区。因此,建议仔细阅读文档,并根据文档的指示提前创建所需的着陆点。

如果在阅读文件后还不清楚数据的着陆点在哪里,可以创建测试环境并启用auto_create_topics_enable或auto.create,然后记下创建了哪些成果物,这样就可以在生产环境中正确定义。

提示 #2:评估不同连接器的优点、限制和风险

我们需要像魔术师学习所有咒语一样,积累关于Apache Kafka® Connect的知识。如前所述,Kafka Connect是一个非常广阔的领域,不同的连接器以稍微不同的方式解决相似的问题。

要成功地使用Kafka Connect,重要的是要理解可能解决我们面临的集成问题的连接器,并了解它们的优点、技术和许可限制以及相关风险。如果有清晰的选择地图,我们可以根据需求选择最佳选项。

在导入数据库数据到Apache Kafka®中,有两个选项可供选择:基于JDBC查询的轮询机制或基于Debezium的推送机制。这两个选项看起来都是有效的选择,但当开始推动边界时,JDBC解决方案会显示其界限。了解解决方案的限制将有助于做出更好的选择。

提示三:检查前提条件。

image

魔术师需要确认药水的所有材料都齐备。为了使连接器成功,必须注意确认所有前提条件是否满足!

首先,Apache Kafka® Connect是基于Java的,因此要执行特定的连接器,您需要将所有必要的JAR依赖项准确地放置在正确的文件夹中(请参考Twitter的例子)。这本身就是一项繁重的任务,但是通过使用像Aiven for Apache Kafka® Connect这样的托管平台,您可以省去这一步骤。

在整理了依存关系之后,需要适当地测试是否存在所有必要的东西。

    • ネットワークパス**をチェックする:データベースへのpingは可能か? Google Cloud StorageはKafka Connectクラスタからアクセス可能か?

 

    • 認証情報と権限**を評価する。

 

    必要なオブジェクト**が配置されていることを検証する:ターゲットS3バケットはすでに配置されていますか?Debeziumが必要とするデータベースのレプリケーションは?

在开始连接器之前,请确保所有片段都齐全,这样可以获得更顺畅的体验。虽然我们的问题是端点之间没有网络连接,但我们最想避免的是花费两个小时来检查连接器的设置。

数据格式

数据格式通常是一个容易被忽视的话题,但如果没有正确执行,将对下游的流水线产生重大影响。

使用默认设置,大多数源连接器将以JSON格式将数据推送到Apache Kafka®主题。由于模式未正确定义,因此无法将数据传输到需要理解数据结构的技术,例如关系数据库。您将面临“找不到与使用表键和值模式匹配的字段”错误,并且目前没有可用的解决方案来使此类连接器正常运行。

提示如下:尽量使用每次指定模式的数据格式。从连接器设置的角度来看,使用类似Karapace的工具来存储键和值的模式,意味着需要添加一些代码(请参考Debezium示例中的key.converter和value.converter)。

在使用Apache Kafka®导入数据时,如果正确定义了模式,可以使用相同的模式注册表功能,让同步连接器能够理解数据的形状,并将数据推送到下游的任何技术中,无论是否需要模式。

提示四:改变消息负载的形状。

Apache Kafka® Connect为源和目标提供了一个像魔法般的功能,可以在数据流中改变数据的形状。这个功能被称为单一消息转换(SMT),可以通过多种方式改变数据的形式,例如:

    • フィルタリング**:受信データセットのサブセットだけを渡す。

 

    • ルーティング**:特定のフィールド値に基づいて、異なるイベントを別々の宛先に送信する。

 

    • キーの定義**:イベント・キーとして使用するフィールドのセットを定義する(これについては後ほど詳しく説明します)。

 

    マスキング**:フィールドを難読化または削除します。PII(個人を特定できる情報)データに便利です。

SMT是一个非常强大的瑞士军刀,用于在整合阶段对数据的形状进行定制。

提示5:定义数据分区和查找所使用的键。

在Apache Kafka®中,使用键定义分区,目标系统使用键进行查找操作。如果键被正确定义,那么在采购(并行写入到分区)和同步(如数据库表的分区标识)方面都能提高性能。

因此,为了实现更好的正确性能,分析和准确定义关键是非常重要的(Apache Kafka®的有序性仅在分区内保证)。Olena在她的博客中深入探讨了在平衡数据跨分区和选择最佳分区策略时可能遇到的权衡。

提示#6:提升连接器的稳固性。

要增強Apache Kafka® Connect的魔力,需要讓連接器更加堅固,並減少錯誤的影響。測試性能,理解瓶頸,持續監控和改進管道是在這個領域中常用的方法。此外,也可能有一些詳細提示,可以救我們避免特定的失敗。

减少飞行中的数据量

大多数的连接器都可以定义数据收集/推送的频率。每天将数据同步到目标环境一次意味着连接器需要保留一整天的数据集。当数据量过大时,连接器可能会崩溃,导致进程重新启动并可能导致管道延迟。通过更频繁地写入更少的数据可以减少风险,但需要找到频率和批量大小之间合适的平衡。

为了提高性能并降低风险,将负载并行化。

Kafka Connect提供了可用于并行化负载的任务概念。

如果需要从数据库中导入15个表格,将所有负载放在一个连接器中的一个任务中是一个危险的选择。相反,可以定义一个具有15个任务的连接器,或者根据需求定义15个具有一个任务的不同连接器,以分散数据导入。

将作业并行化有助于提高性能并降低单点故障风险。

提示#7:了解调试的方法

image

成为无错Apache Kafka® Connect的行家并不容易。我们的工作是理解问题所在并修复它。以下是一些成功的常见提示:

    • ログは真実の源です。ログに含まれるエラーの説明は、問題の本質を理解し、どこを見るべきかのヒントを与えてくれます。

 

    解決策を探す**:インターネットは、特定のエラーメッセージに対するたくさんの解決策を提供してくれる。私たちは時間をかけて、提案された修正が私たちの状況に当てはまるかどうかを注意深く理解する必要があります。投稿されたエラーメッセージが似ているからといって、その解決策が有効であると決めつけることはできません。

由于Kafka是一项相对较新的技术,所以我们有可能面临着没有人遇到过相同错误的情况。但是在这种情况下,我们可以通过重新查看日志或阅读连接器的代码来找到解决方案……这就是开源的好处!

错误容忍和自动重启

错误容忍度定义了连接器允许多少次解析错误之前发生错误。若设置为none,则 Kafka 连接在第一个错误发生时崩溃;若设置为all,则无论任何消息是否能被理解,连接器的执行都会继续。

作为中间选择,有一个名为”dead letter queue”的话题。 Dead Letter Queue是使连接器更加健壮以应对单一消息错误的很好方法,但使用时需要积极监视。最不希望发现的是,一年后发现在订单主题中有200,000条未分析的消息,原因是愚蠢的格式错误。

与容差相关,另一个有用的参数是自动重启。将其设置为开启是一个很好的方法,可以从一次性错误中恢复连接器,但如果配置简单地错误的话,则无法进行恢复。

提示#8:保留进化轨迹

在Apache Kafka® Connect中,“呪文集”这个概念非常贴切。通过以反复的方式处理连接器的配置,您可以走得更远。

首先,需要读取可用配置的集合,并分析需要哪些参数,尽可能简化连接器的设置,并构建一个能够随着时间推移而发展的最小集成实例。

在上述基础上,适当设置配置版本管理系统,并尽可能自动化部署,这也是值得投入时间的。这种方法可以节省时间,当需要撤销不起作用的更改时,并降低部署过程中人为错误的风险。诸如Apache Kafka® Connect REST API,Aiven Client,Aiven Terraform Provider,kcctl等工具可以帮助自动化流程。

集成的魔法

理解Apache Kafka® Connect可能会让人初次接触时感到压倒,但通过浏览其生态系统并阅读各种连接器的文档,同时听取上述提示,就可以开始使用新的魔法技巧来构建高速、可扩展且具有弹性的流式数据管道。

还有更多的资源可用:

Aiven for Apache Kafka® Connect: Kafka Connectクラスタのセットアップに時間を取られず、統合の作成に集中しましょう。

SourceとSinkのHow Toガイド。コネクター: すべての主要なコネクターについて、事前に構築された統合例を確認する。

Twitterの例: 管理されたApache Kafka®クラスタの恩恵を受けながら、必要なコネクタを実行するためにKafka Connectクラスタをセルフホストする方法を確認してください。

提供Aiven的Apache Kafka® Connect服务

将现有的数据源和数据接收端与Apache Kafka®进行集成。

如何运作

请订阅我们的月刊新闻简报,以获取有关Aiven和我们服务的最新消息以及与开源相关的小资讯!关于Aiven的日常新闻可以在LinkedIn和Twitter的动态中浏览。

如果您想了解服务的更新信息,请查看更改记录。

广告
将在 10 秒后关闭
bannerAds