网络带宽和内容分发网络CDN

原创 吴就业 139 0 2022-05-10

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/43fa24be01b445b988847d368c68f58f

作者:吴就业
链接:https://wujiuye.com/article/43fa24be01b445b988847d368c68f58f
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

无论是以前工作需要,还是兴趣爱好,我们大多数人可能都只是研究学习过少数几种网络协议。因公司规模或者说项目的原因,流量远达不到需要我们去关心网络方面问题,又或者没机会去接触。

笔者现在参与网络项目的研发,发现自己很多网络知识都不了解,在跨部门沟通时很是被动,需要补一些网络方面的知识。

本篇我们一起从一个后端开发者的视角,理解带宽、以及内容分发网络CDN。

网络带宽

影响应用吞吐量瓶颈的因素,除了我们开发常说的CPU核心数与内存大小,还有最容易被忽视的网络带宽。

对于服务端开发者而言,我们更关心的影响应用吞吐量的是公网带宽、内网专线带宽。而网卡带宽一般都很大,一般不需要我们关注。

你有没有遇到过这种现象:CPU负载很正常,内存使用率也很低,GC什么的也正常,单节点的QPS就是上不去。如果统计出站流量,就能根据每秒流量和带宽比较,是否是带宽瓶颈。

那么,如何计算带宽多大才支撑得起期望的QPS呢。

首先我们要理解带宽是什么?

一般1M带宽是指1Mbps(bit), 并不是平时说的字节(byte)。例如,4Mbps带宽,即每秒传输数据量最大为4/8=0.5M bit/s,等于512KB/s。

带宽包括出入带宽,出带宽指服务器响应给客户端的出站数据流量带宽,入带宽指服务器接收客户端的入站数据流量带宽。为云虚拟机购买公网带宽时,一般入网带宽等于出网带宽。

图片

常用的需求带宽计算公式:每秒出站流量字节数×8(转为bit)/ 0.7(70%的利用率)/ (1024*1024) = 需求宽带(Mbps)。

假设某接口数据包大小为1kb,受硬件限制支持最大200 QPS。那么理论上对带宽的需求就是2Mbps。

笔者做了一组测试来验证理论。

笔者编写了一个简单的web应用,只提供一个响应1kb大小的json数据的接口,并统计平均QPS。已在本地测试,忽略带宽的情况下,将性能优化到最佳。

然后,在阿里云上购买了两台虚拟机,为了排除CPU和内存的影响,买了两台4核8G的虚拟机,然后一台虚拟机选择公网带宽为1Mbps、另一台是4Mbps。这两台虚拟机同机房、同配置,唯一不同的就是带宽。

将服务部署到虚拟机上后,本地启动个并发脚本,测试数据如下。

带宽 **平均QPS ** 100%利用率需要的带宽 70%利用率需要的带宽 **实际带宽占用峰值 **
1Mbps 114 0.89Mbps 1.27Mbps 1.07Mbps
4Mbps 438 3.42Mbps 4.88Mbps 3.77Mbps

阿里云控制台查看监控带宽使用情况(显示的是每分钟的平均值):

图片

(1Mbps带宽-虚拟机网络监控)

图片

(4Mbps带宽-虚拟机网络监控)

结论:公式不确定是否符合实际,但可以肯定的是,固定带宽会影响应用吞吐量。

内容分发网络CDN

CDN可能大家比较熟悉,也经常听到这个词。如果对CDN比较陌生,可以登录阿里云、腾讯云、华为云、Akamai、Cloudflare,搜索CDN,然后查阅CDN的介绍文档。工作原理如图所示。

图片

(图片来源:华为云-内容分发网络 CDN-产品介绍-工作原理)

CDN早期主要应用于静态资源加速,缓解源站压力,降低带宽和服务器需求成本。将源站隐藏在CDN后面,还能借助CDN防DDoS攻击。随着技术的发展,CDN也被应用于直播音视频流、信令的加速,解决用户最后一公里的接入问题。

在没有接入CDN的情况下,用户向后端服务发送请求,假设后端服务用的是电信运营商,用户使用联通网络发送请求。在国内,由于三大运营商网络通过公共交换中心互联,支持跨网互通,但其质量难以保证。如若物理距离还很远,网络延时大会使连接极其不稳定。

不知道你小时候有没有玩过热血江湖、魔域这类网游,当时游戏都是分很多大区的,比如网通一区、联通一区、电信一区,都是使用运营商分区的,不同区数据不互通,而且如果你是电信用户,玩联通一区,可能网络就会很卡,延迟高。

接入CDN后,用户只需要与地理位置最近、择优同运营商的CDN节点建立连接(通过DNS解析获取),保证了用户与CDN节点之间的网络稳定性。而CDN节点是怎么回源到源站的,不同厂商的实现也不同。

CDN节点或通过内网直接回源源站(配置内网回源),或通过公网直接回源源站(配置公网回源),或通过内部路径择优路由技术,先将请求转发到离源站最近的CDN节点,再由该节点走内网/公网转发请求给源站。

另外,CDN加速可以覆盖全球的线路。CDN厂商通过和运营商合作,自己搭建BGP网络,实现了跨运营商、跨地域的全网覆盖互联互通。实际上,现在我们购买云虚拟机,云厂商分配的IP都已经是多网互通的,而不能指定运营商了。

如果感兴趣,在Mac系统上,我们可以使用traceroute host命令追踪路由,获取从源主机到目标主机经过的所有路由器。能够知道网络通不通、需要经过多少跳、以及到达各个路由器的耗时。通过ip138等网站查询路由器所属运营商,观察是否有跨运营商情况。


参考文献:

#网络

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

文章推荐

带宽问题排查实战-记一次线上文件下载慢问题排查

上传的文件是仅办公网络可访问,办法室网络有带宽限制,一个页面加载上百张图片,很容易达到带宽限制,所以出现下载很慢。

从断点续传故障排查,分析浏览器是怎么实现断点续传的

自研实现文件上传下载的中间件在测试阶段发现断点续传有问题。具体表现是:使用wget下载mp4文件可以正常播放,用google浏览器打开链接,google浏览器无法正常播放mp4视频。

TLS协议以及TLS协议的握手过程

如今HTTPS已被广泛使用,但作为程序员的我们,真的理解这个'S'了吗?如果还没有,这篇入门级介绍或许能帮到你。