Performance 1MB消息的Redis vs Kafka vs RabbitMQ

Performance 1MB消息的Redis vs Kafka vs RabbitMQ,performance,redis,rabbitmq,queue,apache-kafka,Performance,Redis,Rabbitmq,Queue,Apache Kafka,我目前正在研究一种排队解决方案来处理1MB的中等大小的消息。 除了Redis、Kafka和RabbitMQ之间的特性差异之外,我无法找到任何关于它们在1MB左右消息上性能的好答案 你们有谁知道这些1MB的信息能处理多少条 您是否知道其他排队解决方案性能更好 我为卡夫卡负责 卡夫卡本身就有非常好的表现,即使是对于大消息。 在我们对2个Kafka节点的测试中,我们使用170 MB/s较小的消息和150 MB/s较大的消息实现p2p通信 您需要记住的唯一一件事是配置代理以接受更大的消息 Hier是一篇

我目前正在研究一种排队解决方案来处理1MB的中等大小的消息。 除了Redis、Kafka和RabbitMQ之间的特性差异之外,我无法找到任何关于它们在1MB左右消息上性能的好答案

  • 你们有谁知道这些1MB的信息能处理多少条
  • 您是否知道其他排队解决方案性能更好

  • 我为卡夫卡负责

    卡夫卡本身就有非常好的表现,即使是对于大消息。 在我们对2个Kafka节点的测试中,我们使用170 MB/s较小的消息和150 MB/s较大的消息实现p2p通信

    您需要记住的唯一一件事是配置代理以接受更大的消息

    Hier是一篇很好的文章:

    我知道另一个p2p解决方案,当您有具体的需求时,它可能会很有趣


    我使用的是Redis,但只用于非常小的消息,所以我不能说1MB左右的任何内容。

    在您的案例中评估Kafka vs Redis时,除了消息大小之外,您还必须考虑其他因素。以下是我能想到的其中一些:

    • 有多少生产者/消费者?由于Redis(基于推送的队列)的性质,如果生产者/消费者数量更多,则Redis的性能可能会受到影响。这是因为Redis在消息放入队列时,会立即将消息传递给所有消费者
    • 你首先需要速度还是可靠性?如果速度是最重要的,请使用Redis,因为它不会持久化消息,而且会更快地传递消息。如果您需要可靠性,请使用Kafka,因为它即使在消息传递之后也能持久保存消息
    • 您希望您的消费者在准备就绪后立即收到消息,还是希望消息立即发送给消费者?在第一种情况下,使用卡夫卡,因为它是基于拉的机制(消费者必须询问消息)。在第二种情况下,使用Redis,因为它是基于推送的机制(消息一旦进入队列,就会被推送到消费者)。RabbitMQ也是基于推的(尽管存在性能不佳的拉API)
    • 预期的邮件数是多少?如果不是很大,就使用Redis,因为你的内存有限。否则使用卡夫卡。RabbitMQ的最佳实践是缩短队列。这意味着您可以按消息在队列中出现的关闭速率使用消息。因此,如果您在消费者部分有一些持久的操作,RabbitMQ可能不是最佳选择
    • 缩放?卡夫卡在水平方向的伸缩性非常好(它的构建考虑了可伸缩性)。RabbitMQ通常垂直缩放。如果需要,Redis还可以很好地水平扩展

    很明显,当您评估合适的排队解决方案时,有不止一个标准。对于您正在查看的每个排队引擎,都有最佳实践和建议。仔细考虑您的特定用例,这绝对是值得的,因为如果您选择了不合适的排队引擎,这将节省您以后的时间

    redis和kafka比rabbitmq更适合高负载处理。虽然如果你没有一个非常大的用例,我会建议你使用redis,因为卡夫卡对于这个来说是非常沉重和过度的。当你说高负载时,你说的是什么负载?每秒有多少条消息?rabbitmq在各个方面都适用于轻量级消息传递,即消息/秒大小队列大小等。redis被称为您的缓存服务器,因此redis在这里会更好