瞎聊聊CDN相关话题
CDN的相关知识
背景
大家同时看视频的时候,会给内容服务商带来巨大的流量压力,如果是1千万用户同时在线观看一个1080p(理论带宽4Mbps)的视频,那就是40Tbps 的带宽,这是相当恐怖的带宽。
为了避免高发流量时候的拥塞,CDN技术就出来了,它利用了数学运算法则来处理内容的动态路由算法技术,有效地解决了这个难题。CDN服务鼻祖是Akamai公司。
原理
用简单的说法就是把内容缓存在终端用户附近(在计算机领域,缓存真的是太好用了,在每个领域,一旦负载大了,就利用缓存+最优算法)
因为这项技术是把内容进行了分发,所以,它的名字就叫做CDN——Content Delivery Network,内容分发网络。
具体来说,CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。(就跟狗东在每个省都放了一个仓库,所以发货快原理差不多)
CDN=更智能的镜像+缓存+流量导流。
CDN并不是只能缓存视频内容,它还可以对网站的静态资源(例如各类型图片、html、css、js等)进行分发,对移动应用APP的静态内容(例如安装包apk文件、APP内的图片视频等)进行分发。
举例
具体步骤:
①、当用户点击APP上的内容,APP会根据URL地址去本地DNS(域名解析系统)寻求IP地址解析。
②、本地DNS系统会将域名的解析权交给CDN专用DNS服务器。
③、CDN专用DNS服务器,将CDN的全局负载均衡设备IP地址返回用户。
④、用户向CDN的负载均衡设备发起内容URL访问请求。
⑤、CDN负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的缓存服务器。
⑥、负载均衡设备告诉用户这台缓存服务器的IP地址,让用户向所选择的缓存服务器发起请求。
⑦、用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。
⑧、如果这台缓存服务器上并没有用户想要的内容,那么这台缓存服务器就要网站的源服务器请求内容。
⑨、源服务器返回内容给缓存服务器,缓存服务器发给用户,并根据用户自定义的缓存策略,判断要不要把内容缓存到缓存服务器上。
好处
- 解决了大带宽的时延问题
- 内容进行分发后,源服务器的IP被隐藏,受到攻击的概率会大幅下降。
- 当某个服务器故障时,系统会调用临近的健康服务器,进行服务,避免对用户造成影响。
参考链接