【问题标题】:Read file from last document read - JSON stream从上次读取的文档中读取文件 - JSON 流
【发布时间】:2015-08-25 15:57:28
【问题描述】:

我正在接收来自服务器的流,该流呈指数增长。我需要每分钟检查新数据,处理这些数据,并在下一分钟请求更多。

数据是 JSON 文档。平均每分钟接收约 600-700 个文档。

由于性能问题,我必须避免阅读已处理的文档。

是否可以只读取最后一分钟收到的数据?

【问题讨论】:

  • 你说的filedocument是什么意思?
  • 包含 100 个 JSON 文档的日志文件。
  • 好吧,我猜你会在某个地方跟踪偏移量,并在下次开始阅读时跳到那个位置。我想我不明白你的情况。
  • 我会尝试用另一种方式解释。我从服务器接收流,呈指数增长。我需要每分钟检查新数据,处理这些数据,并在下一分钟要求更多。数据是 JSON 文档。平均每分钟接收约 600-700 个文档。
  • 对不起,我不明白你在做什么。

标签: javascript json node.js stream


【解决方案1】:

您可以使用循环缓冲区并使用侦听器将数据放在那里。 例如,通过存储最后 N 个文档或块,它主要取决于您的应用程序的代码。

这样,旧数据将被丢弃以进行设计,您不必处理流的内部结构或设计不佳的解决方案。

这是为缓冲区定义正确大小的问题,但在我看来这是一个容易得多的问题。

【讨论】:

  • 如果缓冲区只读取 3,5 个文档,我想我明白了,但它是 node.js 和 js 的新手。最后一个文档没有被读取,它将用于下一个块,对吗?目前我有这个。用于测试我的文件不会增加。 stackoverflow.com/questions/32206017/…
  • 实际上,您可以在循环缓冲区中放置流对象,附加到它的只是错误事件的处理程序。一旦您决定从缓冲区中弹出一个流以丢弃它,只需将其设置为 null 或替换该位置的项目,否则弹出它并将其附加到旨在读取数据的侦听器。这样您就不会浪费时间处理您不感兴趣的数据和结束事件。
猜你喜欢
  • 2021-11-17
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
相关资源
最近更新 更多