【问题标题】:Streaming API vs Rest API?流式 API 与 Rest API?
【发布时间】:2011-08-23 00:57:41
【问题描述】:

这里的典型示例是 Twitter 的 API。我从概念上理解 REST API 是如何工作的,本质上它只是针对您的特定请求向他们的服务器查询,然后您在其中收到响应(JSON、XML 等),太好了。

但是,我不确定流式 API 在幕后是如何工作的。我了解如何消费它。例如,使用 Twitter 监听响应。从响应中侦听数据以及其中的推文以块的形式出现。在字符串缓冲区中构建块并等待表示推文结束的换行符。但是他们做了什么来完成这项工作?

假设我有一堆数据,我想在本地设置一个流式 API 供网络上的其他人使用(就像 Twitter 一样)。这是怎么做的,什么技术?这是 Node JS 可以处理的吗?我只是想了解他们正在做什么以使这件事发挥作用。

【问题讨论】:

    标签: api twitter node.js streaming


    【解决方案1】:

    Twitter 的流 API 本质上是一个长期运行的请求,保持打开状态,数据在可用时被推送到其中。

    这样做的后果是服务器必须能够处理大量并发打开的 HTTP 连接(每个客户端一个)。许多现有的服务器不能很好地管理,例如 Java servlet 引擎为每个请求分配一个线程,这可能 (a) 变得非常昂贵并且 (b) 快速达到正常的最大线程设置并阻止后续连接。

    正如您所猜测的,Node.js 模型比 servlet 模型更适合流式连接的想法。请求和响应都在 Node.js 中作为流公开,但不会占用整个线程或进程,这意味着您可以继续将数据推送到流中,只要它保持打开状态而不会占用过多资源(尽管这是主观的)。理论上,您可以将大量并发打开响应连接到单个进程,并且只在必要时写入每个响应。

    如果您还没有看过它,HTTP docs for Node.js 可能会有用。

    我还想看看technoweenie's Twitter client,看看使用 Node.js 的 API 的消费者端是什么样子的,the stream() function in particular

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 2020-11-14
      • 2018-10-27
      • 2016-08-03
      相关资源
      最近更新 更多