一、项目背景
某通讯类产品公司,原系统架构下,用户并发进行app版本升级会占用大量带宽,服务带宽与提供版本升级的带宽在一台10G的出口网关下。
app更新后,用户大量访问升级接口,实际约占用8G左右的带宽。
(用户下载资源限制为4Mbps带宽,2000人使用的情况下为2,000×4Mbps=8,000Mbps≈8Gbps)
带宽占用导致业务访问变慢、音视频卡顿等情况,服务端评审后,决定引入CDN服务解决业务与资源共用带宽的问题。
二、CDN服务
CDN的细节、技术架构等,各个大佬早已做过详细的说明,就不班门弄斧了,只做个人理解
内容分发网络(Content Delivery Network,简称CDN)
它的核心作用就是,当用户想从源站(资源服务器)获取资源时,由CDN服务先从源站将该资源缓存下来,再将CDN服务分配的最近节点供用户访问以获取资源。
(以腾讯云CDN官方文档中的图片为示例)
这个过程为:
第一步:将静态资源上传至对象存储(资源服务器)
第二步:CDN回源,将资源服务器中的内容对象缓存到CDN缓存服务器
第三步:将CDN缓存服务器中的资源提供给目标用户
从上图可以知道,CDN服务的灵魂就是缓存,需要大量的缓存服务器供客户群体使用,所以企业如果为了解决用户体验、带宽占用等问题,单独布一套CDN服务的成本很高,一般都是直接购买云公司的CDN服务,如腾讯云、阿里云这样的,而源站(资源服务器)可以由企业自主构建接入CDN服务
(以腾讯云CDN官方文档中的图片为示例)
CDN服务一般按流量计费,类似这样
三、CDN服务的优缺点
优点:
1、互联网服务提供商采用CDN,以存储换时延。花钱购置CDN服务器或云计算服务,以此换取更好的用户体验。
2、通信运营商也可采用CDN,以存储换带宽。通过服务“下沉”,减轻上层骨干网络的流量压力,避免硬件扩容,降低网络建设成本。
以背景项目为例,原先出口网关带宽被限制为4M,也就意味着一个200M的app应用下载需要将近1分钟,在5G时代难免有些落后。
如果内部缓存设备发现很多人在用4M的速度进行应用更新、资源上传与下载,那就将该资源缓存下来,这样的好处就是每个人都可以用内网中远高于4M的带宽来进行下载,同时还不影响业务服务本身的带宽,这就是CDN服务的优势。
缺点:
1、不适用于动态资源,用户动态的实时交互数据,是难以缓存的。
2、存在敏感资源泄露的风险,因为使用了缓存服务器,相当于第三方公司可能将缓存资源私自保留、查看等。
3、价格高昂,不管是自建还是租用,每年都是一笔不菲的开支
四、CDN在测试过程中的影响
功能测试:
个人认为CDN在测试过程中不影响主业务流程,无需对CDN服务进行单独测试,CDN服务的接入一般由运维人员进行操作,而服务的基本功能由服务提供方保障。
性能测试:
性能测试中,因为CDN服务的加入,业务链路发生了变化,对于业务链路拓扑需要重新梳理,其中对文件下载、应用更新等功能可能存在影响,需要解除带宽限制进行分布式压测,理论上这块的性能应该有所提高
一定注意解除带宽限制后再进行压测,否测无法分析是否达到链路瓶颈,图示中的上行流量就是未解除限制。