(英文版链接) 无论你在做前端、后端还是运维,HTTP都是不得不打交道的网络协议。它是最常用的应用层协议,对它的优化,既能通过降低时延带来更好的体验性,也能通过降低资源消耗带来更高的并发性。 可是,学习HTTP不久的同学,很难全面说出HTTP的所有优化点。这既有可能是你没好好准备过大厂的面试😊,也有可能你没有加入一个快速发展的项目,当产品的用户量不断翻番时,需求会倒逼着你优化HTTP协议。 这篇文章是根据我在2019年GOPS全球运维大会上海站的演讲PPT,重新提炼文字后的总结。我希望能从四个全新的维度,带你覆盖绝大部分的HTTP优化技巧。这样,即使还不需要极致方法去解决当前的性能瓶颈,也会知道优化方向在哪,当需求来临时,能够到Google上定向查阅资料。 第一个维度,是从编码效率上,更快速地把消息转换成更短的字符流。这是最直接的性能优化点。
巧用 Nginx 实现大规模分布式集群的高可用性
本文是我对2019年GOPS深圳站演讲的文字整理。这里我希望带给各位读者的是,如何站在整个互联网背景下系统化地理解Nginx,因为这样才能解决好大流量分布式网络所面临的高可用问题。
一文解释清楚Google BBR拥塞控制算法原理
如何快速掌握HTTP协议?
HTTP 协议极其庞杂,它影响着浏览器、爬虫、代理服务器、防火墙、CDN、Web 容器、微服务等诸多方面,自身的规范却并不统一,所要面对的各类软件的新旧版本也同时存在于网络上。在这种情况下,如果对 HTTP 没有一个深入的理解,就很容易被各种各样的网络问题难倒。 那么,如何才能快速掌握HTTP协议呢? 在我看来,需要从以下四个方面入手:
- 工欲善其事,必先利其器,首先我们先要掌握好抓包及相关的工具,这样在分析各种网络协议时也就更加得心应手。
- 先从架构入手,搞清楚 HTTP 协议到底想解决什么问题,面临哪些非功能性的约束,又是怎样一步步发展变迁至今的。
- 熟悉协议格式,对隧道或者正向代理下的 URI 格式、对多表述包体和不定长包体的传输格式要了解,对 DNS 的 QUESTION/ANSWER 也要了解。
- 掌握应用场景,跨域访问与同源策略到底在纠结什么?代理服务器上的共享缓存如何精细化控制?
为什么要出web协议这门课
我们公司有定期的分享课,好几位开发部的同学–包括android原生、JS前端、python后端–要求我分享网络协议方面的知识,我做过两场培训,一个是讲TLS/SSL协议,一个是讲HTTP协议的设计原则,结果培训完大家反馈有收获,但是太难了,收获又不是很大。我总结大家学习效果不好的原因后得出:
- 必须由浅入深,才能让团队中的新人快速成长;
- 必须系统化、体系化的讲解;
- 必须实时配合抓包讲解;
- 想要讲清楚,绝不是2、3个小时能做到的,至少要有10或者20个学时以上;
