10、微服务设计:微服务架构与演进你好,我是郑建勋。 这节课我们来介绍一个重要的系统架构:微服务。 微服务(Microservices)是一种软件架构风格。它以职责单一、细粒度的小型功能模块为基础,并将这些小型功能模块组合成一个复杂的大型系统。 软件开发在短短十余年发生了深刻的变革,...2025-12-13Go进阶-分布式爬虫实战
11、微服务挑战:微服务治理体系与实践你好,我是郑建勋。 上一节课,我们通过服务架构的演进过程,讲解了微服务的边界、拆分的原则以及服务间的通信。微服务架构是解决大型系统复杂性的一种选择,构建微服务本身并不是目的,我们的选择需要为我们的目标服务。 在构建微服务的过程中,不可避免地会遇到一些...2025-12-13Go进阶-分布式爬虫实战
12、分布式系统设计:数据一致性与故障容错的纠葛你好,我是郑建勋。 前面几节课,我们介绍了微服务为什么是一种自然演进的架构,也讨论了微服务架构伴随而来的问题。 微服务可以分散到多个机器中,它本身是分布式架构的一种特例,所以自然也面临着和分布式架构同样的问题。除了我们之前介绍的可观测性等问题之外,微...2025-12-13Go进阶-分布式爬虫实战
13、智慧之火:详解分布式容错共识算法你好,我是郑建勋。 上节课,我们说分布式系统总是需要在可用性和数据一致性之间找到平衡,也就是既要确保当少部分节点发生故障时,程序仍然能够正确且正常地运行,又要保证分布式节点之间对某一事件达成共识。其实这并不是一件容易的事情,好在许多容错共识算法为我们...2025-12-13Go进阶-分布式爬虫实战
14、谋定而动:爬虫项目需求分析与架构设计你好,我是郑建勋。 这节课,我们来看看爬虫系统的功能与架构。 为了更好地完成爬虫项目,我们需要进入真实的场景中,了解项目的价值、用户的需求,这样我们才能够明白项目应该具备哪些功能,明白为了支撑这些用户需求,我们需要设计出怎样的系统架构。所以这节课,我...2025-12-13Go进阶-分布式爬虫实战
15、众人拾柴:高效团队的Go编码规范你好,我是郑建勋。 在前面两个模块,我们回顾了Go语言的基础知识,掌握了Go项目的开发流程,也完成了爬虫项目的架构设计、功能设计和流程设计。不过,为了写出“好”的代码,我们必须规范代码,这就需要定义好整个团队需要遵守的编程规范了。 我们为什么需要编程...2025-12-13Go进阶-分布式爬虫实战
16、网络爬虫: 一次HTTP请求的魔幻旅途你好,我是郑建勋。 上节课,我讲解了开发一个Go项目需要遵守的编程规范。接下来我们就要开始正式书写爬虫实战项目了。 这个项目的核心是通过HTTP协议与目标网站通信,然后发送请求并获取目标网站的对应资源。在下面两节课,我会带着你从一个最简单的HTTP请...2025-12-13Go进阶-分布式爬虫实战
17、巨人的肩膀:HTTP协议与Go标准库原理你好,我是郑建勋。 在正式开始这节课之前,我想给你分享一段话。 学校教给我们很多寻找答案的方法。在我所研究的每一个有趣的问题中,挑战都是寻找正确的问题。当Mike Karels和我开始研究TCP拥堵时,我们花了几个月的时间盯着协议和数据包的痕迹,问...2025-12-13Go进阶-分布式爬虫实战
18、依赖管理:Go Module 用法与原理你好,我是郑建勋。 由于项目一开始就需要涉及到依赖的管理,因此在下一节课正式书写项目代码前,我们先来看一看和依赖管理的一些重要知识。 我们知道,一个大型程序会引入大量必要的第三方库,这就让这个程序形成了复杂的依赖关系网络。这种复杂性可能引发一系列问题...2025-12-13Go进阶-分布式爬虫实战
19、从正则表达式到CSS选择器:4种网页文本处理手段你好,我是郑建勋。 在上一节课程中,我们了解了Go Modules依赖管理的使用方法和原理,这有助于我们在后期管理项目的复杂依赖。我之所以提前介绍依赖管理,是因为新项目一开始一般就会通过go mod init初始化当前项目的module名。 我们之前...2025-12-13Go进阶-分布式爬虫实战