IDEA相关便捷功能
来源:16-2 简单调度器

nitros
2020-02-19
老师好!
关于本章节7分钟左右的地方,老师在讲解过程中说通过IDEA的一个简单方法做了一些操作。
请问这里具体用了什么简单功能,这个功能又具体实现了什么。
另外,针对simpleScheduler存在的意义做下说明,如果理解的不对希望老师能给出一个更好的解释。
关于并发这个环节的开发
首先,把时间花费较久的fecher和parser部分做了整理,命名为worker,让此工作者来并发工作提高效率。
其次,ConcurrentEngine做出了对于数据处理流程的一个整体架构,相当于一个数据中转站,告诉每个数据下一步由谁接收,由谁处理,再发给谁。
最后,针对由ConcurrentEngine这个中转站发出的请求,来做调度分配具体让哪个worker去工作,也就是一个任务调度器。
那么调度器又为什么不写在ConcurrentEngine下的scheduler interface里呢?为什么要单出来呢?对于这里的一些架构有点不明确,还望老师能给与详细的讲解。
1回答
-
这个功能是我鼠标移上去,就会有个灯泡,灯泡里会有implement interface,然后可以选择想要implement的interface,点一下,代码片段就会自动生成。
另外,我们这里做了engine和scheduler两层抽象。scheduler只负责分发任务,与业务无关。而engine负责分发什么任务,这是业务相关的,需要负责实现爬虫的逻辑。(这里的业务是指一个普遍的爬虫的逻辑,我们还有parser来实现更具体的针对每个网站的逻辑)
scheduler与业务无关,但却可以很复杂,还可以有不同的实现来替代,所以抽象出来是很自然的。
SimpleEngine是单线程的,不需要scheduler。ConcurrentEngine是并发的,需要scheduler,而scheduler的实现可以有SimpleScheduler和QueuedScheduler,它们都是为ConcurrentEngine服务。
012020-02-20
相似问题