Web Cache技术实现《CDN技术详解》

引入Web Cache技术的主要目的:经过对内容副本进行缓存来知足后续相同的用户请求。使用 Cache 能够分担用户对源站点的集中访问负载,从而提升Web 站点请求的响应速度和用户访问并发量。web

1. Web Cache 关键性能指标

  1. 并发量
    在设计Web Cache的初期就应该规划好其可以处理的用户访问并发量,从而在部署完成后可以让其达到预期的并发量。
    当访问峰值超过Web Cache 和 Web Server的系统容量值时,能够采用虚拟排队等方式限制用户的访问数量。
  2. 吞吐率
    指单位时间内可以处理、转发的数据量大小,吞吐率是衡量缓存设备处理速度的中哟性能指标。
  3. 命中率
  4. 响应时间和丢包率
    响应时间主要包括: DNS解析时间、创建链接时间、重定向时间、收到第一个包时间、图片下载时间、页面总下载时间

2. 内容存储机制

经常使用的存储技术方案:共享存储、本地附加存储(DAS)、分布式文件系统服务。数据库

  • 共享存储设备性能好、稳定和可靠性高,单投入资本较高;
  • 分布式文件系统基于链家存储介质提供大容量、高性能、高可靠的存储服务,但对部署实时技术要求较高,且容易引入额外的网络延迟,所以更适合流媒体。
  • Web Cache 缓存对象的平均大小是10-12KB,最适合的就是DAS,经过在 Web Cache 服务器中内置大容量、高速的硬盘,在服务器内作RAID配置知足应用的需求。

3. 内容更新机制

问题:担忧给用户的是过时或者失效的内容;代理经过缓存“隐藏”掉用户。
Web Cache 的内容更新机制主要设计两方面的内容:①那些内容须要缓存②缓存的内容如何让更新。浏览器

3.1 HTTP协议中的缓存技术

1)使用缓存的优势:

  1. 减小响应时间
  2. 减小网络带宽消耗
  3. 下降源服务器负载

2)缓存的基本原则:

HTTP协议定义了各类各样的缓存控制协议。缓存

  • 响应消息的头信息告诉缓存不要保存副本
  • 请求信息须要源服务器认证或者涉及安全协议,相应请求内容不会被缓存
  • 若内容含有一下信息,认为内容足够新,不须要从源服务器从新获取
    • ①含有过时时间和寿命信息,且此时内容仍没有过时
    • ②缓存内容近期被用来提供过服务,且内容的最后更新时间相对于最近使用时间较久
  • 缓存内容已过时,缓存服务器向源服务器发送验证请求(经过ETag头信息或Last-Modified者头信息),肯定是否继续使用当前内容
  • 在某些状况下(源服务器从网路中断开),缓存的内容过时也能够直接提供服务
  • 若相应消息中不存在用于验证的信息(ETag头信息或Last-Modified者头信息),也没有任何其余明显的新鲜度信息,内容一般不会被缓存

3)缓存方法:

  1. HTML META 标签 和 HTTP头信息
    HEAD标签区域中加入描述文档的各类属性,这些标签常被用于不能够缓存或者标记多长时间后过时。META标签使用简单,效率不高。通常状况下会在Web页面的HEAD标签区域中增长“Pragma: no-cache”的META标记。
  2. 使用Expires(过时时间)头信息来控制保鲜期
    下图是一个典型的HTTP1.1 协议相应消息的头信息:
    Expires
    Expires方式是HTTP控制缓存的基本手段,这个属性告诉缓存相关内容在多长时间内是新鲜的。
    • Expires头信息对于控制静态图片文件缓存特别有用
    • 对于控制有规律改变的网页也颇有用
  3. 验证
    验证的目的就是为了确认缓存中的内容是否可用。HTTP1.1 把这种验证后再决定是否返回消息内容的方式叫“有条件”的请求返回方法,这样能够避免从源服务器或者其余缓存服务器获取整个内容信息,从而减小网络流量。
    过程:当源服务器生成一个完整的响应消息时,附带有验证信息,中间缓存在缓存内容中保存这个验证信息,当缓存的内容过时后,中间缓存生成一个“有条件”的请求向源服务器请求验证。此时,源服务器或者在源服务器通讯的路径上的其余缓存服务器在收到这样的请求之后就能够将请求中包含的验证信息与本地本身验证信息进行比较。若相等,返回一个带有特定状态码(如304 Not Modified,表示内容为修改)且消息主题内容为空的响应消息,若不等则传输一个包含新内容的完整响应消息。
  4. Cache-Control(缓存控制)HTTP头信息
    上述的指定过时时间和验证都属于缓存的隐含指令。在某些状况下,服务器或客户端可能须要给HTTP缓存提供显示的指令。
    • max-age: 缓存内容保持新鲜状态的最长时间
    • s-maxage: 相似于max-age属性,应用于共享缓存
    • public: 此属性标记认证内容也能够缓存
    • no-cache: 强制将每次访问请求发送给源服务器
    • no-store: 强制在任何状况下都不要缓存内容
    • must-revalidate: 缓存必须遵循源服务器赋予的内容新鲜度
    • proxy-revalidate: 和must-revalidate基本相同,只是不能用于非共享的代理缓存。
  5. Pragma HTTP 头信息
    Pragma 属于通用头,用来包含特定的执行指令,这些指令能够适应于客户端、代理、网关、原服务器中的任何接收者,可是HTTP协议中认为Pragma指令规定的行为是可选的。

3.2 Web Cache 与源站点之间的校验

过程安全

  1. 源服务器向Cache返回一个完整的响应消息时,附带有验证信息,Cache在缓存内容时保存这个验证信息。服务器

  2. 当有用户请求该内容时,若是Cache缓存的内容过时,就生成一个“有条件”的请求向源服务器请求验证。网络

  3. 此时,源服务器或者在源服务器通讯的路径上的其余缓存服务器在收到这样的请求之后就能够将请求中包含的验证信息与本地本身验证信息进行比较。并发

  4. 若相等,返回一个带有特定状态码(如304 Not Modified,表示内容为修改)且消息主题内容为空的响应消息,若不等则传输一个包含新内容的完整响应消息。负载均衡

    HTTP1.1 协议描述的验证信息主要包括Last-Modified 和 Entity Tag两种。分别对应Last-Modified 和 ETag信息头,前者属于实体头,后者属于响应头。分布式

4. Web Cache 安全实现机制

4.1 访问控制

访问控制是不少具有代理(Proxy)功能的Web Cache的一项重要功能,基于对用户或者被访同主机的IP地址、端口号、域名或者主机名、URL样式执行容许经过或者屏蔽、过滤等操做,从而控制哪些用户能够访问哪些外部网络资源,以及哪些外部系统能够访问内部网络的哪些资源。
经常使用的访问控制功能包含:

  1. 容许访问控制列表(ACL)中的IP地址用户访问Internet,拒绝其余IP地址的用户访问外网。
  2. 在ACL中设置某个具体IP地址,建立拒绝规则来阻止这些IP地址的用户访问外网。
  3. 设置屏蔽对指定站点、域名、URL实施过滤,拒绝内网用户访问。
  4. 限制内网用户可访问外网的时间。
  5. 赋予某些用户特殊的访问权限,好比赋予管理员用户访同管理平台监控系统、数据库等平台的权限。
  6. 控制用户访问外网服务器的端口号,好比容许用户链接到任何非特权端口( 1025~65535)。
  7. 其余功能,好比减缓或加速内容发送、用户身份认证等。
  8. 防止网络攻击。

4.2 病毒防御

Web Cache中的服务器也面临着病毒侵扰的问题,尤为是台Nimda、红色代码等病毒的流量大量存在于Internet中,不但会干扰服务器的运行,还占据了宝贵的带宽。所以在部署Web Cache时也须要为缓存服务器操做系统作好病毒防御措施,如安装病毒扫描工具、杀毒软件等,同时某些扫描也能够针对webcache response作病毒安全扫描。好比SquidClamav能够针对HTTP数据流中的任何信息进行扫描,如URL、HTTP响应信息头、HTTP响应内容主体,当SquidClamav扫描到病毒后执行HTTP请求重定向到告警页面,并对病毒页面进行查杀或者隔离,以免将病毒数据发送到用户。

4.3 网络安全防御

目前,在互联网上存在着各类各样的恶意攻击,如:DDoS攻击、SYN等。它们不但对在互联网上的数据包进行抓取、分析、破解,同时还采用恶意抢占带宽的方式耗尽带宽,使专业的互联网设备由于承受不了沉重的数据请求而被迫退出服务,而对ISP供应商们的服务承诺更无从谈起。所以,对于网络安全方面的隐患也必须考虑。针对Cache设备安全防御,须要在多个方面作好安全防御措施,如操做系统层、应用层安全加固措施,关闭一切不须要的服务和端口,按期作好安全漏洞扫描(如使用Nessus扫描工具,以及Snort入慢检测等),以便及时发现系统安全漏洞并及时予以修复。

Web Cache自己具备很强的抗攻击能力,它不但能够为网络中的服务器提供负载均衡功能,还提供了如下防攻击手段来保护网络中的服务器。

  1. 经过对无效链接的管理来防止使用没有开放的服务进行攻击。
  2. 实现源路由的跟踪,防止IP欺骗。
  3. 不用Ack缓冲应答未确认的SYN,防止SYN风暴。
  4. 防止连续和接管的攻击。
  5. 不运行SMTPd、FTPd、Telnetd等易受到攻击的进程。
    以上这些固有的安全特性及抗攻击能力可大大提升网络的安全性。

4.4 内容加密

在设计Web Cache时须要考虑支持对通过DRM(内容数字版权加密保护技术)加密的文件的分发和传输,能够透明传输这些通过DRM加密后的媒体文件。

例如,对于微软流媒体格式文件的加密,要求Cache支持微软的DRM能力,对须要这一功能的ISP提供服务。

5. Web Cache 代理软件–Squid

Squid主要实现了如下功能:

  • Web代理
    部署了Squid的代理缓存站点位于用户浏览器和源站点之间。在用户发出请求后,浏览器再也不直接访问源站点取回网页数据,而是向Squid服务器发出请求,再由Squid服务器做为代理向源站点发出请求并将取回的数据回传给浏览器。当前,Squid全面支持正向代理、反向代理、透明代理等多种工做方式。
  • 内容缓存与加速
    Squid软件具备良好的缓存能力,它不断地将从源站点取得的数据存储到代理缓存站点本地并对其进行有效的管理。当浏览器请求的数据已经在Squid服务器上存在而且是保持最新更新状态的时候,Squid将再也不向源站点索取相关数据而直接从本地存储中向用户反馈其所需的内容,显著提升浏览速度和效率。
  • ACL访问控制
    Squid具备强大的访问控制列表功能,它可以实现对内部网络/外部网络的访问控制,例如只容许特定主机访同其专属的网络而不能访问其权限范围以外的其余网络。另外,Squid能够经过ACL访同控制功能限制网络流量,例如限制某些特定协议数据(例如P2P)的传输等,从而提高网络总体安全性和性能。
  • 用户认证
    Squid在提供代理和缓存功能时,能够经过配置用户身份认证程序和用户帐户信息,限定可以享用代理缓存服务的用户范围。同时,Squid的配置文件具备很是详细的选项,例如能够指定用户身份认证的有效时间、是否区分大小写、高级用户身份认证等。
  • 日志
    Squid具备很是强大的日志功能,包含了不少详尽记录系统工做状况的日志文件。例如日志文件中除了记录服务器进程的运行状况外,还记录了用户的访问状况、缓存的存储情况、缓存的访同状况等内容。Squid日志实时、准确地体现了Squid服务器的运行状态,井为优化Squid的性能提供了重要依据。

Squid在设计上也存在必定的局限,例如当它工做在反向代理方式时,用户发出的请求将当即被Squid转给后台服务器,这就意味着在用户浏览器和后台服务器之间创建了一个长链接,该链接在请求完成以前是一直存在的。这种同步模式限制了Squid可以支持的并发链接数目,在用户请求的数据规模较大或者用户端的网络速度较慢时,Squid服务器将承受较大的压力。