《CDN技术详解》第三章

3.2  Cache设备的工作方式和设计要求

客户端和服务端的交互过程通常会涉及4个关键的网元:用户、代理、网关、服务器。(详见3.3.2节)。根据不同场景和用户需求,Web Cache通常作为代理或网关部署在访问路径上。

作为代理使用时,通常是正向代理或透明代理;

更多是在网关上使用,使用反向代理模式。

3.2.1  正向代理

                     

3.2.2  反向代理

                 

 

3.2.3  透明代理

                 

 

 

 

3.3  Web Cache的实现基础——基于HTTP协议的Web缓存技术

3.3.2  HTTP协议工作原理

HTTP于TCP的关系:

当HTTP的客户端和服务端建立起了TCP连接,则客户端和服务端的HTTP进程可以通过各自的套接字(Socket)来访问下层的TCP。Socket包含了IP地址和端口。

Socket的作用在于:客户端向服务端发出的请求消息,客户端会会交给自己Socket去发送、而服务端会从自己的Socket去接收;反之,服务端给客户端回应的响应消息,服务端会交给自己的Socket发送、而客户端会从自己的Socket接收。

HTTP会把数据传输的工作交给TCP来做,自己不管。而TCP会承诺好好地把HTTP的每个消息无损地可靠地送达。

                   

HTTP中定义的一些概念:

代理(Proxy):处于客户端和服务端之间,对服务端充当“客户端”、对客户端充当“服务端”。代理有两种方式。一种是不会对请求和响应修改的透明方式,Proxy起到认证和授权的作用。一种是会对请求和响应修改的非透明方式,Proxy起到提供附加服务的作用。

网关(Gateway):网关可以看做是服务器派出的“代表”,代表源服务器来接收请求和提供服务。所以实际上同用户打交道的是网关。

隧道(Tunnel):A在防火墙内、B在防火墙外、防火墙只开放80端口通信。这种情况下如果B要TelnetA 23端口,解决方法就是B启动隧道程序客户端、A启动隧道程序服务端,建立一条专用的隧道来进行这个通信。隧道程序会把B的请求向A的80端口发送,再转交给23端口。

                             

 

3.3.3  HTTP中的Cookie和Session

                        

 

 

3.3.4  HTTPS安全协议

                             

 

3.3.5  HTTP协议中的缓存技术

HTTP中与缓存有关的首部字段:

1.通用首部字段

2.请求首部字段

3.响应首部字段

4.实体首部字段

详细参考:《前端必须知道的HTTP缓存》《HTTP缓存小结》

 

 

3.4  Web Cache技术实现关键点分析

3.4.1 Web Cache关键性能指标说明

并发量:设计Web cache初期就需要规划好其能够处理的用户访问并发量。当用户访问峰值超过Web Cache和Web Server的系统容量值时,可以采用虚拟排队等方式限制用户访问数量。

吞吐率:指单位时间内能够处理、转发的数据量大小,吞吐率是衡量缓存设备处理速度的重要性能指标。影响吞吐率的因素有设备本身硬件性能限制、网络传输带宽速度、应用协议本身的传输效率。

命中率:HTTP请求命中率=命中数/总请求数,节点已缓存了被访问的数据叫命中、没有缓存到需要回源的叫未命中。典型的Web Cache命中率在30%-60%。提高命中率的方法有增加磁盘空间、优化缓存策略。缓存命中率是判断加速效果优劣的重要指标之一。

响应时间:决定于DNS解析时间(0.18s-0.3s)、建立连接时间(0.15s-0.3s)、收到第一个包时间(0.2s-0.4s)、图片下载时间(1s-2s)、页面总下载时间(<10s)、丢包率等因素。

 

3.4.2  内容存储机制

从存储类型来看,主要关注存储的容量、成本、服务性能。

从存储内容管理技术来看,主要关注存储内容的目录组织方式和管理方式(目录层级越少检索时间越短、对象存储技术将所有缓存内容封装为对象)。

三种存储技术方案:共享存储、本地附加存储(DAS)、分布式文件系统方式。

就Web Cache而言,缓存对象大小平均为10-12KB。

 

3.4.3  内容更新机制

好的内容更新机制可以较为准确地判断或预测内容的冷热程度,从而实现高效新旧更替,在有限的存储空间中实现更高的命中率。

内容更新机制包含两方面内容:哪些内容需要缓冲、缓存的内容如何更新。

谁来管理这些内容:HTTP协议中进行定义、CDN管理平台对Cache进行的设置。

Web Cache不会缓存什么:

  • HTTP响应头说不缓存就不缓存
  • 对内容的请求信息是需要认证或安全加密的,也不缓存
  • HTTP响应中不含Etag/Last-Modified,Cache会认为缺乏直接的更新度信息,默认不不缓存

Cache如何判断缓存的副本是否足够新:

  • 缓存的副本中含有完成的过期时间和寿命控制的头信息,且还在生存期内
  • 浏览器已经使用过这个缓存副本,且在同一个会话中检查过内容的新鲜度了

HTTP1.1中提出了校验的概念,以判断在缓存副本过期之后这个副本是需要更新还是可以继续使用,校验过程如下:

 

 

3.5 开源Web缓存代理软件——Squid

Squid主要实现这些功能:

  • web代理
  • 内容缓存与加速
  • ACL访问控制
  • 用户认证:能限定享用代理缓存服务的用户范围
  • 日志
posted @ 2017-08-30 18:22  Jelly_lyj  阅读(154)  评论(0)    收藏  举报