17、巨人的肩膀:HTTP协议与Go标准库原理

你好,我是郑建勋。 在正式开始这节课之前,我想给你分享一段话。 学校教给我们很多寻找答案的方法。在我所研究的每一个有趣的问题中,挑战都是寻找正确的问题。当Mike Karels和我开始研究TCP拥堵时,我们花了几个月的时间盯着协议和数据包的痕迹,问...

Go进阶-分布式爬虫实战

16、网络爬虫: 一次HTTP请求的魔幻旅途

你好,我是郑建勋。 上节课,我讲解了开发一个Go项目需要遵守的编程规范。接下来我们就要开始正式书写爬虫实战项目了。 这个项目的核心是通过HTTP协议与目标网站通信,然后发送请求并获取目标网站的对应资源。在下面两节课,我会带着你从一个最简单的HTTP请...

Go进阶-分布式爬虫实战

15、众人拾柴:高效团队的Go编码规范

你好,我是郑建勋。 在前面两个模块,我们回顾了Go语言的基础知识,掌握了Go项目的开发流程,也完成了爬虫项目的架构设计、功能设计和流程设计。不过,为了写出“好”的代码,我们必须规范代码,这就需要定义好整个团队需要遵守的编程规范了。 我们为什么需要编程...

Go进阶-分布式爬虫实战

14、谋定而动:爬虫项目需求分析与架构设计

你好,我是郑建勋。 这节课,我们来看看爬虫系统的功能与架构。 为了更好地完成爬虫项目,我们需要进入真实的场景中,了解项目的价值、用户的需求,这样我们才能够明白项目应该具备哪些功能,明白为了支撑这些用户需求,我们需要设计出怎样的系统架构。所以这节课,我...

Go进阶-分布式爬虫实战

13、智慧之火:详解分布式容错共识算法

你好,我是郑建勋。 上节课,我们说分布式系统总是需要在可用性和数据一致性之间找到平衡,也就是既要确保当少部分节点发生故障时,程序仍然能够正确且正常地运行,又要保证分布式节点之间对某一事件达成共识。其实这并不是一件容易的事情,好在许多容错共识算法为我们...

Go进阶-分布式爬虫实战

12、分布式系统设计:数据一致性与故障容错的纠葛

你好,我是郑建勋。 前面几节课,我们介绍了微服务为什么是一种自然演进的架构,也讨论了微服务架构伴随而来的问题。 微服务可以分散到多个机器中,它本身是分布式架构的一种特例,所以自然也面临着和分布式架构同样的问题。除了我们之前介绍的可观测性等问题之外,微...

Go进阶-分布式爬虫实战

11、微服务挑战:微服务治理体系与实践

你好,我是郑建勋。 上一节课,我们通过服务架构的演进过程,讲解了微服务的边界、拆分的原则以及服务间的通信。微服务架构是解决大型系统复杂性的一种选择,构建微服务本身并不是目的,我们的选择需要为我们的目标服务。 在构建微服务的过程中,不可避免地会遇到一些...

Go进阶-分布式爬虫实战

10、微服务设计:微服务架构与演进

你好,我是郑建勋。 这节课我们来介绍一个重要的系统架构:微服务。 微服务(Microservices)是一种软件架构风格。它以职责单一、细粒度的小型功能模块为基础,并将这些小型功能模块组合成一个复杂的大型系统。 软件开发在短短十余年发生了深刻的变革,...

Go进阶-分布式爬虫实战

9、破解性能谜题:性能优化的五层境界

你好,我是郑建勋。 俗话说:“九层之台,起于累土”,在上节课,我们搭建起了Go程序性能优化的分层分析范式,并讲解了系统设计与程序设计层面需要考虑的性能问题。 在这节课,我将更进一步,分析一下影响高性能程序的底层基石:代码实施、操作系统与硬件。分析如何...

Go进阶-分布式爬虫实战

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

你好,我是郑建勋。 用最少的资源将程序的性能优势最大化,这不仅是每一个有追求的开发者的目标,更是企业为了达到更好的用户体验(例如更小的响应时间)、更低的成本面临的现实困境。 性能问题无处不在,从设计、开发阶段如何避免性能问题,再到如何发现问题,发现问...

Go进阶-分布式爬虫实战