47、故障容错:如何在Worker崩溃时进行重新调度你好,我是郑建勋。 上一节课,我们用随机的方式为资源分配了它所属的Worker。这一节课,让我们更进一步优化资源的分配。 对资源进行分配不仅发生在正常的事件内,也可能发生在Worker节点崩溃等特殊时期。这时,我们需要将崩溃的Worker节点中的任务...2025-12-13Go进阶-分布式爬虫实战
46、Master任务调度:服务发现与资源管理你好,我是郑建勋。 在上一节课程中,我们实现了Master的选主,这一节课,我们继续深入Master的开发,实现一下Master的服务发现与资源的管理。 Master服务发现首先我们来实现一下Master对Worker的服务发现。 Master需要监...2025-12-13Go进阶-分布式爬虫实战
45、Master高可用:怎样借助etcd实现服务选主你好,我是郑建勋。 上一节课,我们搭建起了Master的基本框架。这一节课,让我们接着实现分布式Master的核心功能:选主。 etcd选主API我们在讲解架构设计时提到过,可以开启多个Master来实现分布式服务的故障容错。其中,只有一个Maste...2025-12-13Go进阶-分布式爬虫实战
44、一个程序多种功能:构建子命令与flags你好,我是郑建勋。 之前,我们介绍了Worker的开发以及代码的测试,但之前的程序其实还是单机执行的。接下来让我们打开分布式开发的大门,一起看看如何开发Master服务,实现任务的调度与故障容错。 考虑到Worker和Master有许多可以共用的代码...2025-12-13Go进阶-分布式爬虫实战
43、分布式协调:etcd读写、MVCC原理与监听机制你好,我是郑建勋。 这节课,我们重点来看看etcd的读写流程,以及它的两个重要特性:MVCC原理和监听机制。 写的完整流程我们先来看看etcd怎么完整地写入请求。 客户端通过GRPC协议访问etcd-server服务端。 如果是一个写请求,会访问...2025-12-13Go进阶-分布式爬虫实战
42、他山之石:etcd架构之美你好,我是郑建勋。 这节课,我们来聊一聊我们将在分布式项目中使用的重要中间件:etcd。 etcd这个名字是 etc distributed 的缩写。我们知道,在Linux中etc目录存储了系统的配置文件,所以etcd代表了分布式的配置中心系统。然而...2025-12-13Go进阶-分布式爬虫实战
41、线上综合案例:节约线上千台容器的性能分析实战你好,我是郑建勋。 当我们对Go程序进行性能分析时,一般想到的方式是使用pprof提供的一系列工具分析CPU火焰图、内存占用情况等。 诚然,通过分析CPU耗时最多的流程,设法对CPU耗时最多的函数进行优化,毫无疑问能够改善程序整体的状况。然而,优化了...2025-12-13Go进阶-分布式爬虫实战
40、资源调度:深入内存管理与垃圾回收你好,我是郑建勋。 程序的快速运行离不开内存这个重要的资源,存储在内存里的数据可以比磁盘等介质更快地被CPU访问。但是内存是有限的,当多个进程共用内存空间时更是如此。因此,合理安排、组织、管理、释放内存是构建高效程序的基础。 现代高级语言一般都为我们...2025-12-13Go进阶-分布式爬虫实战
39、性能分析利器:深入pprof与trace工具你好,我是郑建勋。 这节课,我们来学习分析Go程序的利器:pprof和trace。 pprof及其使用方法先来看pprof。pprof用于对指标或特征的分析(Profiling)。借助pprof,我们能够定位程序中的错误(内存泄漏、race 冲突、协...2025-12-13Go进阶-分布式爬虫实战
38、高级调试:怎样利用Delve调试复杂的程序问题你好,我是郑建勋。 工欲善其事,必先利其器。这节课,我们来看看怎么合理地使用调试器让开发事半功倍。调试器能够控制应用程序的执行,它可以让程序在特定的位置暂停并观察当前的状态,还能够控制单步执行代码和指令,以便观察程序的执行分支。 当我们谈到调试器,一...2025-12-13Go进阶-分布式爬虫实战