Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
2008-01-03 12:04
776 查看
原文地址: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
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应用程序(想开发自己的搜索引擎增值服务的必读)
- 黑马程序员--javaweb开发-自己动手写一个servlet
- 【Java】Web 服务编程技巧与窍门: 在 UDDI 注册中心为 Web 服务注册开发 UDDI Java 应用程序
- IT增值服务-客户案例(三):合肥薪火科技,Java和P2P网络借贷系统开发指导
- 用Axis开发基于Java的Web服务
- webmagic的设计机制及原理-如何开发一个Java爬虫
- 01_Weblogic课程之概念篇:代理服务器,web服务器,应用程序服务器,JNDI概念,JTA概念,Java消息服务,Java验证和授权(JAAS),Java管理扩展,Web客户机,客户机应用程序
- 用Axis开发基于Java的Web服务
- 开发一个用于测试的SOAP Web服务
- Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互
- NetBeans6.1(6.5)Visual Web JSF 应用程序开发的一个BUG
- 自己用户jquery加 web服务做的一个小例子
- Java_常瑞鹏 Java Web应用程序开发_HTTP协议
- Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。
- 【How Tomcat Works】第一章——一个简易的java web服务实现(上)