從提供的文章中，列出 Kafka 中的主要 API。用逗號分隔它們。
Kafka是一個儲存來自任意數量的生產者程式的鍵值訊息的系統。資料可以被分割槽到不同的「主題」中的不同「分割槽」中。在一個分割槽內，訊息嚴格按照它們的偏移量（分割槽內訊息的位置）排序，並且帶有時間戳進行索引和儲存。其他被稱為「消費者」的程式可以從分割槽中讀取訊息。對於流處理，Kafka提供了Streams API，允許編寫Java應用程式從Kafka消費資料並將結果寫回Kafka。Apache Kafka還可以與外部流處理系統（如Apache Apex、Apache Beam、Apache Flink、Apache Spark、Apache Storm和Apache NiFi）一起使用。

Kafka在一個或多個伺服器（稱為代理）的叢集上執行，所有主題的分割槽都分佈在叢集節點上。此外，分割槽被複制到多個代理。這種架構允許Kafka以容錯的方式傳遞大量的訊息，並已經取代了一些傳統的訊息系統，如Java訊息服務（JMS）、高階訊息佇列協議（AMQP）等。自0.11.0.0版本以來，Kafka提供了事務寫入，使用Streams API提供精確一次的流處理。

Kafka支援兩種型別的主題：常規和壓縮。常規主題可以配置保留時間或空間限制。如果有記錄比指定的保留時間舊，或者如果分割槽的空間限制超過了，Kafka可以刪除舊資料以釋放儲存空間。預設情況下，主題配置為保留7天的時間，但也可以無限期儲存資料。對於壓縮主題，記錄不會基於時間或空間限制過期。相反，Kafka將後續訊息視為更新具有相同鍵的舊訊息，並保證永遠不會刪除每個鍵的最新訊息。使用者可以透過編寫所謂的「墓碑」訊息來完全刪除訊息，該訊息具有特定鍵的空值。

Kafka有五個主要的API：

生產者API - 允許應用程式釋出記錄流。
消費者API - 允許應用程式訂閱主題並處理記錄流。
聯結器API - 執行可重用的生產者和消費者API，可以將主題連結到現有應用程式。
Streams API - 此API將輸入流轉換為輸出並產生結果。
Admin API - 用於管理Kafka主題、代理和其他Kafka物件。
消費者和生產者API透過底層訊息傳遞協議與Kafka的核心功能解耦。這允許在任何程式語言中編寫相容的API層，這些API層與Kafka捆綁的Java API一樣高效。Apache Kafka專案維護了這樣的第三方API列表。
生產者 API、消費者 API、聯結器 API、流 API、管理 API