抽取模板优化进展: 1)采用了线程池的方式,线程池初始化为20个线程,线程池的好处可以控制系统中执行线程的数量,减少了创建于销毁线程的次数。 2)一概之前进程的重复加载spring配置文件的方式,之前的程序入口,每个进程开始时都必须重复加载一遍sping.xml 与mybatis-spring.xml。由于采用了spring的依赖注入,反复加载配置文件会导致一些不必要的poji类反复加载创建,浪费内存,将所有配置文件的加载都写入一个类中,所有的bean集中管理。 3)整体的逻辑还是按照师兄的意思修改,部分细节还在优化。 4)日志部分逻辑还在继续编写。
目前已经将抽取模板改成了多线程,具体实现如下: 1)将之前的每个站点一个进程的方式,改成了每个站点一个线程,修改原来每个站点读取数据的方式,不采用定时去访问数据库读取数据的方式,而是采用每次查看数据库中是否有数据新增,将新增的数据抽取完,该线程任务就结束。 2)主线程采用轮询的方式扫描每一张站点的爬取结果存储表,一旦站点的表中数据有新增的爬取量并且该站点的线程标志为false,则马上启动该站点的线程,同时将该线程的运行标记设置为true。 3)采用了线程池的方式。 目前的问题: 大致思路已经实现,在本机上也测试过,但是还是不稳定,目前还在完善当中