微服务选择哪个消息代理:RabbitMQ、Kafka和Redis? - Payoda


在选择代理来执行异步操作时,您应该考虑以下几点:

  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 将完成它的工作。