1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 04:22:22 +00:00
This commit is contained in:
Xargin 2019-01-01 19:58:49 +08:00
parent 7c910bd78d
commit 3506dcd652
5 changed files with 11 additions and 11 deletions

View File

@ -10,7 +10,7 @@
![](cover.png)
- 作者柴树杉Github [@chai2010](https://github.com/chai2010)Twitter [@chaishushan](https://twitter.com/chaishushan),主页 https://chai2010.cn/about
- 作者曹春晖Github [@cch123](https://github.com/cch123)
- 作者曹春晖Github [@cch123](https://github.com/cch123),主页 http:://xargin.com
- 网址https://github.com/chai2010/advanced-go-programming-book
- Star历史https://starcharts.herokuapp.com/chai2010/advanced-go-programming-book.svg

View File

@ -315,7 +315,7 @@ etcd中没有像ZooKeeper那样的Sequence节点。所以其锁实现和基于Zo
值得一提的是在etcdv3的API中官方已经提供了可以直接使用的锁API读者可以查阅etcd的文档做进一步的学习。
## 6.2.7 如何选择
## 6.2.7 如何选择合适的锁
业务还在单机就可以搞定的量级时,那么按照需求使用任意的单机锁方案就可以。

View File

@ -6,7 +6,7 @@
作为收集数据的前置工作,有能力去写一个简单的或者复杂的爬虫,对于我们来说依然非常重要。
## 基于colly的单机爬虫
## 6.7.1 基于colly的单机爬虫
《Go 语言编程》一书给出了简单的爬虫示例经过了多年的发展现在使用Go语言写一个网站的爬虫要更加方便比如用colly来实现爬取某网站虚拟站点这里用abcdefg作为占位符在Go语言标签下的前十页内容
@ -67,7 +67,7 @@ func main() {
}
```
## 分布式爬虫
## 6.7.2 分布式爬虫
想像一下你们的信息分析系统运行非常之快。获取信息的速度成为了瓶颈虽然可以用上Go语言所有优秀的并发特性将单机的CPU和网络带宽都用满但还是希望能够加快爬虫的爬取速度。在很多场景下速度是有意义的
@ -86,7 +86,7 @@ func main() {
本节我们来简单实现一个基于消息队列的爬虫本节我们使用nats来做任务分发。实际开发中应该针对自己的业务对消息本身的可靠性要求和公司的基础架构组件情况进行选型。
### nats 简介
### 6.7.2.1 nats简介
nats是Go实现的一个高性能分布式消息队列适用于高并发高吞吐量的消息分发场景。早期的nats以速度为重没有支持持久化。从16年开始nats通过nats-streaming支持基于日志的持久化以及可靠的消息传输。为了演示方便我们本节中只使用nats。
@ -145,7 +145,7 @@ for {
}
```
#### 结合colly的消息生产
## 6.7.3 结合nats和colly的消息生产
我们为每一个网站定制一个对应的collector并设置相应的规则比如abcdefghijklmn虚构的再用简单的工厂方法来将该collector和其host对应起来每个站点爬到列表页之后需要在当前程序中把所有链接解析出来并把落地页的URL发往消息队列。
@ -229,7 +229,7 @@ func main() {
```
#### 结合 colly 的消息消费
## 6.7.4 结合colly的消息消费
消费端就简单一些了,我们只需要订阅对应的主题,并直接访问网站的详情页(落地页)即可。