day5

08|高性能设计:自顶向下的高性能Go程序设计与优化

性能优化分层

Go分布式爬虫笔记(五)

系统级别

系统级别优化与架构设计:

各种问题:

服务治理:

程序设计和组织级别

程序设计

高性能程序设计的几个原则:

怎么用工具和指标来验证程序实际并行的效率呢?

获取协程数量的方式:

调度器:Go调度跟踪

代码实施级别

思维导图

Go分布式爬虫笔记(五)

思考题

对一个爬虫服务,通常一个网站之中又会有若干需要进一步爬取的网站,就像一棵树一样。如果放在一个协程中处理,将会非常慢。那么你会考虑怎样的程序设计来保证爬虫的高性能?

下载器和解析器解耦分离,通过chan联系起来,各司其职,不够就增加worker;

所有要爬取的网页连接可以看做是一个DAG图。 可以采用BFS遍历的方式来实现爬取。维护一个待爬取url的channel, 每次从一个网页上获取到下一级的url就加入到这个channel中。 同时, channel的另一侧读取channel, 待爬取url channel 不为空时就读取url并启动一个新的协程去爬取对应url 并解析返回内容。

假如当前服务响应时间 P99 太高,导致了 QPS 无法增加,你觉得可以用什么指标和工具来定位和解决问题?

推荐资料

  1. 《Designing Data-Intensive Applications》

「此文章为3月Day5学习笔记,内容来源于极客时间《Go分布式爬虫实战》,强烈推荐该课程!/推荐该课程」

发表回复