首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在将本地文件写入网络时以高性能方式进行流处理

在将本地文件写入网络时以高性能方式进行流处理
EN

Stack Overflow用户
提问于 2020-03-14 16:21:35
回答 1查看 57关注 0票数 0

今天,有一个系统可以在本地磁盘进入时向本地磁盘写入数据包捕获文件。出于容错的原因,将这些文件作为第一步放到本地磁盘被认为是可取的。如果客户端死亡,需要重新连接或在其他地方长大,我们可以从磁盘上重放。

数据管道中的下一个步骤是尝试将这些数据放到磁盘上,然后发送给远程客户端。假设有足够的磁盘空间,我认为使用本地磁盘(以及上面的页面缓存)作为持久的无限FIFO非常方便。使用文件系统来保持生产者和消费者之间的耦合也是可取的。

在我的研究中,我没有找到很多关于这类建筑的指导。更具体地说,我还没有看到在流行的开源库/框架中建立的模式,这些模式是用来读取文件的,因为它正在被编写出来。

我的问题:

  1. 这个架构中是否有我没有注意到或间接淡化的缺陷?
  2. 是否建议在编写文件时使用该文件,并在文件中有更多数据可用时有效地阻止和/或异步通知?
  3. 目标将是显式或隐式地从页面缓存温暖中获得消费者利益。对于如何对此进行优化,有什么建议吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-14 16:55:51

基于文件的解决方案听起来很笨重,但可以工作。类似于tail -f是如何做到的:

  • read文件直到EOF,但不关闭它
  • 安装inode手表(使用inotify),等待更多的写操作
  • 重复

困难通常是文件的旋转和清理,即您需要监视新的文件和/或截断。

尽管如此,直接连接到数据包捕获接口或设置客户可以订阅的队列可能更有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60684841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档