kafka和rabbitmq是众所周知的消息代理。我想用springboot构建一个微服务,springcloud似乎为他们提供了现成的解决方案。我知道一些rabbitmq的trayectory,它有很多支持。Kafka属于Apache,所以它应该是好的。那么拉比和Kafka的主要目标有什么不同呢?考虑到这将用于 Spring 云。请分享你的经验和标准。提前谢谢。
ss2ws0br1#
Kafka不仅仅是一个发布/订阅消息的平台。它还包括用于数据集成(kafka connect)和流处理(kafka streams)的api。与仅使用较低级别的发布/订阅消息API相比,这些较高级别的API使开发人员的工作效率更高。另外,Kafka在2017年6月刚刚添加了一次语义,这是另一个区别。
omjgkv6w2#
从Kafka开始比拉比MQ做的更多。消息代理只是kafka的一个子集,但是kafka还可以充当消息存储和流处理。与messagebroker部分相比,kafka同样比rabbitmq更健壮,因为它支持复制(用于可用性)和分区(用于可伸缩性)、消息重放(如果需要重新处理)并且它是基于pull的。rabbitmq可以通过对给定队列使用多个使用者来扩展,但它同样是基于推送的,因此您会丢失多个使用者之间的顺序。这完全取决于用例,而您的问题并没有提供用例和性能要求,从而使一个优于另一个。
3vpjnl9f3#
我在这个youtube视频中找到了一个很好的答案:apachekafka解释(全面概述)。它基本上说kafka和标准jms系统(比如rabbitmq或activemq)之间的区别就是kafka消费者从代理中提取消息,这样就可以在保留期内缓冲消息。而在大多数jms系统中,消息被推送到消费者手中,这使得诸如背压之类的策略更难实现。Kafka还通过将事件存储在磁盘上简化了事件的替换,因此可以随时替换事件。kafka保证了分区内消息的顺序。kafka总体上提供了一种构建可伸缩和容错系统的简单方法。kafka要求的jms系统比jms系统更复杂、更难理解。
5tmbdcev4#
我当然不会认为Kafka是轻量级的。Kafka依赖zookeeper,所以你也需要把zookeeper扔进你的堆栈。Kafka是公开的,但你可以重新阅读信息。如果您需要处理大量数据,kafka的表现要好得多,它与其他大数据工具的协同作用也要好得多。它专门针对大数据。
vjrehmav5#
三个应用级别的区别是:kafka支持重新读取消耗的消息,而rabbitmq不支持。kafka支持在分区中对消息进行排序,而rabbitmq则通过一些约束来支持它,例如一个交换路由到队列、一个队列、一个使用者到队列。kafka在将数据发布到分区方面比rabbitmq快。
5条答案
按热度按时间ss2ws0br1#
Kafka不仅仅是一个发布/订阅消息的平台。它还包括用于数据集成(kafka connect)和流处理(kafka streams)的api。与仅使用较低级别的发布/订阅消息API相比,这些较高级别的API使开发人员的工作效率更高。
另外,Kafka在2017年6月刚刚添加了一次语义,这是另一个区别。
omjgkv6w2#
从Kafka开始比拉比MQ做的更多。消息代理只是kafka的一个子集,但是kafka还可以充当消息存储和流处理。与messagebroker部分相比,kafka同样比rabbitmq更健壮,因为它支持复制(用于可用性)和分区(用于可伸缩性)、消息重放(如果需要重新处理)并且它是基于pull的。rabbitmq可以通过对给定队列使用多个使用者来扩展,但它同样是基于推送的,因此您会丢失多个使用者之间的顺序。
这完全取决于用例,而您的问题并没有提供用例和性能要求,从而使一个优于另一个。
3vpjnl9f3#
我在这个youtube视频中找到了一个很好的答案:apachekafka解释(全面概述)。它基本上说kafka和标准jms系统(比如rabbitmq或activemq)之间的区别就是
kafka消费者从代理中提取消息,这样就可以在保留期内缓冲消息。而在大多数jms系统中,消息被推送到消费者手中,这使得诸如背压之类的策略更难实现。
Kafka还通过将事件存储在磁盘上简化了事件的替换,因此可以随时替换事件。
kafka保证了分区内消息的顺序。
kafka总体上提供了一种构建可伸缩和容错系统的简单方法。
kafka要求的jms系统比jms系统更复杂、更难理解。
5tmbdcev4#
我当然不会认为Kafka是轻量级的。Kafka依赖zookeeper,所以你也需要把zookeeper扔进你的堆栈。
Kafka是公开的,但你可以重新阅读信息。如果您需要处理大量数据,kafka的表现要好得多,它与其他大数据工具的协同作用也要好得多。它专门针对大数据。
vjrehmav5#
三个应用级别的区别是:
kafka支持重新读取消耗的消息,而rabbitmq不支持。
kafka支持在分区中对消息进行排序,而rabbitmq则通过一些约束来支持它,例如一个交换路由到队列、一个队列、一个使用者到队列。
kafka在将数据发布到分区方面比rabbitmq快。