Rabbitmq 卡夫卡对兔子的利弊

Rabbitmq 卡夫卡对兔子的利弊,rabbitmq,apache-kafka,messagebroker,spring-rabbit,spring-cloud-stream,Rabbitmq,Apache Kafka,Messagebroker,Spring Rabbit,Spring Cloud Stream,Kafka和RabbitMQ是众所周知的消息代理。我想用SpringBoot构建一个微服务,SpringCloud似乎为他们提供了现成的解决方案,作为实际的选择。我对RabbitMQ的trayectory略知一二,它有很多支持。卡夫卡属于阿帕奇,所以它应该是好的。那么拉比特和卡夫卡的主要目标区别是什么?考虑到这将与Spring Cloud一起使用。请分享你的经验和标准。谢谢。 < P>我当然不会认为卡夫卡是轻量级的。卡夫卡依赖ZooKeeper,所以你也需要把ZooKeeper放到你的堆栈中 卡

Kafka和RabbitMQ是众所周知的消息代理。我想用SpringBoot构建一个微服务,SpringCloud似乎为他们提供了现成的解决方案,作为实际的选择。我对RabbitMQ的trayectory略知一二,它有很多支持。卡夫卡属于阿帕奇,所以它应该是好的。那么拉比特和卡夫卡的主要目标区别是什么?考虑到这将与Spring Cloud一起使用。请分享你的经验和标准。谢谢。

< P>我当然不会认为卡夫卡是轻量级的。卡夫卡依赖ZooKeeper,所以你也需要把ZooKeeper放到你的堆栈中


卡夫卡是pubsub,但你可以重读信息。如果您需要处理大量数据,Kafka的性能会更好,它与其他大数据工具的协同作用也会更好。它特别针对大数据。

< P>我当然不会认为卡夫卡是轻量级的。卡夫卡依赖ZooKeeper,所以你也需要把ZooKeeper放到你的堆栈中


卡夫卡是pubsub,但你可以重读信息。如果您需要处理大量数据,Kafka的性能会更好,它与其他大数据工具的协同作用也会更好。它专门针对大数据。

三个应用程序级别的差异是:

  • Kafka支持在rabbitMQ运行时重新读取已使用的消息 不是

  • Kafka支持分区中的消息排序,而rabbitMQ 通过一些约束(例如一个exchange路由)支持它 到队列,一个队列,一个消费者到队列

  • Kafka比rabbitMQ更能快速地将数据发布到分区

  • 三个应用程序级别的差异是:

  • Kafka支持在rabbitMQ运行时重新读取已使用的消息 不是

  • Kafka支持分区中的消息排序,而rabbitMQ 通过一些约束(例如一个exchange路由)支持它 到队列,一个队列,一个消费者到队列

  • Kafka比rabbitMQ更能快速地将数据发布到分区

  • 卡夫卡不仅仅是一个发布/订阅消息的平台。它还包括用于数据集成(Kafka Connect)和流处理(Kafka Streams)的API。与仅使用低级发布/订阅消息传递API相比,这些高级API使开发人员的工作效率更高


    此外,卡夫卡在2017年6月刚刚添加了一次语义,这是另一个与众不同的地方。

    卡夫卡不仅仅是一个发布/订阅消息平台。它还包括用于数据集成(Kafka Connect)和流处理(Kafka Streams)的API。与仅使用低级发布/订阅消息传递API相比,这些高级API使开发人员的工作效率更高


    此外,卡夫卡在2017年6月刚刚添加了一次语义,这是另一个与众不同的地方。

    从卡夫卡开始,它比RabbitMQ做的更多。MessageBroker只是Kafka的一个子集,但Kafka还可以充当消息存储和流处理。仅与MessageBroker部分相比,Kafka同样比RabbitMQ更健壮,因为它支持复制(用于可用性)和分区(用于可伸缩性)、消息重播(如果需要重新处理),并且是基于拉的。RabbitMQ可以通过对给定队列使用多个使用者进行扩展,但它同样是基于推送的,并且会在多个使用者之间失去排序


    这完全取决于用例,而您的问题并没有提供用例和性能要求来建议一个而不是另一个

    从卡夫卡开始比RabbitMQ做的更多。MessageBroker只是Kafka的一个子集,但Kafka还可以充当消息存储和流处理。仅与MessageBroker部分相比,Kafka同样比RabbitMQ更健壮,因为它支持复制(用于可用性)和分区(用于可伸缩性)、消息重播(如果需要重新处理),并且是基于拉的。RabbitMQ可以通过对给定队列使用多个使用者进行扩展,但它同样是基于推送的,并且会在多个使用者之间失去排序


    这完全取决于用例,而您的问题并没有提供用例和性能要求来建议一个而不是另一个

    我在这段youtube视频中找到了一个不错的答案。 它基本上说,卡夫卡和标准系统(如RabbitMQ或ActiveMQ)之间的区别在于

    • Kafka消费者从代理中提取消息,这样可以在保留期内缓冲消息。而在大多数JMS系统中,消息被推送到消费者手中,这使得像这样的策略更难实现
    • 卡夫卡还通过将事件存储在磁盘上简化了事件的替换,因此可以随时替换事件
    • Kafka保证分区内消息的顺序
    • Kafka总体上为构建可扩展和容错系统提供了一种简单的方法
    • 卡夫卡要求的系统比JMS系统更复杂、更难理解

    我在这段youtube视频中找到了一个不错的答案。 它基本上说,卡夫卡和标准系统(如RabbitMQ或ActiveMQ)之间的区别在于

    • Kafka消费者从代理中提取消息,这样可以在保留期内缓冲消息。而在大多数JMS系统中,消息被推送到消费者手中,这使得像这样的策略更难实现
    • 卡夫卡还通过将事件存储在磁盘上简化了事件的替换,因此可以随时替换事件
    • Kafka保证分区内消息的顺序
    • Kafka总体上为构建可扩展和容错系统提供了一种简单的方法
    • 卡夫卡要求的系统比JMS系统更复杂、更难理解

    那么RabbitMQ呢?利与弊请记住。从2020年起,Confluent计划将Zookeeper从卡夫卡移除,RabbitMQ呢?利与弊请记住。从2020年起,Confluent计划将Zookeeper从卡夫卡移除