对 cockraoch 进行完全重构,在之前一些设计不足的方面进行了补充,完成了一直以来心中所想的一个爬虫框架的一些基础功能。
cockroach2 是 cockraoch 的完全重构版本,因为架构设计的原因以及代码写着写着就头脑发热的原因个,cockroach在开发的过程中做了一些本不该它做的事情,同样也有一部分本该它做的事情做不到,所以犹豫了好久干脆重写了,犹豫的原因是舍不得之前那百十来个小星星,后来实在是忍不下去了,干脆一了百了,咬咬牙重头再来。
没错,还是一个小巧、灵活、健壮的内容(pa)获取(chong)框架。
简单到什么程度呢,仍然是几句话就可以创建一个内容(pa)获取(chong)程序。
<repositories>
<repository>
<id>github</id>
<name>GitHub OWNER Apache Maven Packages</name>
<url>https://maven.pkg.github.com/zhangyingwei/cockroach2</url>
</repository>
</repositories>
<dependency>
<groupId>com.zhangyingwei</groupId>
<artifactId>cockroach2-core</artifactId>
<version>0.0.7</version>
</dependency>
public class CockroachContextTest {
public static void main(String[] args) {
CockroachConfig config = new CockroachConfig();
CockroachContext context = new CockroachContext(config);
QueueHandler queueHandler = new QueueHandler.Builder().withBlock(false).build();
queueHandler.add(new Task("http://zhangyingwei.com"));
context.start(queueHandler);
}
}
没错,就是这么简单。这个程序就是获取 http://zhangyingwei.com
这个页面的内容并将结果打印出来。
在结果处理这个问题上,程序中默认使用 PringStore 这个类将所有结果打印出来。
代码中通过监听器把一系列操作以日志的形式发送到日志队列。消费日志队列即可得到程序的运行情况。添加监控程序的日志消费者,即可开启监控界面。
CockroachConfig config = new CockroachConfig().addLogConsumer(CockroachMonitorConsumer.class);
具体实例可以参考: samples
花了这么大的精力进行重写,到底与第一版有什么区别呢?
- 结构更加清晰
- 执行器的生命周期管理更加清晰
- 执行器管理更加智能化
- 举个例子: 如果任务队列因为任务数量过多阻塞了,而所有的执行器都因需要提交任务到队列中而被消息队列挡在门外候着,这时程序就会陷入一个死亡宁静中。 而这个时候,程序就会提交一种叫零时工的任务处理器来缓解这种情况。当然这只是一种情况,其他的留在文档里写吧。
- 增加了生命周期日志
- 增加了日志订阅功能,可以通过订阅日志,获取程序的运行情况,从而自己实现一些功能。
写文档真的是太烦了!
介于api跟第一版本没有太大的出入,可以先参考第一版的文档。
如果不行的话,就加我微信吧!
抽时间再写文档。
- 邮箱: zhangyw001@gmail.com
- 微信: fengche361
Lisenced under Apache 2.0 lisence