我有一台70G内存的linux计算机,上面每天都要跑5个crontab程序,5个程序的开头都要去读取大文件,存到内存中,这个大对象大约有20G左右,每次读取大文件,都要花掉20分钟左右。我每次要找程序的bug,测试起来非常的不方便,每测一次都要等个至少20分钟。我想能不能写第6个程序,这个程序是24小时处在running状态中,每天到了凌晨0点,就自动去读取大文件,从内存中删掉昨天的旧的20G大对象,然后在内存中生成新一天的20G大对象,0点20分开始就可以为另外5个程序提供数据服务了。另外5个程序,每个程序都可以省去20分钟的时间。我现在能想到的办法是用Socket,还有rmi,或者web server但是我不知道哪个效率比较高,因为我这数据量挺大的。想问下哪个效率比较高?(如果有其他更好的解决办法,也可以向我推荐)

解决方案 »

  1.   

    直接用socket不靠谱,传的东西还是要么弄成xml,这就成了web service,要么序列化,这就成了rmiwebservice效率是不够好的,且传输的xml中很多内容如标签并不是必须品,只是为了自身的处理,增大了传输负担扩展rmi,可以压缩序列化的byte[]
      

  2.   

    20G的文件,你打开读取都要花20分钟,你用socket、rmi、webservice传数据,而且是给5个程序传,效率也不会高吧...............
      

  3.   

    是不是可以试试将你的对象序列化,如果这五个cron用的是同一个类
    或者能不能第六个程序是这五个程序的manager,由他来初始化数据并且控制其他五个程序的运行时间,而不是用crontab