是什么使Kafka的吞吐量高?

k10s72fa  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(406)

大多数文章描述kafka的读/写吞吐量比activemq等其他messagebroker(mb)更好。根据我的理解,在偏移量的帮助下读/写会更快。但我不清楚偏移是如何使它更快的?
在阅读了kafka架构之后,我对kafka的可扩展性和高吞吐量有了一些了解,但不太清楚,基于以下几点:-
可能通过偏移量,客户机知道它需要读取哪个确切的消息,这可能是使其具有高性能的因素之一。
在其他mb的情况下,代理需要在使用者之间进行协调,以便消息只传递给使用者。但这种情况只适用于队列,而不适用于主题。那么是什么让Kafka的主题比其他mb的主题快呢。
kafka为可伸缩性提供分区,但是其他消息代理(如activemq)也提供集群。那么Kafka在大数据/高负载方面有何优势呢?
在其他mb中,我们可以有侦听器。所以消息一出来,代理就会传递消息,但是如果是kafka,我们需要轮询,这意味着代理/客户端都会有更多的负载?

shyt4zoc

shyt4zoc1#

关于是什么使Kafka不同于其他消息传递系统和更快的许多细节,请参阅jaykreps的博客文章
https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines
实际上,Kafka有很多不同之处,包括但不限于:
最大限度地利用顺序磁盘读写
消息的零拷贝处理
使用linux操作系统页面缓存而不是java堆进行缓存
在集群中跨多个代理对主题进行分区
智能客户端库从代理中卸载某些功能
对多个已发布消息进行批处理,以减少到代理的网络往返次数
支持多个飞行中消息
将数据预取到客户机缓冲区,以便更快地执行后续请求。

uelo1irk

uelo1irk2#

Kafka对于一个消息代理来说速度很快,这在很大程度上是一种营销。例如,ibm messagesight appliances在2013年以微秒延迟完成了每秒1300万毫秒的任务。在一台机器上。在kreps开始github之前一年:https://www.zdnet.com/article/ibm-launches-messagesight-appliance-aimed-at-m2m/
Kafka有很多优点。真正的低延迟消息不是其中之一。在任何纯以延迟为中心的环境中,都不能使用批传递(例如,一系列偏移量)。当事件到达时,如果您想要最低的延迟,则必须立即尝试传递。这并不意味着等待几秒钟来批量读取事件块,也不意味着忍受请求每条消息的开销。如果您想将kafka与普通的基于push的代理进行比较,请尝试使用偏移量范围为1(so:1个消息)的kafka,您将明白我的意思。
相反,我建议将重点放在基于拉的流缓冲所能提供的东西上:
可重放性!!!
我个人认为,这使得下游数据工程系统在面对失败时更容易构建,特别是因为您不必依赖它们的内置复制模型(如果它们有)。例如,我很容易使用消息、丢失磁盘、恢复机器和重放丢失的数据。数据流成为其他系统可以同步的唯一真相来源,这是非常有用的!!!
信息传递中没有免费的午餐,拉和推各有优缺点。人们也尝试过推拉式消息传递,而且这也不是免费的午餐,这可能并不奇怪:)。

相关问题