社区
Java SE
帖子详情
如何用文件做大容量缓冲区,实现同时读写?(类似生产者消费者)
tangwing
2009-12-05 09:38:12
最近做一个网络入侵检测系统,模块间需要传递的数据量很大,我们觉得应当使用文件做为缓冲但需要实现同时的高效读写,还请高人指点下!谢谢了!
...全文
319
14
打赏
收藏
如何用文件做大容量缓冲区,实现同时读写?(类似生产者消费者)
最近做一个网络入侵检测系统,模块间需要传递的数据量很大,我们觉得应当使用文件做为缓冲但需要实现同时的高效读写,还请高人指点下!谢谢了!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tangwing
2009-12-06
打赏
举报
回复
[Quote=引用 12 楼 yidinghe 的回复:]
引用 3 楼 tangwing 的回复:
感谢楼上指点!有些启示!这里再补充一下,数据量非常大,平均大约有每秒200M的样子,所以恐怕不能放内存里。
那就有两个问题:
1、磁盘读写速度能不能满足 200M/s?
2、CPU 能不能处理的过来?
如果其中一个做不到,那就要升级硬件,或者分流到多台机器去处理。
[/Quote]
我也是最近才意识到这个严重的问题,还好不必分析所有数据包,同一连接的数据包只需提取一次特征值即可。现在主要还是处理缓冲的问题。
justinavril
2009-12-05
打赏
举报
回复
[Quote=引用 3 楼 tangwing 的回复:]
感谢楼上指点!有些启示!这里再补充一下,数据量非常大,平均大约有每秒200M的样子,所以恐怕不能放内存里。
[/Quote]
200M/s?嗯...数据量确实挺大!
捏造的信仰
2009-12-05
打赏
举报
回复
[Quote=引用 3 楼 tangwing 的回复:]
感谢楼上指点!有些启示!这里再补充一下,数据量非常大,平均大约有每秒200M的样子,所以恐怕不能放内存里。
[/Quote]
那就有两个问题:
1、磁盘读写速度能不能满足 200M/s?
2、CPU 能不能处理的过来?
如果其中一个做不到,那就要升级硬件,或者分流到多台机器去处理。
tangwing
2009-12-05
打赏
举报
回复
[Quote=引用 10 楼 fengboxjtu556 的回复:]
如果是linux,可以写在内核态,效率很高的。
linux的netfilter机制就可以实现入侵检测。
[/Quote]
对 那个能实现一部分辅助功能不过自然不是很专业。我们把数据全部截获并作出分析,在捕获模块和分析模块的连接处就产生了数据传递缓冲的问题。
fengboxjtu556
2009-12-05
打赏
举报
回复
如果是linux,可以写在内核态,效率很高的。
linux的netfilter机制就可以实现入侵检测。
tangwing
2009-12-05
打赏
举报
回复
呜呜……
tangwing
2009-12-05
打赏
举报
回复
感谢楼上指点!有些启示!这里再补充一下,数据量非常大,平均大约有每秒200M的样子,所以恐怕不能放内存里。
捏造的信仰
2009-12-05
打赏
举报
回复
同时读写的缓冲要不就放在内存,要不就放在不同的文件。可以这样:整个读写包括写线程和读线程,写线程每分钟新建一个文件(如200912050957.buffer.tmp),将缓冲写进去,写完之后将其重命名(如200912050957.buffer);读线程则读取创建最早的已写完的文件(如 .buffer 文件),这样就可以实现用文件作为缓冲。当然还有一些细节比如应用重新启动后如何恢复读写等。
rumlee
2009-12-05
打赏
举报
回复
有开源的缓存,如oscache等。
tangwing
2009-12-05
打赏
举报
回复
晕!又被淹了!不带这么玩儿的,再顶!
tangwing
2009-12-05
打赏
举报
回复
感谢大家!自顶一下
whut0802
2009-12-05
打赏
举报
回复
平均大约有每秒200M的样子,哈哈,大大滴,帮顶下吧
苍蝇①号
2009-12-05
打赏
举报
回复
有多少读友多少写,读写之间有什么关系,每一条记录的大小多少?这写都要考虑的
【Linux线程】Linux多线程实践:深入
生产者消费者
模型
生产者消费者
模型描述了一个或多个生产者线程生成数据,并将其放入
缓冲区
,同时一个或多个消费者线程从
缓冲区
中取出数据进行处理的过程。这种模式不仅有效地
实现
了数据的生成与处理之间的解耦,还通过引入
缓冲区
来平衡生产者和消费者之间的速度差异,从而提高了系统的整体效率和稳定性
java
实现
生产者消费者
问题(附带源码)
java
实现
生产者消费者
问题(附带源码)
【Qt】生产者-消费者模式学习笔记
本文介绍了生产者-消费者模式及其在项目中的应用。该模式通过
缓冲区
解耦数据生成和处理,核心组件包括线程安全的数据队列(DataQueue)、生产者(ProducerThread)、消费者(CsvFileSaver)和UI控制器(MainWindow)。
生产者-消费者问题
目录 1. 概述 定义
缓冲区
2. 典型模型 模型一 模型二 可选需求 3. 数据结构队列C语言
实现
4. 代码
实现
——互斥锁 + 条件变量 5. 代码实...
生产消费者模型 &&
读写
者模型
那么我们该如何使用信号量来完成环形队列的生产消费者模型呢?我们先来看一下信号量的定义。
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章