微服務選擇哪個訊息代理:RabbitMQ、Kafka和Redis? - Payoda

banq發表於2021-11-23

在選擇代理來執行非同步操作時,您應該考慮以下幾點:

  1. Broker Scale — 系統內每秒傳送的訊息數。
  2. 消費者效率——在管理一對一和/或一對多消費者方面是否有效。
  3. 資料永續性——恢復訊息的能力。

 

RabbitMQ :

  • RabbitMQ 有一些 SaaS 管理的服務,但它不是本地主要雲提供商堆疊的一部分。
  • 它支援所有主要語言,包括 Python、Java、.NET、PHP、Ruby、JavaScript、Go、Swift 等。
  • 處於持久模式時預計會出現效能延遲。

Kafka :

  • Kafka 在 Azure、AWS 和 Confluent 等頂級原生雲供應商上管理 SaaS。
  • Kafka 支援所有主要語言,如 .NET、C/C++、Python、Java、PHP、Ruby、JavaScript、Go、Swift、Clojure 等。

Redis:

  • 它與其他訊息代理的儲存和處理方式略有不同。
  • 從本質上講,它是一個記憶體資料儲存,可用作高效能應用程式,但對於臨時用途,它可用作訊息代理。
  • Redis 將其記憶體轉儲到磁碟/資料庫中,但非常適合實時資料處理。

 

用例:

  • 對於短期訊息,首選 Redis。
  • 而如果您的應用程式有大量資料,那麼 Kafka 將是更好的選擇。
  • 如果資料足夠複雜,那麼 RabbitMQ 將完成它的工作。

 

相關文章