专栏首页java 微风CDN的作用与基本过程

CDN的作用与基本过程

简介

CDN,Content Distribute Network,可以直译成内容分发网络,CDN解决的是如何将数据快速可靠从源站传递到用户的问题。用户获取数据时,不需要直接从源站获取,通过CDN对于数据的分发,用户可以从一个较优的服务器获取数据,从而达到快速访问,并减少源站负载压力的目的。

动机

为什么不进行数据的直接交付,即让用户直接从源站获取数据呢? 我们常说的互联网实际上由两层组成,一层是以TCP/IP为核心的网络层即Internet(因特网),另一层则是以万维网WWW为代表的应用层。数据从服务器端交付到用户端,至少有4个地方可能会造成网络拥堵。 1. “第一公里”,这是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路。这个出口带宽决定了一个网站能为用户提供的访问速度和并发访问量。当用户请求量超出网站的出口带宽,就会在出口处造成拥塞。 2. “最后一公里”,万维网流量向用户传送的最后一段链路,即用户接入互联网的链路。用户接入的带宽影响用户接收流量的能力。随着电信运营商的大力发展,用户的接入带宽得到了很大改善,“最后一公里”问题基本得到解决。 3. ISP互联,即因特网服务提供商之间的互联,比如中国电信和中国联通两个网络运营商之间的互联互通。当某个网站服务器部署在运营商A的机房,运营商B的用户要访问该网站,那就必须经过A、B之间的互联互通点进行跨网访问。从互联网的架构来看,不同运营商之间的互联互通带宽,对任何一个运营商网络流量来说,占比都非常小。因此,这里也通常是网络传输的拥堵点。 4. 长途骨干传输。首先是长距离传输时延问题,其次是骨干网络的拥塞问题,这些问题都会造成万维网流量传输的拥堵。 从以上对于网络拥堵的情况分析,如果网络上的数据都使用从源站直接交付到用户的方法,那么将极有可能会出现访问拥塞的情况。 如果能有一种技术方案,将数据缓存在离用户最近的地方,使用户以最快的速度获取,那这对于减少网站的出口带宽压力,减少网络传输的拥堵情况,将起到很大的作用。CDN正是这样一种技术方案。

基本过程

用户通过浏览器访问传统的(没有使用CDN)网站的过程如下。

1. 用户在浏览器中输入要访问的域名。 2. 浏览器向DNS服务器请求对该域名的解析。 3. DNS服务器返回该域名的IP地址给浏览器。 4. 浏览器使用该IP地址向服务器请求内容。 5. 服务器将用户请求的内容返回给浏览器。

如果使用了CDN,则其过程会变成以下这样。

1. 用户在浏览器中输入要访问的域名。 2. 浏览器向DNS服务器请求对域名进行解析。由于CDN对域名解析进行了调整,DNS服务器会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。 3. CDN的DNS服务器将CDN的负载均衡设备IP地址返回给用户。 4. 用户向CDN的负载均衡设备发起内容URL访问请求。 5. CDN负载均衡设备会为用户选择一台合适的缓存服务器提供服务。 选择的依据包括:根据用户IP地址,判断哪一台服务器距离用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器的负载情况,判断哪一台服务器的负载较小。 基于以上这些依据的综合分析之后,负载均衡设置会把缓存服务器的IP地址返回给用户。 6. 用户向缓存服务器发出请求。 7. 缓存服务器响应用户请求,将用户所需内容传送到用户。 如果这台缓存服务器上并没有用户想要的内容,而负载均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉取到本地。

总结

在网站和用户之间引入CDN之后,用户不会有任何与原来不同的感觉。 使用CDN服务的网站,只需将其域名的解析权交给CDN的负载均衡设备,CDN负载均衡设备将为用户选择一台合适的缓存服务器,用户通过访问这台缓存服务器来获取自己所需的数据。 由于缓存服务器部署在网络运营商的机房,而这些运营商又是用户的网络服务提供商,因此用户可以以最短的路径,最快的速度对网站进行访问。因此,CDN可以加速用户访问速度,减少源站中心负载压力。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在IDEA启动多个Spring Boot工程实例

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者...

    微风-- 轻许--
  • Dubbo + RestEasy 实现文件上传与下载

    原文链接:https://blog.csdn.net/weixin_43057263/article/details/...

    微风-- 轻许--
  • 把 excel 表中的数据 批量修改到指定数据库表中、根据 excel 表中数据修改数据库表中数据

    1. 收到一张 excel 表,要求根据 “转账时间”一列的值批量修改数据库表中 "放款时间"一列的值。

    微风-- 轻许--
  • 深度学习技术在社会化推荐场景中的总结

    不知道大家有没有感觉,在日常生活中用到推荐一词的时候经常是用在社交场景中的。到一个地方旅游让朋友推荐一下旅游景点,学习某一项技术的时候让朋友推荐一些有什么书可以...

    张小磊
  • mahout学习之推荐算法

    用户1665735
  • 拼多多面试题:如何用 Redis 统计独立用户访问量?

    当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过12个小时,也是相当辛苦的。

    Java技术栈
  • 通过 Trait 水平扩展 PHP 类功能

    从 PHP 5.4 开始,引入了一种新的代码复用方式 —— Trait,Trait 其实也是一种通过组合水平扩展类功能的机制,我们在 php_learning/...

    学院君
  • 净推荐值的方法论在互联网产品应用探讨

    编者注:净推荐值(Net Promoter Score,NPS)原为针对企业良性收益与真实增长所提出的用户忠诚度概念,它是最流行的顾客忠诚度分析指标,在传统行业...

    腾讯大讲堂
  • 命令行执行Django脚本的方法

    update.py import os import sys import django sys.path.append(r'C...

    用户1214487
  • 推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!

    推荐系统中的核心是从海量的商品库挑选合适商品最终展示给用户。由于商品库数量巨大,因此常见的推荐系统一般分为两个阶段,即召回阶段和排序阶段。召回阶段主要是从全量的...

    石晓文

扫码关注云+社区

领取腾讯云代金券