一个定时线程池,两个forkjoin池
流程:定时任务,查库forkjoin池,存硬盘forkjoin池
好处:查库forkjoin线程固定对应连接池固定。存硬盘forkjoin可以大点。
可改进:定时任务分两步,查库以后丢到其他队列后可继续读库,其他队列线程继续存硬盘,提高吞吐量
2017年2月17日
当前方案:springboot收到请求->依次查询数据库生成文件
问题:
1,单词查询耗时过长,用户可能多次点击导致线程耗尽,数据库压力
2,当该业务堵塞会导致其他业务线程不够,最终会导致雪崩
跟同事聊了聊,这种及时性要求不高的东西应该异步
客户请求下载->数据插入下载表->异步单线程请求任务->forkjoin查库->合成结果,生成文件,更新数据库
优点:
1,异步后防止用户过度点击
2,forkjoin的数据库池线程数控制导致数据库压力可控
3,当前任务堵塞不会影响其他业务