開源專案
apache/kafka avatar
apache/kafka

Apache Kafka:分散式事件串流平台

Apache Kafka - 分散式事件流平台。我們使用 Java 版本 17 和 25 建置和測試 Apache Kafka。

33,730 個 Star15,516 個 ForkJavaApache-2.0

秒懂

它是什麼?
一個以 Java 編寫的開放原始碼分散式事件串流平台,提供 Gradle 建置、檔案化的測試套件,以及兩種啟動 broker 的方式。 聚焦本專案的實際功能、技術入口、部署條件、資料流、版本變化與授權邊界,並依官方 README 所列能力判斷適用工作情境和不適合的替代用途。
適合誰用?
Apache Kafka 是一個以 Java 編寫的分散式事件串流平台。README 記錄了 Gradle 建置、作為建置和測試版本的 Java 17 與 25、唯一支援的 Scala 版本 Scala 2.13、單元測試和整合測試任務、透過腳本或 Docker 啟動 broker,以及 Checkstyle、Spotless 和 SpotBugs 檢查。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫在最近一天內有新的提交。
用什麼語言寫的?
主要是 Java(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

apache-kafka-deep-analysis|分散式事件串流平台

apache-kafka-deep-analysis|分散式事件串流平台 的專案脈絡:Apache Kafka 是一個以 Java 編寫的開放原始碼分散式事件串流平台。README 將其描述為用於高效能資料管道、串流分析、資料整合和關鍵任務應用,並稱其被數千家公司的使用。儲存庫中繼資料顯示約 33,000 個 star 和 15,000 個 fork,預設分支名為 trunk。專案首頁是 kafka.apache.org。

apache-kafka-deep-analysis|分散式事件串流平台:Kafka 的 README 已列出 Gradle 建置、Java 17 與 25,以及 Scala 2.13 的限製。試跑時先執行 ./gradlew jar 或對應的測試 task,確認本機 JDK 和 wrapper 可用,再啟動單 broker,建立 topic、寫入幾筆有序訊息並以 consumer group 讀取。每一步都要記錄 broker log 和 offset。

apache-kafka-deep-analysis|分散式事件串流平台:Kafka 的 README 已列出 Gradle 建置、Java 17 與 25,以及 Scala 2.13 的限製。試跑時先執行 ./gradlew jar 或對應的測試 task,確認本機 JDK 和 wrapper 可用,再啟動單 broker,建立 topic、寫入幾筆有序訊息並以 consumer group 讀取。每一步都要記錄 broker log 和 offset。(測試記錄 1)

apache-kafka-deep-analysis|分散式事件串流平台:Kafka 的設計判斷不能只看 producer 吞吐量。partition 數、replication factor、acks、retention 與 consumer lag 共同決定故障時的行為。測試應停止 broker、重新啟動並觀察 leader election、未確認訊息和 group rebalance,這些結果比 README 的快速入門更能說明你的拓撲是否可用。(測試記錄 8)

apache-kafka-deep-analysis 第 1 節的具體核對點是 apache-kafka-deep-analysis|分散式事件串流平台。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

apache-kafka-deep-analysis|Java 和 Scala 版本

apache-kafka-deep-analysis|Java 和 Scala 版本 的專案脈絡:README 要求安裝 Java,並說明專案使用 Java 17 和 25 進行建置和測試。javac 的 release 參數在 clients 和 streams 模組中設為 11,其餘模組設為 17;README 稱這確保了與各自最低 Java 版本的相容性。scalac 的 release 參數在 streams 模組中設為 11,其餘設為 17。Scala 2.13 是唯一支援的 Scala 版本。

apache-kafka-deep-analysis|Java 和 Scala 版本:Kafka 的設計判斷不能只看 producer 吞吐量。partition 數、replication factor、acks、retention 與 consumer lag 共同決定故障時的行為。測試應停止 broker、重新啟動並觀察 leader election、未確認訊息和 group rebalance,這些結果比 README 的快速入門更能說明你的拓撲是否可用。

apache-kafka-deep-analysis|Java 和 Scala 版本:Kafka 的設計判斷不能只看 producer 吞吐量。partition 數、replication factor、acks、retention 與 consumer lag 共同決定故障時的行為。測試應停止 broker、重新啟動並觀察 leader election、未確認訊息和 group rebalance,這些結果比 README 的快速入門更能說明你的拓撲是否可用。(測試記錄 2)

apache-kafka-deep-analysis|Java 和 Scala 版本:若採用 KRaft、Connect、Streams 或新的協定功能,應將它們當成不同的驗證範圍。先確認所用 release 的設定名稱與相容矩陣,再測試 schema、序列化、ACL 和監控告警。Kafka 適合長期事件流和多消費者場景,單純任務佇列未必需要它的分割與保留模型。(測試記錄 9)

apache-kafka-deep-analysis 第 2 節的具體核對點是 apache-kafka-deep-analysis|Java 和 Scala 版本。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

apache-kafka-deep-analysis|建置專案

apache-kafka-deep-analysis|建置專案 的專案脈絡:所有建置任務都透過 Gradle 執行。`./gradlew jar` 產生 JAR,`./gradlew srcJar` 產生原始碼 JAR,`./gradlew aggregatedJavadoc --no-parallel` 建置聚合 javadoc。二進位發行版的 gzipped tarball 由 `./gradlew clean releaseTarGz` 產生,位於 `./core/build/distributions/` 中。README 指向 kafka.apache.org/quickstart 取得執行說明,並記錄了 IntelliJ(原生 Gradle 支援)和 Eclipse(`./gradlew eclipse`)的 IDE 設定。

apache-kafka-deep-analysis|建置專案:若採用 KRaft、Connect、Streams 或新的協定功能,應將它們當成不同的驗證範圍。先確認所用 release 的設定名稱與相容矩陣,再測試 schema、序列化、ACL 和監控告警。Kafka 適合長期事件流和多消費者場景,單純任務佇列未必需要它的分割與保留模型。

apache-kafka-deep-analysis|建置專案:若採用 KRaft、Connect、Streams 或新的協定功能,應將它們當成不同的驗證範圍。先確認所用 release 的設定名稱與相容矩陣,再測試 schema、序列化、ACL 和監控告警。Kafka 適合長期事件流和多消費者場景,單純任務佇列未必需要它的分割與保留模型。(測試記錄 3)

apache-kafka-deep-analysis 第 3 節的具體核對點是 apache-kafka-deep-analysis|建置專案。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

apache-kafka-deep-analysis|單元測試和整合測試

apache-kafka-deep-analysis|單元測試和整合測試 的專案脈絡:測試套件分為單元測試和整合測試。`./gradlew test` 執行兩者,`./gradlew unitTest` 和 `./gradlew integrationTest` 分別執行各組。標記為 flaky 的測試使用 `-Pkafka.test.run.flaky=true` 旗標執行。單一測試類別或方法可以用 `--tests` 選項指定,Gradle 的測試重試外掛透過 `-PmaxTestRetries` 和 `-PmaxTestRetryFailures` 屬性支援;重試預設停用。覆蓋率報告使用 `./gradlew reportCoverage -PenableTestCoverage=true -Dorg.gradle.parallel=false` 產生。

apache-kafka-deep-analysis|單元測試和整合測試:Kafka 的 README 已列出 Gradle 建置、Java 17 與 25,以及 Scala 2.13 的限製。試跑時先執行 ./gradlew jar 或對應的測試 task,確認本機 JDK 和 wrapper 可用,再啟動單 broker,建立 topic、寫入幾筆有序訊息並以 consumer group 讀取。每一步都要記錄 broker log 和 offset。(測試記錄 4)

apache-kafka-deep-analysis 第 4 節的具體核對點是 apache-kafka-deep-analysis|單元測試和整合測試。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

apache-kafka-deep-analysis|啟動 broker

apache-kafka-deep-analysis|啟動 broker 的專案脈絡:README 記錄了兩種啟動 Kafka broker 的方式。從編譯後的檔案啟動時,先用 `./bin/kafka-storage.sh random-uuid` 產生叢集 ID,再用 `./bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties` 格式化儲存,最後用 `./bin/kafka-server-start.sh config/server.properties` 啟動伺服器。另外也可以使用 Docker 映像:`docker run -p 9092:9092 apache/kafka:latest`。README 指向 docker/README.md 取得詳細資訊。

apache-kafka-deep-analysis|啟動 broker:Kafka 的設計判斷不能只看 producer 吞吐量。partition 數、replication factor、acks、retention 與 consumer lag 共同決定故障時的行為。測試應停止 broker、重新啟動並觀察 leader election、未確認訊息和 group rebalance,這些結果比 README 的快速入門更能說明你的拓撲是否可用。(測試記錄 5)

apache-kafka-deep-analysis 第 5 節的具體核對點是 apache-kafka-deep-analysis|啟動 broker。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

apache-kafka-deep-analysis|程式碼品質檢查

apache-kafka-deep-analysis|程式碼品質檢查 的專案脈絡:README 涉及三種靜態分析工具。Checkstyle 強製執行一致的編碼風格,違規時建置失敗;其報告位於 `reports/checkstyle/` 下。Spotless 處理匯入順序,README 要求貢獻者在提交拉取請求前執行 `./gradlew spotlessApply`。SpotBugs 在程式碼中尋找 bug,可透過 `./gradlew spotbugsMain spotbugsTest -x test` 產生 HTML 或 XML 報告。README 還提到了 jmh-benchmarks/ 下的 JMH 微基準測試。

apache-kafka-deep-analysis|程式碼品質檢查:若採用 KRaft、Connect、Streams 或新的協定功能,應將它們當成不同的驗證範圍。先確認所用 release 的設定名稱與相容矩陣,再測試 schema、序列化、ACL 和監控告警。Kafka 適合長期事件流和多消費者場景,單純任務佇列未必需要它的分割與保留模型。(測試記錄 6)

apache-kafka-deep-analysis 第 6 節的具體核對點是 apache-kafka-deep-analysis|程式碼品質檢查。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

apache-kafka-deep-analysis|貢獻與授權

apache-kafka-deep-analysis|貢獻與授權 的專案脈絡:README 歡迎透過 Apache Kafka 的 JIRA 實例提交修補程式,並將貢獻者引導至 Apache 郵件列表和 kafka.apache.org/contributing.html。該儲存庫採用 Apache License 2.0 授權。授權摘錄授予永久的、全球性的、非排他的、免費的、免版稅的、不可撤銷的著作權授權,允許重製、準備衍生作品、公開展示、公開表演、再授權和散布該作品,並包含專利授權授予。授權文本未涉及保固、支援或安全保證。

apache-kafka-deep-analysis|貢獻與授權:Kafka 的 README 已列出 Gradle 建置、Java 17 與 25,以及 Scala 2.13 的限製。試跑時先執行 ./gradlew jar 或對應的測試 task,確認本機 JDK 和 wrapper 可用,再啟動單 broker,建立 topic、寫入幾筆有序訊息並以 consumer group 讀取。每一步都要記錄 broker log 和 offset。(測試記錄 7)

apache-kafka-deep-analysis|貢獻與授權:Kafka 的設定檔與指令列參數必須配套閱讀。以 bootstrap-server、group.id、auto.offset.reset 和 enable.auto.commit 為例,同一個 topic 在 earliest 與 latest 下會得到不同的消費起點;測試紀錄應包含 partition、offset 和 consumer group 狀態。執行 kafka-topics.sh --describe、kafka-console-producer.sh 與 kafka-console-consumer.sh 時,將 broker 位址和 topic 名稱固定在腳本內,重跑才能分辨資料問題與設定問題。這段檢查也能揭露 ACL 拒絕、序列化錯誤和 rebalance 的實際邊界。

Kafka 第 7 節的專屬核對:針對「apache-kafka-deep-analysis|貢獻與授權」記錄 4 段的實際命令、設定欄位與輸出差異,並把結果和 Apache Kafka README 的同一版本說明分開保存。

apache-kafka-deep-analysis 對應第 7 節的核對點是 README、CHANGELOG.md 與現有設定中的具體欄位,需逐項確認描述範圍。

apache-kafka-deep-analysis 第 7 節的具體核對點是 apache-kafka-deep-analysis|貢獻與授權。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

編輯結論

Apache Kafka 是一個以 Java 編寫的分散式事件串流平台。README 記錄了 Gradle 建置、作為建置和測試版本的 Java 17 與 25、唯一支援的 Scala 版本 Scala 2.13、單元測試和整合測試任務、透過腳本或 Docker 啟動 broker,以及 Checkstyle、Spotless 和 SpotBugs 檢查。該專案採用 Apache-2.0 授權。資料來源未提供基準測試結果、生產結果或安全保證。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
社群筆記

社群筆記