为什么Kafka基于拉力而不是推基础?我同意卡夫卡给了我经历过的高通量,但我没有看到卡夫卡吞吐量将如何往下走,如果它是基于推.关于基于推送的任何想法都会降低性能?
小智 28
可伸缩性是我们设计此类系统(拉动与推动)时的主要驱动因素.Kafka非常具有可扩展性.Kafka的一个主要优点是,在不影响性能和不停机的情况下添加大量消费者非常容易.
Kafka可以处理来自生产商的每秒100k +的事件.由于Kafka消费者从主题中提取数据,因此不同的消费者可以以不同的速度消费消息.卡夫卡还支持不同的消费模式.您可以让一个消费者实时处理消息,另一个消费者以批处理模式处理消息.
另一个原因可能是Kafka不仅适用于像Hadoop这样的单一消费者.不同的消费者可以有不同的需求和能力.
基于拉动的系统存在一些缺陷,例如由于定期轮询而浪费资源.Kafka支持"长轮询"等待模式,直到实际数据通过以缓解这一缺点.
aru*_*nvg 24
请参阅Kafka文档,其中详细说明了特定的设计决策:Push vs pull
支持拉动的主要观点是:
基于拉取的系统(消费者在没有可用数据的情况下轮询数据)的缺点在一定程度上通过"长轮询"等待模式得到缓解,直到数据到达为止.
Rob*_*ird 11
其他人则根据Kafka的文档提供了答案,但有时应以一定的盐作为产品文档,作为绝对的技术参考。例如:
可能有趣的是,在1990年代后期开发了各种推挽消息传递系统,作为优化吞吐量的一种方法。结果从未令人st舌,并且系统复杂性和其他因素常常超过了这种优化。我相信这是Jay关于在实际数据中心网络上的实际性能的总体观点,更不用说开放Internet之类的东西了。
Kafka 使用基于拉取的系统,允许用户请求消息。Pushing
只是经纪人的额外工作。对于 Kafka,获取消息的责任由消费者承担。消费者可以决定他们想要以什么速率处理消息。
如果代理正在推送消息并且某些消费者已关闭,则代理将重试某些次来推送消息,直到他们决定不再推送。这会降低性能。想象一下向多个消费者推送消息的工作量。基于推送的方法适合低延迟消息传递。
归档时间: |
|
查看次数: |
14755 次 |
最近记录: |