并发版爬虫,实现2和实现3,优势到底在哪里呢?

来源:16-5 重构和总结

弱弱小乖乖

2018-04-25

视频中说:

1:实现2为每一个Request 创建了一个goroutine ,Request 输入输出都是用同一个goroutine,能控制的东西少。

2:那么实现3分别创建了Rquest 队列 和 worker 队列,虽然有两个队列,但是跟实现 2 的控制有什么差别呢?

3:实现3到底比实现2可以多控制什么呢?实现3到底优势在哪里呢?

写回答

1回答

ccmouse

2018-04-26

这是个好问题。实现2我们完全依靠go语言的能力。但是如果并发流量太大,或是出现峰值,那总有限度,还可能因为goroutine太多吃很多内存。
相反实现3,我们可以控制多少goroutine在工作,队列排多长,内存开多大,量才触发排队等。
另外,我们还可以有自己的调度算法。可以按照优先级来进行服务,或者有更符合自己系统的调度方案。

4
0

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

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

5995 学习 · 1909 问题

查看课程