网络爬虫项目开发日志(三):爬虫上线准备
2016-08-28 17:48
253 查看
经过这段时间的开发,尽管路途不顺畅,但我们还是顺利的上线了爬虫项目的初版,上线的过程也是一波三折,特总结如下:
1、技术选型千万要慎重,尤其是在第三方框架的跨平台支持性上需要做好充分的评估,开发人员当初只是在windows平台做的开发,没有在linux平台
上验证同样一个技术的可用性,导致到了上线前忍痛割爱,换备选技术方案。
例如:我们在开发阶段,开发哥哥选用谷歌的chrome webdriver来处理被下载网页的渲染,当初在windows平台上运作很正常,可到了上集成环境
的时候,发现chrome webdirver的linux安装包无法安装,因为该工具包所依赖的底层glibc、glibc++和我们服务器的cent OS 6.X所提供的相关lib版本
不一致,导致必须升级glibc、glibc++,升级glibc可不是一件轻松的事情,需要升级gcc,有着一系列的复杂shell操作,最后,经过评估,我们决定换
firefox webdriver取而代之,firefox的好处在于无需要另外安装webdriver驱动包,只需要安装火狐浏览器即可,OK,我们安装好浏览器后,系统跑起
来又报错了:NO Display Specified×××,啥意思,就是centOS未安装桌面组建,没有一个对屏幕显示的支持机制,如果要打开firefox浏览器,必须要
安装一个虚拟屏幕的程序来支持,这时候,xvfb站出来了,安装好xvfb,分配一个虚拟的屏幕号,启动firefox,搞定!
2、对于相对成熟的技术,也需要上linux平台上去根据实际线上部署请款模拟一遍真实的服务器之间的数据交互,而不是停留在想当然。
例如:我们的消息层是基于redis来开发的,当时开发的时候,消息的订阅和发布其实都是在本机进行的,整个的消息传输处理的流程都能够测试通
过,但是,到了生产环境后,消息的发布和订阅是由两台服务器分别来进行,当其中一台服务器订阅了另外一台服务器的消息主题后,发现connect
refused,我们检查了网络权限,发现Ip、port在tcp层面的传输都没有问题,那是咋回事呢,后经查实,这是redis的安全事物处理机制,如果一台服务
器需要访问另外一台服务器的redis服务的时候,必须要通过密码校验来鉴权,后来设置服务器密码后,搞定!
3、充分评价系统的复杂度,尽早考虑将系统相关静态信息配置化,否则当系统需要平滑迁移时,书手术脚。
例如:我们在临上线前一周,领导要求,所有和外网的交互都要经过一个网关系统,大的架构上没有问题,但对我们爬虫系统来说,无异于伤筋动骨
了,1、我们所有的httpclient中的外网种子Url都是写死在代码中的,如果要过网关系统,意味着必须把所有的种子Url都切换为网管Url,而且还要修改
相关的参数。2、我们页面解析中的也有很多针对域名的的操作,有写死在代码中的,有通过正则表达式来说明的等等,这些改动点如果细细想来,也
够我们吃一壶的。3、一个爬虫任务本身三有着各种属性来定义此任务模型的,有种子Url、爬取层数、任务开关、爬取频率、重试次数、重试间隔时间
、等等,如果外部业务有变动的话,在无配置的情况下,爬虫无法很灵活的跟着变动。
因为系统刚刚上线,肯定还有不少坑,但每填一个坑,我就会更开心一点,因为爬虫更强大了一点。
1、技术选型千万要慎重,尤其是在第三方框架的跨平台支持性上需要做好充分的评估,开发人员当初只是在windows平台做的开发,没有在linux平台
上验证同样一个技术的可用性,导致到了上线前忍痛割爱,换备选技术方案。
例如:我们在开发阶段,开发哥哥选用谷歌的chrome webdriver来处理被下载网页的渲染,当初在windows平台上运作很正常,可到了上集成环境
的时候,发现chrome webdirver的linux安装包无法安装,因为该工具包所依赖的底层glibc、glibc++和我们服务器的cent OS 6.X所提供的相关lib版本
不一致,导致必须升级glibc、glibc++,升级glibc可不是一件轻松的事情,需要升级gcc,有着一系列的复杂shell操作,最后,经过评估,我们决定换
firefox webdriver取而代之,firefox的好处在于无需要另外安装webdriver驱动包,只需要安装火狐浏览器即可,OK,我们安装好浏览器后,系统跑起
来又报错了:NO Display Specified×××,啥意思,就是centOS未安装桌面组建,没有一个对屏幕显示的支持机制,如果要打开firefox浏览器,必须要
安装一个虚拟屏幕的程序来支持,这时候,xvfb站出来了,安装好xvfb,分配一个虚拟的屏幕号,启动firefox,搞定!
2、对于相对成熟的技术,也需要上linux平台上去根据实际线上部署请款模拟一遍真实的服务器之间的数据交互,而不是停留在想当然。
例如:我们的消息层是基于redis来开发的,当时开发的时候,消息的订阅和发布其实都是在本机进行的,整个的消息传输处理的流程都能够测试通
过,但是,到了生产环境后,消息的发布和订阅是由两台服务器分别来进行,当其中一台服务器订阅了另外一台服务器的消息主题后,发现connect
refused,我们检查了网络权限,发现Ip、port在tcp层面的传输都没有问题,那是咋回事呢,后经查实,这是redis的安全事物处理机制,如果一台服务
器需要访问另外一台服务器的redis服务的时候,必须要通过密码校验来鉴权,后来设置服务器密码后,搞定!
3、充分评价系统的复杂度,尽早考虑将系统相关静态信息配置化,否则当系统需要平滑迁移时,书手术脚。
例如:我们在临上线前一周,领导要求,所有和外网的交互都要经过一个网关系统,大的架构上没有问题,但对我们爬虫系统来说,无异于伤筋动骨
了,1、我们所有的httpclient中的外网种子Url都是写死在代码中的,如果要过网关系统,意味着必须把所有的种子Url都切换为网管Url,而且还要修改
相关的参数。2、我们页面解析中的也有很多针对域名的的操作,有写死在代码中的,有通过正则表达式来说明的等等,这些改动点如果细细想来,也
够我们吃一壶的。3、一个爬虫任务本身三有着各种属性来定义此任务模型的,有种子Url、爬取层数、任务开关、爬取频率、重试次数、重试间隔时间
、等等,如果外部业务有变动的话,在无配置的情况下,爬虫无法很灵活的跟着变动。
因为系统刚刚上线,肯定还有不少坑,但每填一个坑,我就会更开心一点,因为爬虫更强大了一点。
相关文章推荐
- 网络爬虫项目开发日志(七): 基于MD5去重树的爬虫设计与优化
- 网络爬虫项目开发日志(一):关于爬虫项目所涉及的领域知识
- 网络爬虫项目开发日志(二):爬虫架构设计
- Linux企业级项目实践之网络爬虫(1)——项目概述及准备工作
- 漫谈程序员(七)公司真实上线项目开发日志--你懂得
- Linux企业级项目实践之网络爬虫(1)——项目概述及准备工作
- 漫谈程序员(七)公司真实上线项目开发日志--你懂得
- Python大型网络爬虫项目开发实战
- Visual C# 2008+SQL Server 2005 数据库与网络开发――3.3.3 创建项目
- 开发的网络海量词典正式上线
- 移动BOSS3.0开发管理平台项目日志:4月14日
- 【自研项目日志】_准备工作_20081229
- Visual C# 2008+SQL Server 2005 数据库与网络开发―― 2.6 创建项目
- 没头没尾--项目开发笔记:异常处理与日志记录代码自动生成(工具能生成多少代码!?续一)
- 几个Java网络爬虫开源项目
- 项目开发前的准备工作---编写跨平台注意事项
- 开发日志一:前期准备Ogre与irrlicht(食人魔vs 鬼火)
- 用户投诉:为什么你们的项目没有经过性能测试就准备在周五上线?!
- 《LoadRunner性能测试入门与虚拟用户开发基础》网络课程上线
- 简易网络爬虫程序的开发(2)(c#版)