RabbitMQ 采用推送模型 。代理与消费者保持持久的 TCP 连接,并在有可用数据时将数据推送给他们 。
然而,推送模型可能会淹没消费者 。如果代理推送数据的速度快于消费者处理数据的速度,消费者可能会落后 。RabbitMQ 确实有一个解决方案,这边就不展开讨论了 。
长轮询等待方式方法
Kafka 使用拉模型,也就是长轮询 。消费者定期从代理拉取数据 。因此,消费者只有在准备好时才能拉取数据 。但是,如果分区上没有数据,来自消费者的定期轮询可能会导致资源浪费 。
Kafka通过使用“long polling”等待模式的方式解决了这个问题 。简而言之,如果分区上没有数据,Kafka 不会返回空响应 。相反,broker保持连接并等待数据进入,然后再将其返回给消费者 。
这减轻了当分区上没有数据时消费者频繁轮询并防止资源浪费 。
总结本文总结了Kafka这个组件的基础知识,希望让大家对Kafka有一个宏观的认识,感兴趣的再深入分析底层的实现机制 。
推荐阅读
- 只需一篇就让你详细了解 Java 中 so 文件的加载原理
- 绿松石|绿松石赌石小九九:劝你别玩
- 怎么改pdf里面的文字,快速修改pdf内容方法
- 吴奇隆|“播前无人知晓,播出后大火”的五部剧,你若都看过,我真佩服你
- 虚拟主持人是怎么做的,带你揭秘虚拟主持原理
- 网站线下推广方案,教你如何做线下推广
- 诺顿企业版无法在win10上安装。关于诺顿企业版?
- 如何使用icloud备份,一文教你玩转icloud
- 建盏|论色泽,论形意,论用境 带你了解建盏
- 吴昕|著名作家痛批杜海涛:你盯着吴昕的肚子干嘛,管好自己老婆
