《Linux运维最佳实践》读书笔记:CDN系统典型架构、视图技术、缓存和代理、防盗链方案、HTTP Referer、动态链接

前言

本文简要介绍了CDN的典型结构、核心技术点和防盗链的两种处理方式。
本文关键字:
在这里插入图片描述
来自《Linux运维最佳实践》读书笔记。

最佳实践:CDN系统架构典型

CDN系统是一个复杂的系统,从核心组件进行简化抽象,可以用下图进行说明。
在这里插入图片描述分别以上海电信用户、山东联通用户访问同一个网站www.xufeng.info为例,说明数据访问流程。以下是具体步骤。
1)上海电信用户请求其配置的上海电信DNS服务器,要求解析www.xufeng.info。
2)如果上海电信DNS服务器上没有该域名的缓存,则该服务器会请求xufeng.info的权威域名服务器。如果有该域名的缓存,则直接返回缓存的DNS解析结果。
3)xufeng.info的权威域名服务器会根据DNS视图技术,依据上海电信DNS服务器的来源IP,把www.xufeng.info解析到上海电信CDN节点。
4)上海电信用户访问到上海电信CDN节点。
5)上海电信CDN节点使用缓存+代理的方式访问到源站。

和以上的5个步骤类似,山东联通用户解析到山东联通CDN节点,通过山东联通CDN节点访问到源站资源。通过以上的5个简要的步骤,可以分析出CDN系统的2个关键技术分别如下。

DNS的视图技术

通过该技术,使得来自不同区域、运营商的用户被调度到距离用户最近的不同的CDN节点。它的作用总结起来就是“调度”。

CDN节点的缓存和代理技术

缓存是指,如果在该节点上有对应的未过期资源,如图片、HTML、CSS等,则它直接返回给用户而缩小用户的资源等待时间。
代理是指,如果在该节点上没有对应的资源,或者资源已经过期无效,则它会请求源站获取内容后再返回给用户。缓存和代理技术优化了已缓存文件的传输效率。同时对于未被缓存的文件,在某些情况下,在一定程度上可以优化用户到源站之间的网络链路。比如用户是接入的运营商A宽带网络,而源站是部署在运营商B,那么通过优化的CDN网络,可以减少用户直接跨运营商访问导致的高延时甚至丢包率带来的影响。

CDN节点典型架构

从宏观上,在研究了CDN的组成部分后,再来看看聚焦到某个CDN节点后的技术细节。某个CDN节点的典型架构图,如图所示。
在这里插入图片描述
各组件的功能和设计要点如下。

  • 负载均衡服务器组:使用LVS的DR模式实现4层的网络负载均衡。使用DR模式的网络负载均衡,主要优点是实现高吞吐量及屏蔽后端Nginx代理服务器组中单台服务器故障导致的对业务的影响。
  • Nginx代理服务器组:使用Nginx的反向代理技术(Upstream),配置为url_hash的方式,提高对后端Squid缓存服务器组的缓存命中率。同时,也能达到屏蔽后端Squid缓存服务器组中单台服务器故障导致的对业务的影响。
  • Squid缓存服务器组:根据HTTP协议中有关缓存设置的规定,实现对页面和资源进行缓存的关键功能业务。通过该组服务器,可以实现缓存文件的快速响应和对源站的代理。理解HTTP协议中的缓存控制指令和原理,是构建Squid缓存的必要步骤。下一个最佳实践将对缓存控制指令和原理进行探讨。

最佳实践:优化缓存防盗链

链盗链是指本网站的资源被非授权的第三方网站直接在页面中进行引用。对于被盗链的网站来说,盗链现象既浪费了大量的带宽又失去了对于版权文件的控制,因此需要在缓存节点上对URL进行校验,设置防盗链。

防盗链的几个基本方法如下。

使用HTTP Referer

HTTP Referer是HTTP请求的一个头部,用于标明被请求的资源是在哪个页面中进行调用的。对静态图片资源文件,使用HTTP Referer设置防盗链即可。

使用生成动态链接的方法

这个方法的本质是首先在页面上产生资源URL的时候,使用动态编程语言,生成类似如下结构http://music1.woyo.com/music1-abcdefghijk.mp3?key=xxxxyyyyzzzzaaaadddd。在缓存节点上收到用户的请求时,对该URL的key进行验证。该方法一般用于视频、音频等比较大的文件的防盗链检查。

key的组成
其中key=20080722101000A-MD5-KEY表示一个加密串。加密串包括以下两个部分。

  • 20080722101000:表示时间戳,即年月日时分秒。
  • A-MD5-KEY:一个MD5串,其计算方式如下:
    A-MD5-KEY=md5(base_url+datetime+password)。
    其中,base_url即请求中的http://music1.woyo.com/music1-abcdefghijk.mp3;datetime为请求中的时间戳20080722101000;password是源站和CDN约定的一个密码。

校验过程具体的校验过程如下:
1)检查防盗链的串(即key)是否存在,如果不存在,则返回校验失败。
2)从防盗链串中取出日期时间,与当前时间比较,如果超出有效期范围(例如,如果与当前时间相减,大于±2小时),则返回校验失败。
3)生成MD5的值,与请求中的A-MD5-KEY相比较,如果不等,则返回校验失败。
4)如果上述步骤都通过,则返回校验成功。
5)如果校验成功,则CDN缓存服务器向用户返回正常的响应。
6)如果校验失败,则向把请求重定向到广告音频。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值