我正在查看蓝色混合上的message-hub的node-js express示例,并且很困惑为什么我需要从我的服务器轮询消息中心。我认为pub-sub模型背后的整个想法是我不必(过度)加载我的服务器轮询消息服务以查明是否存在新消息供我使用。在提供的示例中,app.js文件中的第211-213行包含以下内容:
// Set up an interval which will poll Message Hub for
// new messages on the 'livechat' topic.
produceInterval = setInterval(function() { ...},250);
现在我的服务器轮询消息集线器每250毫秒,我想要的是完全避免轮询模型,并在消息存在供我使用时通过消息中心通知。
答案 0 :(得分:2)
简要说明: Kafka通过使用消费者拉动模型而不是服务器推送来实现其可扩展性。
详细说明: 值得首先阅读Kafka文档。 特别是,您的问题在这里得到解答 http://kafka.apache.org/documentation/#design_pull
HTH, 江户时代
答案 1 :(得分:1)
使用KafkaConsumer,poll()函数意味着您的应用程序正在轮询客户端缓冲区,而不必通过网络轮询到Kafka代理。 Kafka客户端经常在此客户端缓冲区中预取和缓存数据,以获得更好的性能,更低的延迟和更高的网络效率。
如果你想要一个异步回调样式界面,那就是"推动"数据到您的应用程序然后它很容易包装轮询界面,使其看起来像推。最终,每个推送API都隐藏在tcp套接字上调用poll的封面下。