IDEA相关便捷功能

来源:16-2 简单调度器

nitros

2020-02-19

老师好!

关于本章节7分钟左右的地方,老师在讲解过程中说通过IDEA的一个简单方法做了一些操作。
请问这里具体用了什么简单功能,这个功能又具体实现了什么。

另外,针对simpleScheduler存在的意义做下说明,如果理解的不对希望老师能给出一个更好的解释。
关于并发这个环节的开发
首先,把时间花费较久的fecher和parser部分做了整理,命名为worker,让此工作者来并发工作提高效率。
其次,ConcurrentEngine做出了对于数据处理流程的一个整体架构,相当于一个数据中转站,告诉每个数据下一步由谁接收,由谁处理,再发给谁。
最后,针对由ConcurrentEngine这个中转站发出的请求,来做调度分配具体让哪个worker去工作,也就是一个任务调度器。

那么调度器又为什么不写在ConcurrentEngine下的scheduler interface里呢?为什么要单出来呢?对于这里的一些架构有点不明确,还望老师能给与详细的讲解。

写回答

1回答

ccmouse

2020-02-20

这个功能是我鼠标移上去,就会有个灯泡,灯泡里会有implement interface,然后可以选择想要implement的interface,点一下,代码片段就会自动生成。

另外,我们这里做了engine和scheduler两层抽象。scheduler只负责分发任务,与业务无关。而engine负责分发什么任务,这是业务相关的,需要负责实现爬虫的逻辑。(这里的业务是指一个普遍的爬虫的逻辑,我们还有parser来实现更具体的针对每个网站的逻辑)

scheduler与业务无关,但却可以很复杂,还可以有不同的实现来替代,所以抽象出来是很自然的。

SimpleEngine是单线程的,不需要scheduler。ConcurrentEngine是并发的,需要scheduler,而scheduler的实现可以有SimpleScheduler和QueuedScheduler,它们都是为ConcurrentEngine服务。

0
1
nitros
感谢老师回答,虽然听的云里雾里的但是感觉还是能理解一些。我再细心看几遍视频品味一下
2020-02-20
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程