logo

动态、静态资源分开部署

动静分离是高并发架构设计的第一步,部分场景下还是收益最大的那一步,因为我们可以把 99% 的流量压力都转移出去。

Apache 和 Nginx 的性能差距

十年前,笔者用 4200 元从同学那里买到了一台二手的 Macbook Pro。彼时,Macbook Pro 还是满身接口的厚家伙,也没有细腻的视网膜屏幕,CPU 是 i5 双核,内存只有 4GB,但就是在那台电脑上,笔者使用一张静态图片测试了 Apache 和 Nginx 的性能差距:两万对八万,Nginx 的性能是 Apache 的四倍。

加一个 Nginx 软件竟然还能减少 CPU 和内存占用?

如果你的应用现在还在用 Apache 承载全部流量,那只需要在前面加一个 Nginx,承载静态资源的分发,动态请求可以原封不动地使用 http 协议发送给 Apache,只需要这样一个小操作,便可以在服务器配置不变的情况下把系统容量提升一倍以上。此时的系统架构图如图 1-1 所示。

此外,由于 Nginx 针对新图片格式(如 .webp)和视频流式传输等进行了专门的优化,在增加了一个软件后,服务器的 CPU 和内存资源消耗反而会明显下降。在如今流量越来越便宜的时代,静态资源的体积和流量呈指数级增长,Nginx 的性能优势还在持续扩大。

图 1-1 Nginx 承载静态资源分发

使用云服务

如果你在用云服务的话,那么把静态资源全部交给云服务商的 CDN 来承载,还可以再获得 90% 的 CPU 节省。同时,CDN 的流量费还比云主机的流量费更便宜,时至今日中国 CDN 市场已经卷的不像样子了。此时的系统架构图如图 1-2 所示。

2893789274893278941

图 1-2 静态资源全部使用云服务商的 CDN 服务

阅读数:6922      字数:573 最后更新:2023-10-23 15:00:50