您的位置:首页 > 运维架构 > 网站架构

CDN架构和原理

2017-02-26 18:52 204 查看
问你个问题,如果源服务器挂了。后果会怎样的?
用nginx还是用varnish还是squid,就要看cdn服务商自己的技术的要求了。
影响的会是用到该源的所有服务的所有用户。
所以你们的源服务器最好是搞两台的,一台主,平时cdn的二级回源,就回源这台机器的。
一台备,当主源出问题时,cdn的二级回源能自动回源到备机的。
通常swf、静态页面、图片、音频文件、游戏场景素材这些都会放CDN的。我所知道的网宿,之前回源的IP是十几个的
你将文件上传到源服务器,以及对应的游戏页面更新的这文件的地址。当用户去cdn下载这文件时,其实在cdn节点是没这文件的内容的。这时cdn的节点会向二级回源节点去找,二级回源节点也没有,就会请求向源服务器去下载,下载后,会将内容传回给cdn节点,同时会在自己本地保存一份内容。cdn节点拿到文件后,就会将内容传给用户,同时也会将内容在本地存一份,这样第一个用户就已经拿到内容了。
有些内容的规则的缓存规则写得不好,会导致每个用户访问的内容都要回源。这样会导致回源的带宽非常大,甚至将带宽撑爆,也会导致用户访问时的响应非常慢的。
二级回源服务器也会保存(缓存)一份数据,供给其他cdn节点访问用的。这样源服务器的回源带宽就会低很多了。
因为处理的是静态内容,所以不会消耗多少cpu的。只消耗带宽以及磁盘空间而已的。
源服务器只要做正常的图片的部署就行了。但要设定指定后续名的文件的过期时间。
通常如果mp3文件不怎么更改的,将过期时间可以设置为1个月或7天过期的。
等到了过期时间,在访问时会回源做一次文件校验,如果文件没更改的,就返回303给客户端,用户就继续访问自己本地的缓存,或者是cdn节点就不需要再重新下载内容了。
当更改了这文件后,就更新一次后面的版本号。当作新内容来对待,这样就不会出现用户那边访问的还是老的内容的情况了。
没这配置,cdn会用自己的内部规则来定义这过期时间,如果没有的,访问相同的内容,就会一直回源做文件校验,这会导致回源带宽变大,以及用户的访问也慢的。
http://davidbj.blog.51cto.com/4159484/1423732
介于cdn节点与源服务器之间的那层节点,就叫做二级回源节点。

也叫cdn的父节点。

相当于最外面的cdn的子节点的内容,会通过二级节点获取。

但二级节点的内容,会回源服务器去获取。

这么说吧。用户所访问的cdn节点的图片等静态文件和资源,原来在cdn节点和二级节点都没有,最终是要回源服务器来获取这些图片等静态文件和资源的。

cdn的其中一个功能,就是会在内存里缓存从源服务器拿到的图片等静态文件资源。

可以使用nginx、varnish、squid来做缓存的。

估计现在用nginx做的比较多。因为比较简单

这是用17ce解析img.baidu.com的百度的图片服务器的域名的情况。这些IP,都是img.baidu.com这域名下的cdn的节点IP的。不同地区解析到的IP是不同的。

对应地区的用户,就能解析到他最近的服务器的IP。这样用户在访问图片时速度就会快很多,因为服务器就在用户附近。

自己查一下cdn的整个架构是怎样的就知道了。

为了防止源服务器挂掉而导致图片不能正常显示的,通常源服务器是设置两台的。当有一台源服务器挂掉。让二级cdn节点回源另外一台机器的。这样就能保证图片访问一直都是正常的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CDN