日期:2014-05-20  浏览次数:20791 次

一个发送http请求的java app程序内部设计问题
需求:一个java app,需要从数据库表中读取记录,跟据读取的参数发送http请求,解析返回的结果后更新到数据库。

数据库部分使用数据库连接池;

使用线程池产生两种线程:1.用于访问数据库读取数据存放到请求队列queue1中,从queue2结果队列中取数据更新到数据库。2.用于从请求队列中取数据调用httpSend模块发送请求,解析响应存放到结果队列。
两种线程的数量都可配置。
结构如下图:



各位觉得应该怎样设计?或怎样改进?

------解决方案--------------------
我觉得你的想法无非是读写分离。但是我个人觉得这个模型不好。因为不管是读还是写,你读的时候和写的时候都需要锁定队列。而且你操作完了,要移动到写队列的时候也要锁队列。实际上没达到读写分离的目的。我个人举得应该再将每个队列进行一下修改。把现在的队列做成一个双队列。其中一个队列作为缓存,另外一个队列作为操作队列。当缓存队列满了以后,讲两个队列交换。也就是说你的队列由2个变成了2*2。
------解决方案--------------------
MVC模型