最近做一个网络入侵检测系统,模块间需要传递的数据量很大,我们觉得应当使用文件做为缓冲但需要实现同时的高效读写,还请高人指点下!谢谢了!

解决方案 »

  1.   

    同时读写的缓冲要不就放在内存,要不就放在不同的文件。可以这样:整个读写包括写线程和读线程,写线程每分钟新建一个文件(如200912050957.buffer.tmp),将缓冲写进去,写完之后将其重命名(如200912050957.buffer);读线程则读取创建最早的已写完的文件(如 .buffer 文件),这样就可以实现用文件作为缓冲。当然还有一些细节比如应用重新启动后如何恢复读写等。
      

  2.   

    如果是linux,可以写在内核态,效率很高的。
    linux的netfilter机制就可以实现入侵检测。
      

  3.   

    那就有两个问题:
    1、磁盘读写速度能不能满足 200M/s?
    2、CPU 能不能处理的过来?如果其中一个做不到,那就要升级硬件,或者分流到多台机器去处理。