超过10秒,你可能会丢失40%的用户
据相关统计显示,1个网站如果10秒钟打不开,就会有40%的用户跳出;如果是手机端用户,愿意等待时间也只有6-10秒。
从商业角度来看,1秒延迟就会导致转化率下降7%,如果一个电子商务网站每天收入10万,1秒钟的页面延迟就可能导致每年250万的损失。
所以,网站的加载速度对于网站的生存发展至关重要。说到这里提第一个问题:如何让自己的网站访问速度更快?
回答这个问题前,我们需要先了解网站访问速度为什么慢?
慢点一:第一公里
网站的内容是存放在服务器上,当我们去访问一个网站的时候,就会向服务器发出请求,当服务器收到这个请求后,就会将相应的内容发送给用户,这个过程需要通过互联网的链路来完成传输,传输的快慢是由这个链路的带宽决定,所以链路带宽的大小就决定了数据传输的速度。
这里之所以叫“第一公里”,就是指网站内容从源头通过链路接入互联网的过程。当这个链路的带宽较小时,访问的用户量一变大,就会导致访问拥堵,从而影响网站的访问速度。
慢点二:最后一公里
“第一公里”是站在网站的内容分发角度,而“最后一公里”是指用户接入互联网获取信息的过程。我们上面说,内容从网站接入互联网时,如果带宽较小,就会影响用户访问,同样的道理,如果用户接入互联网的链路带宽很小,也会影响用户对内容获取的速度。
所以,在互联网上,无论是内容源头的带宽,还是用户的带宽,有一个较小都会影响访问速度。
慢点三:对等互联关口
我们知道互联网提供链路的运营商不止一家,他们铺设的线路也不是串联在一起,这就容易出现一个情况,当内容源头是通过A运营商接入互联网,而访问的用户是通过B运营商接入互联网,这个时候就需要通过运营商与运营商之间的互联关口进行内容交互。
从互联网的架构来看,运营商在这个互联关口上的带宽投入并不是很大,所以,一旦这种交互量增大,互联关口就会形成拥堵,从而影响交付和获取的速度。
慢点四:长途骨干传输
“长途”在这里指网络内容在传输过程中对物理距离的描述,骨干网络指的是主要线路。这就像铁路一样,我们从上海到北京如果只有一条铁路,那这条铁路势必会承受非常大的压力,互联网上的骨干网络也是同样的道理。
有人说,那可以多建设一些骨干网络?但实际情况是,互联网线上技术的发展速度要远高于互联网基础设施的完善速度。所以,等待互联网基础设施的完善来提升互联网的访问速度并不现实,另外基础设施的迭代成本又非常高。
互联网在经历web1.0到web2.0,流媒体技术的发展后,互联网上的内容呈现了几何式增长,但我们现在通过终端设备访问互联网时,还是非常流畅,这是不说上面说的四个慢点并不存在?或者说我们国家的互联网带宽非常大呢?
答案是否定的,因为我们现在的访问速度快,并不是基于四个慢点不存在,或者我们使用的带宽是否够大,而是基于一种技术,这种技术叫CDN。
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN技术能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
我先不详解这个概念,因为概念一般都比较抽象,不太好理解,下面我主要从这个技术为什么产生?以及如何解决上面的四个慢来了解这个技术。
首先,上面提到的四个慢是真是存在的,而且在互联网发展的早期,这四个慢很难解决。简答来说,骨干网络的问题,建设一条英国到美国的地下光缆是很花钱的,所以,基础线路不可能做到与线上技术同步,这必然会制约互联网的发展。
这个问题在1995年的美国就已经凸显出来,于是麻省理工的Tim Berners-Lee教授发起了一项技术挑战,这个挑战主要就是为了解决上面提到的“四个慢”的问题。
后来在Tim Berners-Lee教授的带领下,发明了一套智能算法,成功的解决了访问慢的问题,而这个智能算法就是CDN技术的原型。
为此他们还成立了一家公司,公司名字叫阿克迈,这家公司是全球最早从事CDN业务的公司,如果你关注美股的话搜AKAM 就能找到这家公司。
关于CDN技术的起源就说到这里,下面主要来说下CDN是如何解决慢的问题,主要有三个方面:
第一:分发服务系统
CDN技术中这个系统的主要作用是实现将用户从内容源向边缘的推送和存储,承担实际的内容数据流的全网分发工作和面向最终用户的数据请求服务。
分发服务系统最基本的工作单元就是许许多多的缓存服务器,缓存服务器直接面对最终用户的访问请求,把缓存在本地的内容快速地提供给用户。
这里需要说明的是,CDN技术实际上是在运营商网络的基础上重新建立的虚拟网络,这个网络是由无数个节点构成,这些节点我们可以理解为缓存服务器。
传统的内容分发方式是由源站分发到用户,而CDN技术则通过将源站的内容直接缓存到各个节点上,这样用户在访问时就不需要到源站访问,而是在最近的节点上访问。
这不仅解决了第一公里的问题,同时也大大降低了骨干网络的压力,比如我要访问美国的网站,如果日本的节点上有这个内容,我就直接可以就近选择,而不需要再去源服务器访问,并占用中国到美国这条骨干网络。
另外缓存服务器还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源节点上获取并保存在本地。同时还会监控每个缓存设备的健康状况信息和响应情况,这样CDN 的调度控制系统就能更精准的讲内容分发到用户。
第二:负载均衡系统
这是一个CDN技术的神经中枢,主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。
这里可以举一个例子,上面我们提到CDN的内容分发系统,这个系统的主要功能就是将内容缓存到各个节点上来缓解源站的压力,但实际运行中会出现一种情况,就是某一个节点的访问量剧增,导致这个节点的访问变慢,最终影响访问速度。这个时候就需要CDN的负载均衡系统。
对于这个问题的解决,大多数CDN负载均衡系统是分级实现的,这里以最基本的两级调度体系进行简单说明。
一般而言,两级调度体系分为全局负载均衡和本地负载均衡。其中,全局负载均衡主要物理位置优先为原则,即通过对每个服务节点进行“最优”判断,确定向用户提供服务节点的物理位置以分发内容。
本地负载均衡主要负责节点内部设备的负载均衡,它和全局负载均衡的区别在于,全局就像物流点,而本地就是快递员,全局首先将这个地区用户需要的内容分发过去,然后本地再调配好快递员的运力,找到速度最快的快递员将内容分发给用户。
另外,我们上面讲的分发系统中是有反馈机制的,就是当某个节点的压力变大时,CDN的负载均衡系统就会启动,它会通过全局负载均衡对压力大的节点进行就近调配,也就是换一个新的节点来为同样的需求点提供服务。
当全局负载均衡启动后,本地负载均衡也会启动,然后本地会再根据用户的需求调配好更多、更有效率的快递员对内容进行分发。
第三:运营管理系统
与一般的电信运营管理系统类似,分为运营管理和网络管理两个子系统。运营管理子系统是CDN系统业务管理功能的实体,负责处理业务层面的与外界系统交互所必需的的一些收集、整理和交付工作。
这里重点要说的就是上面谈的对等互联关口问题,即当互联关口出现拥堵时,是需要不同运营商之间进行协调管理,而运营管理系统就是要处理这类问题。
总结
说了这么多,最后做个整理,本篇开始我们提到一个痛点,就是网站访问速度慢会造成用户流失,而用户流失就意味着收益减少。
接着我们没有直接讲如何解决这个问题,而是说了网站访问慢的原因,主要有四个方面,分别是:
源站内容上网的问题(第一公里)、用户访问互联网的问题(最后一公里)、用户太多,骨干网络不够用的问题(长途骨干传输)以及跨运营商之间的关口互联问题。
这四个问题在1995年之前的互联网行业是个非常大的问题,后来麻省理工的教授带领着他的研究生发明了一个智能算法,解决了这个问题,这个智能算法就是我今天主要说的CDN 技术。
CDN技术的三个系统:内容分发、负载均衡和运营管理,这三个系统分别通过把内容分发到各个节点来解决第一公里的问题和骨干网络的问题,同时再通过负载均衡来解决最后一公里的问题,最后运营管理系统着重解决互联关口的问题,从而实现提升用户的访问和加载速度,解决网站访问慢的问题。