对象存储与CDN

2018-01-29 16:56:11 Web性能 2542 0

尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定

对象存储

一般它由三部分组成:ObjectBucket文件夹
Object:每个文件都可以当成对象存储到云端服务器
Bucket:Bucket是存放数据的容器,可以当成是存储桶。Bucket具有区域属性,只能位于一个区域。因为Bucket名称创建后不能修改名称和所属区域,所以建议根据业务情况就近存储,方便上传和下载以提高访问速度。Bucket名称具有全局唯一性。所有Object都必需存储在Bucket中
文件夹:Bucket中为了更好的归类Object,可以创建文件夹用于存储同类的Object

回源配置

当存储桶中没有用户请求的对象时
可以设置回源地址,让对称存储服务的服务器去回源地址拿资源
比如,前端用 VUE 重新打包了,这个资源过1M了,需要CDN支持
你的对象存储服务器中没有这个资源,会自动去你的源站地址拿资源,然后缓存到对象存储服务器

CDN

我们首先需要通过对象存储服务,获取到源文件
接着那些数据文件会发往运营商设置在全国[或全球]各地的用于加速文件读取的服务器
当用户读取CDN数据文件的时候
通过DNS智能解析,就会优先读取离用户地理位置最近的服务器上的对应文件了

目前大多CDN云服务商,都回提供每月10GB的免费CDN流量,做做博客什么的,应该是够了

配置常见问题

CDN服务器

刚刚我们说到我们设置了对象存储服务器的配置
所以这个服务是基于对象存储服务器所做的配置的

缓存配置

配置缓存时间。一般用默认的就可以了,通常是30天

防盗链

基于请求图片时的 HTTP 头里面的 Refer 参数

示例,请求一张CDN图片的HTTP头部信息
Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:UM_distinctid=1612ba86ec4dc-0258573ca4281f-1571466f-1fa400-1612ba86ec5157; PHPSESSID=g9i4e5br3v48jigdg72kslbst7; Hm_lvt_a3e8bb5c7eef342491aa58e9a8539127=1516819030,1516852006,1516988534,1517038111; Hm_lpvt_a3e8bb5c7eef342491aa58e9a8539127=1517050521
Host:img.cdn.hlzblog.top
If-Modified-Since:Sun, 14 Jan 2018 16:36:04 GMT
Referer:http://www.hlzblog.top/Article/29.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0

这里 Referer 参数表明它是来自域名 www.hlzblog.top 的请求
经过服务器端正则匹配,发现它属于我们配置的白名单里面

那么CDN服务器端可以允许数据以 Accept 中的流形式输出
否则只会返回普通文本数据,并输出对应错误代码的json信息

一般来说,我们配置的时候 Referer 可允许为空,以便 APP端 使用

CNAME配置

就是你把自己的域名解析到云服务商的一个域名上
最开始云服务商提供给你的 CDN 域名是个随机分配的域名,
你可以通过将你自己定义的域名,指向到 CDN 服务商给你的那个域名

比如,原来腾讯云分配给我的 CDN 域名为

hlzblog-xxxxxxx.file.myqcloud.com

现在我想给它换个名字 img.cdn.hlzblog.top
首先在腾讯云 CDN 服务中,申请对应 CDN 资源的 CNAME 服务
然后配置这个服务的域名,
然后腾讯云会给分配给你一个只有 img.cdn.hlzblog.top 才能解析的域名

可以通过域名解析服务,配置 CNAME 指向到这里的资源

此后,以 hlzblog-xxxxxxx.file.myqcloud.com 开头的文件
都可以换为 img.cdn.hlzblog.top 开头了

其他

现在不同的云厂商,基于读文件的额外功能也是不少
如,传输前:剪裁图片、改变图片质量、拉伸图片等
目前 免费10GB 七牛云 -- 推荐这个、腾讯云
收费的推荐 又拍云七牛云

注意事项

CDN 的记住一定要设置 流量上限封顶 或者 告警 策略,
否则被流量攻击了,此次费用公司算技术失误,CDN 费用由个人承担

流量上限封顶

告警策略

IP访问限频配置

通过对单 IP 单节点 QPS 限制,可防御应用层的 CC攻击

注:若无特殊说明,文章均为云天河原创,请尊重作者劳动成果,转载前请一定要注明出处