Web应用异步任务处理的实现研究
2012-08-20张文梅廖福保
网络安全与数据管理 2012年4期
张文梅,廖福保
(广东农工商职业技术学院 机电系,广东 广州 510507)
在Web应用中,某些功能的实现逻辑很复杂、执行比较耗时[1],例如涉及外部系统调用、多数据源等;此时,希望可以让这些复杂的业务逻辑放在后台执行,而前台与用户的交互可以不用等待,从而提高用户体验;或者需要以一定时间间隔重复运行任务、或在每天的指定时间运行任务的情况。为此,需要控制大型任务对服务器资源的消耗,降低Web服务器的并发连接数目,这就需要将大型任务的提交和执行分开,使服务器接受任务后立即断开与客户端的连接,减少服务器的并发连接数,而任务则推迟到服务器资源许可时执行,以抑制服务器资源的峰值消耗。
为尽量减少耗时操作对执行的影响,本文提出了异步任务的处理,使用多线程来管理耗时任务,作为后台进程执行;同时把任务信息都持久化在数据库中,保证了异步任务处理的灵活性、可靠性。
1 多线程
1.1 线程池
一个线程是程序中的一条执行流,是操作系统分配处理器的基本单位。并发是程序中多条执行流的同时推进,多任务并发对应多线程并发[2]。
但是为每个任务创建一个线程,当任务完成时撤消对应的线程存在明显的缺陷。线程的创建需要一定的时间,给任务请求的响应带来延迟,线程的创建和撤消也给操作系统带来额外的管理负担,若频繁 “创建和撤消”,则将明显增加系统的额外开销。为有效降低线程重复创建和撤销方面的开支可以采用线程池技术。……
登录APP查看全文
