同类文章:高并发数据采集的架构应用(Redis的应用)html
吐槽下:本人主程是PHP,团队里面也没有精通.net的人才,为了解决这个平台方案,仍是费了一部分劲。sql
新年了,但愿有个新的开始。技术+团队管理都有新的突破吧,在新的一年对本身好些,不能再继续搞基下去。数据库
问题出发点:windows
´随着软件的日益强大,用户的使用需求愈来愈多,用户也但愿众多数据进行整合,来达到资源的合理应用。多线程
´有些数据资源须要抓取网页的形式来采集到数据。架构
´采集应用不统一,没有良好的管理程序,杂乱无章。并发
´采集应用常常性无响应,无相应的中断程序,极大照成应用的不稳定性。高并发
解决方案:.net
为了解决上述问题,提出了以下的解决方案,主要是使用了服务平台这个概念。线程
数据采集服务:使用C#建立windows服务。(aauto至今没找到相应的建立windows服务的实例)
功能包括:
1. 定时请求待采集事项,并放入待采集队列
2. 多线程定时经过API上传资源数据以及其它状态信息。
3. 定时平台监控,采集应用时间过长发出中断通知,通知无响应强制关闭应用而且从新启动。
4. 上传心跳信息,保证数据采集服务正常运行。
采集应用:使用AAuto建立应用,其实使用.net也是能够建立采集应用的,主要考虑到aauto语言这块团队相对来讲成熟点,并且已有现成的应用了,只须要稍微修改下就能够和服务平台对接了。
功能包括:1. 采集数据资源放入本地数据库,好比sqlite。
2. 保存耗时信息,经过耗时的均运算服务平台能够决定多久发出中断通知,以及能够预测多久时间能够完成工做。
状态应用:主要是辅助应用。
功能包括:
1) 能够查看处理进度
2) 能够查看数据上传进度
3) 能够查看待处理进度
4) 能够查看应用耗时信息
经过以上的解决方案来看:服务平台做为统筹工做者,负责与PHP API进行交互,相对来讲对于采集应用来讲相对独立,因此有很好的解耦性,同时又保证了稳定性。
采集应用再也不负责与PHP API交互,主要负责与本地资源交互,那么相对来讲,代码的工做量减小了,采集速度也能相应的提升。
具体代码实现:能够关注下后期的文章吧,我也会进量把代码贡献出来。以为不错的给个赞吧,新的一年新气象。