大量拉取网络数据的策略总结
来源:互联网 发布:stl源码剖析 百度云 编辑:程序博客网 时间:2024/04/29 08:00
这两天在做需求的时候,遇到了一个难题,背景是这样的,
业务需要,我们要不停的抓取一个网址的数据,主要是通过两个参数A, B决定的结果。 下面来讨论一下,我遇到的问题:
1. A大约有200种可能, B的集合数也有几百个,对于这样的程序,如果在本地运行,当然是很简单的,直接两个循环搞定(可能A在外,还是B在外,需要根据具体操作考量一下)。但是对于网络请求来说就麻烦了:
1. 有可能你f发的请求包会丢掉,2. 有可能回包会丢掉, 3 有可能对方服务繁忙拒绝掉。。。等等一系列问题。
这样的情况下,你怎么保证程序的稳定运行?
一开始我想的很简单,程序直接退出了,但是问题时,这个可能要跑几十个小时的程序,即使程序可以从中断的位置开始继续执行,但我不可能一直盯着它吧?所以结果很自然就出来了,错误的就写个log了,回头的修复程序,重新读log,把每一条都执行完毕。这个的问题是,不会因为一个请求失败而卡住,但是可能log会非常大
另外一种解决方式,当一次请求失败后,重试几次,实在不行再写log,这个的好处是log会相对较小,但是问题是可能会多发请求。
第二个问题,比较头疼,上w个请求,如果对方的相应比较慢,每个请求可能要等个3,5秒,简单算一下,这个程序的执行将会以天为单位来计算了。
如果解决呢? 初步想法是,多线程并行,这样至少可以减少几倍的运行时间。而且公共处理逻辑可以是一样的,只需要花点心思吧初始集合划分好就好。
知易行难,这个还没有实现啊~>_<~
而且,万一对方的网站顶不住你这样的多线程访问咋办?泪奔啊,程序员的生命基本上 就耗在这样的等待中了
----------------------------------------分割线------------------------------
接下来准备去做LCD、IGBT、HMI方面的电商
- 大量拉取网络数据的策略总结
- 对于网络数据拉取和推送方式优劣分析
- android ListView下拉刷新拉取网络数据
- 数据拉取
- 拉取全部数据
- execl 数据拉取
- 使用insert插入大量数据的总结
- 从大量数据中取最小的前k个数
- android 定时拉取数据
- 定时拉取ElasticSearch数据
- 跨服务器数据拉取
- hive——拉取数据的一个实例
- 通过分区和offset拉取Kafka的数据
- 访问Google问题 做数据爬取 解决的网络问题 连续更新总结
- 无线轮播从网络加载图片 拉取数据get解析
- 大量数据的SQLLDR
- 大量数据的链接
- 网络爬虫爬取策略,注意爬虫爬取网站的频率
- CTreeCtrl
- qemu的windows版本编译
- 经营活动产生的现金流量净额
- 黑马程序员_集合和数组工具类
- Ubuntu中Git服务器搭建
- 大量拉取网络数据的策略总结
- User does not exist: ORA-06512: at "SYSMAN.MGMT_USER", line 122 ORA-06
- 黑马程序员_学习方式调节
- POJ 1154
- 黑马程序员_珍惜学习时间
- Exception starting filter struts2
- Git详解之一 Git起步
- 黑马程序员_面试问题
- RAII惯用法:C++资源管理的利器