Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
来源:互联网 发布:生命起源 知乎 编辑:程序博客网 时间:2024/04/27 18:33
原文地址:http://java.sun.com/developer/technicalArticles/WebServices/become/?feed=JSC
1 Become.com准备开发他们的第二代搜索引擎。他们曾经花了一年的时间开发了一个C++版本的web crawler ,但是有明显的内存和线程问题。
2 现在他们决定用java重新开发这个引擎。两个开发者,花了3个月,就构建了一个原型Crawler A。使用Java的网络库,多线程框架和RMI。虽然有一些内存和线程问题,但是性能仍然让人满意。
3 接下来他们开发了下一个版本Crawer B。其中取数据器(爬虫)使用Java,而控制器部分用C++实现。取数据部分负责I/O部分。采集,解析和分析web页的内容,从中提取出链接并发送给控制器。控制器负责管理数据结构和把数据存储到磁盘。多个取数据器和控制器通信,但是彼此间没有通信。
两个版本爬虫都是用纯java写的,没有用JNI,两个版本共享了一些内容分析的包也是完全用java实现的
4 C++用来构建索引,他对CPU要求很高。而爬虫(处理机器学习,分类和拼写检查是Java)。一开始数据是存放在关系数据库里面的,但是由于性能问题被替换掉。他们开发了一种内部格式,有java和C++的接口
5 使用jfreechart作为图表显示工具。控制器是RMI服务器,而爬虫是RMI客户端
6 开发者使用j2se内建的库和免费java组件来加速他们的开发。他们无需花费任何时间对内存错误进行调试。
7 他们一开始就是用j2se5.0 ,使用泛型来简化代码和使代码易读。广泛使用阻塞队列将工作从一个线程转移到另一个线程。由于页面到来的时间是异步的。
爬虫A从原型到令人基本满意花了大该六个月时间。
8 使用perl脚本来重启死掉的爬虫进程。
9 在爬虫B的开发中,他们使用了java.nio库,这比使用多线程带来了更好的性能,但是一些类,例如URL不支持NIO,他们自己实现了一个URLConnection.
10 配置文件使用JAXB存储为xml形式
11 在比较了eclipse和IDEJ之后,他们最终选择了Netbean作为开发工具。因为它extremely fast compared to Eclipse
12 他们还将继续使用java平台,因为能够快速开发比精确的内存控制更重要
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=470892
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- 有网盘啦,重新发自己写的Sudoku
- 如果有时间,我有点想开发自己的数据库文件格式了,发现单机版游戏还没一种固定的数据库
- 想开发搜索的人必读的文章(www.lucene.com.cn)
- 想开发搜索的人必读的文章(www.lucene.com.cn)
- 【转】想开发搜索的人必读的文章(www.lucene.com.cn)
- MFC 手把手 写一个文件播放小程序(这个是直接copy的 我会动手做一遍 然后发自己原创的)
- 发自内心的快乐
- 寻找增值服务的游戏规则
- JAVA应用程序如何打印出自己的回溯栈
- 发了李哥两张照片,不能不发自己的,要看的到我的blog里去看吧,道道
- 有一个外网bug想开的
- Open-source ERP 公司 Compiere 任命新的CEO
- 有生的日子天天快乐
- J2ME常用功能代码片断
- 关于Ajaxian JSF的设计原则
- 如何快速上手Netbeans的GUI Form Designer
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- Ajax的三种形式(开源项目)
- 2008年不可错过的Web2.0产品
- 世界上最简单的模板,比Smarty,Xtemplate还要强大
- 使用WebService访问Google api
- 利用J2ME里的RMS对记录进行排序
- 一个开源的IoC采集服务器体系结构设计
- 开始为exoplatform实现ajax-jsf组件。
- 开始为exoplatform实现ajax-jsf组件。