0

我正在查看蓝色混合消息集线器的 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 毫秒轮询一次消息集线器,而我想要完全避免轮询模型,并在存在消息供我使用时由消息集线器通知。

4

2 回答 2

2

简而言之:Kafka 通过使用消费者拉动模型而不是服务器推送模型来实现其可扩展性。

详细说明:值得先阅读 Kafka 文档。特别是,您的问题在这里得到了回答 http://kafka.apache.org/documentation/#design_pull

HTH,江户

于 2017-06-07T00:48:53.157 回答
1

使用 KafkaConsumer 的 poll() 函数意味着您的应用正在轮询客户端缓冲区,而不必通过网络轮询 Kafka 代理。Kafka 客户端通常在此客户端缓冲区中预取和缓存数据,以获得更好的性能、更低的延迟和更好的网络效率。

如果您想要一个将数据“推送”到您的应用程序的异步回调样式接口,那么包装轮询接口并使其看起来像推送非常容易。最终,每个推送 API 都隐藏了一些在 tcp 套接字上调用 poll 的东西。

于 2017-06-07T02:32:46.633 回答