CDN
内容分发网络
Contetn Delivery Network
前言
我们是直接访问网页服务器?
网页之间的通讯,很多人都认为是我访问网页的服务器,网页再给我回复信息,中间是直通的,是我们一条路直接访问到其服务器。实际上并不是,并且这样的传输难免的速度会很慢。比如服务器在杭州,我们在杭州进行访问还好,要是在黑龙江甚值国外,速度是会慢很多的。毕竟网络也是需要“跑”的。
如何解决距离带来的延迟?
最简单的来说,当然是在全国各地搭建服务器啊!直接访问最近的服务器就好了。但是没那么多钱啊。而且对于一些中小企业,根本没这么多资金。此时CDN服务就出来了,有的人就专业的搭建这些边缘服务器,分散到世界各地,谁要访问了网站,直接会跳转到最近的边缘服务器。
分发
分发的内容
网页中有静态内容和动态内容,比如说b站中的一键三连,图标是动态的,但是其中的点赞数目是静态的。静态内容也不一定全部保存到到CDN中。源服务器发送文件给CDN的时候就可以利用HTTP头部的cache-control。这个同步可以设置文件的缓存形式,这样CDN就知道哪些资源可以保存,哪些不需要,哪些需要保存多久等等。
分发的流程
静态
CDN并没有源网站的内容,因此源服务器会把静态内容提前备份给CDN,也叫PUSH,当用户需要访问网络时,就近的CDN服务器的就会把静态内容提供给用户。不需要每次都麻烦服务器了。
如果CDN没有备份静态内容,就要向源服务器索取相应的内容。也叫pull,当然此时CDN也可以进行静态内容备份,然后将内容分发给用户。因为做了备份,其他用户也就可以轻易的拿到内容了。
动态
动态内容是根据每个用户或者时间来改变的。源服务器并不能预测用户的操作然后将数据传输给CDN。如果此时用户向CDN发送请求,CDN再给源服务器发送请求,速度就慢下来了,而且动态内容保存了也没用。
就以时间举例,时间是一直变换的,如果用户在访问时,因为网络不稳定时间就没法同步。因此有些CDN会运行一些接口,让源服务器用CDN的接口而不是自己的代码。这样用户可以直接从CDN上获取时间,而不是从源服务器中了。
安全和可靠性
每个服务商都有自己的解决办法,CDN的布局相当于无形中给源服务器添加了一道墙。因为添加了CDN的服务器我们访问的并不是源服务器的IP。所以也多了一份安全。
负载均衡
此时如果进行DDOS攻击之类的,攻击的不是源服务器,这个问题CDN老板们也会考虑的。他们在世界各地搭建多个CDN服务器,进行监控,如果源服务器配置的某台机器超载了,会再分配一个新的CDN服务器。就是我们所说的负载均衡。
任播
部分服务商也会用任播技术进行内容的均衡。服务商会创建多个并IP一样的CDN服务器,我们会连接最近的服务器,当检测到那台CDN服务器超载了,会再连接其他相同IP的CDN服务器。
网络的加速
CDN服务有很多的加速服务,比如压缩代码,压缩图片来进行网站的加速访问。
