一个业务处理应用的head first设计

最近接触一个应用,外部接收http请求后,去加载一些处理规则,再从文件服务器取一些文件,对文件数据进行加工后,产生结果数据,结果数据写入DB。这个过程中,全异步,多线程处理各环节。

初步的框架设计如下,明确了各单例与非单例对象的关系。欢迎提出建议与意见。

  • metaHolder是从db中加载一些数据处理用的元数据,规则等,可以缓存在本单元中。

  • fileDataPull是拉取一些文本文件中的数据,会放入queue中。

  • DataDeal是取上面queue中的数据,多线程用各handlers(责任链模式)处理一个数据。放在另一个queue中。具体会先New多个runnable(并发设置数量,new的参数有:取放的两个queue与handler),放入专用的线程池。

  • DataOutput会把queue中的数据入库。

  • dealContext是非单例对象,它持有请求与每个处理的结果(queue),实际处理时并不一定把整个context给一个处理单元,只给处理单元要的数据对象。

  • runnable对象不是context持有的,而是在处理单元中产生的。handlerChain也是run()方法中new出来的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值