Apache Kafka各Api模組說明

Arno_z發表於2024-10-14

Kafka API

  • 微信公眾號:阿俊的學習記錄空間
  • 小紅書:ArnoZhang
  • wordpress:arnozhang1994
  • 部落格園:arnozhang
  • CSDN:ArnoZhang1994

Kafka 包含五個核心 API:

  1. Producer API 允許應用程式將資料流傳送到 Kafka 叢集中的topic。
  2. Consumer API 允許應用程式從 Kafka 叢集中的topic讀取資料流。
  3. Streams API 允許將輸入topic的資料流轉換為輸出topic的資料流。
  4. Connect API 允許實現聯結器,持續地從某個源系統或應用程式拉取資料到 Kafka,或將資料從 Kafka 推送到某個接收系統或應用程式中。
  5. Admin API 允許管理和檢查topic、代理以及其他 Kafka 物件。

Kafka 將其所有功能透過一個與語言無關的協議暴露出來,並且有很多程式語言的客戶端可用。然而,只有 Java 客戶端是作為 Kafka 主專案的一部分進行維護的,其他客戶端則作為獨立的開源專案提供。這裡有一個非 Java 客戶端的列表。

Producer API

Producer API 允許應用程式將資料流傳送到 Kafka 叢集中的topic。

如何使用 Producer 的示例可以在 javadoc 中找到。

要使用 Producer,可以使用以下 Maven 依賴:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.8.0</version>
</dependency>

Consumer API

Consumer API 允許應用程式從 Kafka 叢集中的topic讀取資料流。

如何使用 Consumer 的示例可以在 javadoc 中找到。

要使用 Consumer,可以使用以下 Maven 依賴:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.8.0</version>
</dependency>

Streams API

Streams API 允許將輸入topic的資料流轉換為輸出topic的資料流。

如何使用 Streams API 的示例可以在 javadoc 中找到。

有關使用 Streams API 的更多文件可以在這裡找到。

要使用 Kafka Streams,可以使用以下 Maven 依賴:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-streams</artifactId>
    <version>3.8.0</version>
</dependency>

如果使用 Scala,你可以選擇性地包含 kafka-streams-scala 庫。關於如何使用 Kafka Streams 的 Scala DSL,可以在開發者指南中找到更多文件。

要在 Scala 2.13 中使用 Kafka Streams DSL,可以使用以下 Maven 依賴:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-streams-scala_2.13</artifactId>
    <version>3.8.0</version>
</dependency>

Connect API

Connect API 允許實現聯結器,持續從某個源資料系統拉取資料到 Kafka,或將資料從 Kafka 推送到某個接收資料系統。

許多使用 Connect 的使用者無需直接使用此 API,他們可以使用預構建的聯結器而無需編寫任何程式碼。有關使用 Connect 的更多資訊可以在這裡找到。

想要實現自定義聯結器的使用者可以參考 javadoc。

Admin API

Admin API 支援管理和檢查topic、代理、ACL 以及其他 Kafka 物件。

要使用 Admin API,請新增以下 Maven 依賴:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.8.0</version>
</dependency>

相關package說明:

Package Description
org.apache.kafka.clients.admin 提供用於對 Kafka 叢集執行管理操作(如建立topic和配置代理)的 Kafka 客戶端。
org.apache.kafka.clients.consumer 提供用於從 Kafka 叢集中的topic和/或分割槽消費記錄的 Kafka 客戶端。
org.apache.kafka.clients.producer 提供用於向 Kafka 叢集中的topic和/或分割槽生產記錄的 Kafka 客戶端。
org.apache.kafka.common 提供 Kafka 客戶端和伺服器共享的功能。
org.apache.kafka.common.acl 提供表示客戶端授權訪問控制列表的類。
org.apache.kafka.common.annotation 提供用於 Kafka API 的註解。
org.apache.kafka.common.config 提供用於定義、解析、驗證和記錄使用者可配置引數的常見機制。
org.apache.kafka.common.config.provider 提供可插拔的介面和一些用於延遲繫結配置值的實現。
org.apache.kafka.common.errors 提供通用的異常類。
org.apache.kafka.common.header 提供用於附加到 Kafka 記錄的應用程式定義的後設資料的 API。
org.apache.kafka.common.metrics 提供 Kafka 客戶端用來發出指標的 API,隨後這些指標透過 *MetricsReporter 介面公開。
org.apache.kafka.common.metrics.stats 提供用於統計彙總指標的方法。
org.apache.kafka.common.quota 提供用於強制執行資源配額的機制。
org.apache.kafka.common.resource 提供表示 Kafka 叢集中邏輯資源的客戶端控制代碼。
org.apache.kafka.common.security.auth 提供用於實現 Kafka 認證機制的可插拔介面。
org.apache.kafka.common.security.oauthbearer 提供用於在 Kafka 叢集中使用 OAuth Bearer Token 認證的 LoginModule。
org.apache.kafka.common.security.oauthbearer.secured 該包已被棄用。
org.apache.kafka.common.security.plain 提供使用明文憑證進行 Kafka 叢集安全認證的實現。
org.apache.kafka.common.security.scram 提供使用加鹽挑戰響應認證機制(SCRAM)來確保 Kafka 叢集安全的介面卡。
org.apache.kafka.common.security.token.delegation 提供用於將授權委託給特定 Principal 的機制,以確保 Kafka 叢集安全。
org.apache.kafka.common.serialization 提供用於物件序列化/反序列化的介面及一些實現。
org.apache.kafka.connect.components 提供用於描述可插拔元件的通用介面。
org.apache.kafka.connect.connector 提供用於 Connector 和 Task 實現的介面。
org.apache.kafka.connect.connector.policy 提供可插拔介面,用於控制使用者如何配置聯結器的策略。
org.apache.kafka.connect.data 提供用於表示 Connect 處理的資料和模式的類。
org.apache.kafka.connect.errors 提供 Connect 的常見異常類,供框架和外掛用於傳達失敗資訊。
org.apache.kafka.connect.header 提供用於附加到 Connect 記錄的應用程式定義的後設資料的 API。
org.apache.kafka.connect.health 提供用於向 ConnectRestExtension 例項描述執行中 Connect 叢集狀態的 API。
org.apache.kafka.connect.mirror -
org.apache.kafka.connect.rest 提供可插拔介面,用於更改 Connect REST API 的行為。
org.apache.kafka.connect.sink 提供用於實現將 Kafka 記錄寫入外部應用程式的 sink 聯結器的 API。
org.apache.kafka.connect.source 提供用於實現從外部應用程式讀取資料並將其匯入 Kafka 的 source 聯結器的 API。
org.apache.kafka.connect.storage 提供用於(反)序列化資料到 Kafka 的可插拔介面及一些實現。
org.apache.kafka.connect.tools -
org.apache.kafka.connect.transforms 提供用於更改 Connect 傳輸資料的可插拔介面。
org.apache.kafka.connect.transforms.predicates 提供可插拔介面,用於描述何時應對記錄應用轉換。
org.apache.kafka.connect.util 提供元件實現中可用的通用實用工具。
org.apache.kafka.coordinator.group.api.assignor -
org.apache.kafka.server.authorizer 提供可插拔介面,用於在 Kafka 伺服器上執行授權。
org.apache.kafka.server.log.remote.storage 提供用於定義 Kafka 日誌段的遠端儲存和檢索的可插拔 API。
org.apache.kafka.server.policy 提供用於表達topic和配置策略的可插拔介面。
org.apache.kafka.server.quota 提供用於在 Kafka 伺服器上執行客戶端配額的可插拔介面。
org.apache.kafka.server.telemetry 提供可插拔介面,用於捕獲客戶端的遙測指標。
org.apache.kafka.streams 提供用於構建流資料應用程式的 Kafka Streams 庫。
org.apache.kafka.streams.errors 提供用於 Streams 應用程式的常見異常類。
org.apache.kafka.streams.kstream 提供用於在輸入流和表上表達(有狀態的)資料流計算的高階程式設計模型(DSL)。
org.apache.kafka.streams.processor 提供用於在輸入topic上表達(有狀態的)資料流計算的低階程式設計模型(Processor API,簡稱 PAPI)。
org.apache.kafka.streams.processor.api 提供用於在輸入topic上表達(有狀態的)資料流計算的低階程式設計模型(Processor API,簡稱 PAPI)。
org.apache.kafka.streams.processor.assignment -
org.apache.kafka.streams.processor.assignment.assignors -
org.apache.kafka.streams.query 提供用於在狀態儲存上查詢(即互動式查詢)的 API,用於從有狀態的 Kafka Streams 應用程式中提取資料。
org.apache.kafka.streams.state 提供用於管理有狀態流應用程式中間狀態的介面。
org.apache.kafka.streams.test 提供用於使用模擬輸入測試 Kafka Streams 應用程式的類。
org.apache.kafka.tools.api 提供用於編寫 Kafka 工具外掛的介面。

相關文章