44、一个程序多种功能:构建子命令与flags

你好,我是郑建勋。 之前,我们介绍了Worker的开发以及代码的测试,但之前的程序其实还是单机执行的。接下来让我们打开分布式开发的大门,一起看看如何开发Master服务,实现任务的调度与故障容错。 考虑到Worker和Master有许多可以共用的代码...

43、分布式协调:etcd读写、MVCC原理与监听机制

你好,我是郑建勋。 这节课,我们重点来看看etcd的读写流程,以及它的两个重要特性:MVCC原理和监听机制。 写的完整流程我们先来看看etcd怎么完整地写入请求。 客户端通过GRPC协议访问etcd-server服务端。 如果是一个写请求,会访问...

42、他山之石:etcd架构之美

你好,我是郑建勋。 这节课,我们来聊一聊我们将在分布式项目中使用的重要中间件:etcd。 etcd这个名字是 etc distributed 的缩写。我们知道,在Linux中etc目录存储了系统的配置文件,所以etcd代表了分布式的配置中心系统。然而...

41、线上综合案例:节约线上千台容器的性能分析实战

你好,我是郑建勋。 当我们对Go程序进行性能分析时,一般想到的方式是使用pprof提供的一系列工具分析CPU火焰图、内存占用情况等。 诚然,通过分析CPU耗时最多的流程,设法对CPU耗时最多的函数进行优化,毫无疑问能够改善程序整体的状况。然而,优化了...

40、资源调度:深入内存管理与垃圾回收

你好,我是郑建勋。 程序的快速运行离不开内存这个重要的资源,存储在内存里的数据可以比磁盘等介质更快地被CPU访问。但是内存是有限的,当多个进程共用内存空间时更是如此。因此,合理安排、组织、管理、释放内存是构建高效程序的基础。 现代高级语言一般都为我们...

11920212223243