这16年来我是如何做系统性能优化的

这16年来我是如何做系统性能优化的

2019年下半年,极客时间总编辑郭蕾从北京飞来杭州,问我有什么特别想分享给大家的技术。我回顾了下自己这16年来的工作经历,发现无论在华为、腾讯、思科、阿里,我都在与海量数据打交道,这个过程中对性能优化有许多思考,但一直没有系统的写下来。于是我就跟郭蕾说,那就针对分布式系统,讲讲我心中的性能优化方法论吧。这就是《系统性能调优必知必会》这门课的诞生过程。
我做过两门视频课,《Nginx 核心知识 100 讲》和《Web 协议详解与抓包实战》,这次和你聊聊程序员日常工作中那些绕不开的系统性能优化问题。只要技术厉害一点的工程师都知道,性能不只对产品的攻城掠地至关重要,它也是程序员价值的重要体现,特别是它在工作面试、技术等级晋升上总会扮演重要角色。
  • 比如,在包括阿里在内的大多数拥有技术职级晋升体系的公司里,为了保障公平性,一般会由跨部门的专家组成评委会。那么其他部门的高级专家在不熟悉候选人业务的情况下,要怎么去考察候选人的水平呢?他们只能去考察底层的硬核知识,而这当中性能问题又是最有区分度的问题。因此,掌握性能问题将对你的晋升之路有很大助益。如果你始终埋头在业务中,不关心更通用的性能优化方法论,将在技术等级晋升上非常吃亏。
  • 再比如,你在面试互联网大厂时,面试官总会问许多超出工作范围的性能问题,为什么会这样呢?当然你可以感慨甚至抱怨,这不就是“面试造火箭,入职拧螺丝”嘛?但从面试官的角度来看,你会发现性能就是最好的面试题,它从算法到架构,既考察了候选人的潜力,也能考察工程能力。如果候选人具备系统的性能优化方法论,那么无论在架构设计还是应用模块开发上,他的代码可扩展性都会更好,消耗的计算力、带宽和磁盘等 IT 资源也更少,也自然更容易被面试官青睐。
因此,不论是为了满足业务发展的需求,还是在面试、晋升场景中有更好的表现,如果你希望成为高薪高效的 10X 程序员,那么,系统地学习性能优化就是一门必修课。我先把课程海报分享在这,再跟你说说这门课解决的具体问题。
那么,系统性能优化该怎么学呢?
当然是看需求。当下的后端几乎都是分布式系统,那么对应的,我们面对的课题也就是如何全面提升复杂集群的性能。但当你想要学习分布式系统优化的时候,你却会发现,能找到的资料实在是太少了。
如果你在 Google 上搜索如何优化分布式系统的性能,大概只能找到孤零零的几篇文章,相关的多数书籍也都在讨论容错、事务、流控等概念的实现,却很少有文章介绍如何优化整个分布式系统的性能。
这恰恰就是我推出 《系统性能调优必知必会》这个专栏的初衷。我希望通过这个专栏,把自己这些年来在分布式性能领域所遇到的问题和解决方案,归纳总结,梳理出一条交付给你,告诉你我眼中的性能问题本质是怎样的。
 

我是谁?

我是陶辉,杭州智链达数据有限公司 CTO 兼联合创始人,前阿里云高级技术专家、腾讯云 TVP,著有《深入理解 Nginx:模块开发与架构解析》一书。

我 2004 年毕业于西安交通大学,有近 20 年的互联网一线工作经验:曾在华为中央软件部参与 iMAP 网管系统的研发,熟悉网络设备的工作流程;在腾讯 QQ 空间部门使用自定义的 Qzone 协议传递巨量数据,对如何设计出高性能、可扩展的应用协议有丰富的实践经验;在思科从事 Nginx 服务的研发,对 Web 服务器如何高效地处理 HTTP 协议有全面的认识;在阿里云担任 VPC 网络、ECS 管理与存储系统重构的架构师,对公有云及 IDC 内部网络系统有深刻了解。
工作数年,我始终与性能相伴,目前致力于 Linux 下高性能服务器的开发,以及分布式环境下海量数据存储的设计与开发。

我是如何讲解性能优化的

如果你需要从架构层面优化整个系统,那么这门课可以拓展你的知识面,告诉你如何优化架构才能让整体服务获得最大性能;如果你刚开始接触性能优化,这门课可以给你打牢基础,告诉你影响性能的底层因素,在实践中优化你的程序,看到立竿见影的效果。
我先给你总结了一份「系统性能优化核心知识图谱」
你会发现,整个脑图我是从 4 个方面来梳理的,这其实就是我们在提升一个新系统的性能时,可以入手的 4 个层次。
  1. 首先,你可以从提升单机进程的性能入手,包括高效地使用主机的 CPU、内存、磁盘等硬件,通过并发编程提升吞吐量,根据业务特性选择合适的算法。
  2. 其次,分布式系统是由各个组件通过网络连接在一起,所以优化传输层网络可以让所有组件同时受益。具体优化时,你可以从降低请求的时延,提升总体吞吐量两个方向入手。
  3. 再次,要对业务消息采用更高效的编码方式,这既包括协议头、包体的优化,也包括 TLS 安全层的性能提升。具体优化时,既要深入静态编码,也要从动态的增量编码上优化。同时,调整消息的交互方式也能提升性能。
  4. 最后,我们再从集群整体上进行架构层面的优化。基于 ACP、AKF、NWR 等分布式理论,我们的优化方向仍然是降低时延和提升吞吐量,但实现方式则要运用分而治之的思想,调度集群中的所有结节协作配合,完成性能优化目标。

翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 谷歌翻译(国内)

 

翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 谷歌翻译(国内)

翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 谷歌翻译(国内)

翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 谷歌翻译(国内)

翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 谷歌翻译(国内)

发表评论

电子邮件地址不会被公开。 必填项已用*标注