我正在阅读这两个概念。主要是Kafka。并与jms进行比较,以便更好地理解。
Kafka保证有序交货和多个订户。Kafka是如何做到的?
Kafka有多个分区。如果每个分区有一个用户,那么我们可以保证订购。我们可以通过多个分区来实现负载平衡。所以两者同时存在是可能的。
在jms的情况下,如果我们有多个队列,这和kafka不一样吗?
问题1:在这种情况下哪个更好?
问题2:我是不是看得太窄了?Kafka做的不止这些吗?
请告诉我。
即使我错了,请让我知道。
我正在阅读这两个概念。主要是Kafka。并与jms进行比较,以便更好地理解。
Kafka保证有序交货和多个订户。Kafka是如何做到的?
Kafka有多个分区。如果每个分区有一个用户,那么我们可以保证订购。我们可以通过多个分区来实现负载平衡。所以两者同时存在是可能的。
在jms的情况下,如果我们有多个队列,这和kafka不一样吗?
问题1:在这种情况下哪个更好?
问题2:我是不是看得太窄了?Kafka做的不止这些吗?
请告诉我。
即使我错了,请让我知道。
2条答案
按热度按时间pdkcd3nj1#
我以前也在问自己同样的问题:)
正如您所写的,kafka保证只在单个分区内进行有序交付。句号。如果您使用的是多个分区(这是具有并行性的必要条件),那么侦听多个分区的使用者可能在从分区2得到消息b之前从分区1得到消息a,即使消息b最先到达。
关于Kafka和jms的区别。在jms中,您有一个队列和一个主题。对于队列,当第一个消费者消费了一条消息时,其他人就不能再接受它了。对于主题,多个消费者会收到每条消息,但很难扩展。来自Kafka的消费群体是这两个概念的概括——它允许在同一消费群体的成员之间进行缩放,但也允许在许多不同的消费群体之间广播相同的消息。
更重要的区别是以下几点。假设kafka主题有500个分区,另一方面,还有500个jms消息队列。让我们假设你有一定数量的生产者和消费者。对于jms,您需要配置它们中的每一个,以便它们知道哪些队列属于它们。如果一些消费者崩溃或者你发现你需要增加消费者的数量怎么办?你必须手动重新配置整个系统。这是免费的Kafka,即Kafka提供自动再平衡,这是一个非常有用的功能。
最后,kafka的速度要快得多,这主要是因为一些聪明的磁盘/内存传输技术,以及消费者关心他们所使用的消息,而不是jms中的代理。因此,消费者还可以“倒带”,即重读2天前的信息。
另请参见:
具有多个分区的apache-kafka消息顺序
基准测试apache kafka
kuuvgm7e2#
以下是一篇关于差异的相当好的文章:http://blog.hampisoftware.com/index.php/2016/01/20/apache-kafka-differences-from-jms/
kafka不保证跨主题的多个分区的消息排序。顺序只在分区内保持。为了实现严格的排序,每个主题需要使用一个分区。