Kafka API
- 微信公眾號:阿俊的學習記錄空間
- 小紅書:ArnoZhang
- wordpress:arnozhang1994
- 部落格園:arnozhang
- CSDN:ArnoZhang1994
Kafka 包含五個核心 API:
- Producer API 允許應用程式將資料流傳送到 Kafka 叢集中的topic。
- Consumer API 允許應用程式從 Kafka 叢集中的topic讀取資料流。
- Streams API 允許將輸入topic的資料流轉換為輸出topic的資料流。
- Connect API 允許實現聯結器,持續地從某個源系統或應用程式拉取資料到 Kafka,或將資料從 Kafka 推送到某個接收系統或應用程式中。
- 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 工具外掛的介面。 |