Why-Kafka.md

Translated by ChatGTP

為什麼選擇 Kafka

通用性

處理流式數據。

在使用訊息佇列之前

  • 輪詢
    • 浪費 - 每次都詢問是否有新的任務(即使沒有新任務)

為什麼選擇訊息佇列

Kafka 是一種訊息佇列,所以首先討論一下為什麼要使用訊息佇列。

  • 持久性/可靠性/事務性:防止數據丟失
  • 性能/負載平衡

Kafka 與其他訊息佇列的比較(結果)

  • 性能
    • 每秒交易數(TPS)較高
      • Kafka: 百萬
      • Rocket MQ: 十萬
      • Active MQ: 一萬
    • 零拷貝(在另一個文檔中討論:why-kafka-is-fast.md)

Kafka 與其他訊息佇列的比較(原因)

我們可以使用佇列來處理數據, 但問題在於延遲。 當數據較大時,Kafka 比其他訊息佇列更快。

從文檔「how-kafka-works.md」和「why-kafka-is-fast.md」中, 我們可以知道 Kafka 通過快速輪詢從日誌文件讀取數據。

但為什麼其他訊息佇列無法進行快速輪詢呢? 因為其他訊息佇列沒有像 Kafka 一樣的優化功能, 例如頻繁請求、鎖定機制等。 這可能會導致許多性能和異常問題。

Kafka 和其他訊息佇列的關鍵差異

人們認為訊息系統應該支持複雜的訊息搜索功能, 但 Kafka 不實現此功能, 因此 Kafka 可以

  • 擁有更快的性能
  • 在訊息積壓較大時保持性能

但另一方面, Kafka 犧牲了一些功能,例如訊息優先級。