注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

ATS的一些重要机制  

2013-08-29 10:32:18|  分类: trafficserver编 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

笔者对ATS(trafficserver)几个优势的认识:

一、Traffic Server 的底层机制:Apache Traffic Server 不同于大部分开源代理服务器,它结合了两种技术来处理高并发:

  • 异步事件处理(Asynchronous event processing
  • 多线程(Multi-threading

Traffic Server 在多 CPU、多核的硬件上扩展良好,能充分利用所有可用的 CPU 和其他资源。

       此外,ATS采用数据文件的存储查询机制,提高了小文件的处理能力。此种情形下,系统文件系统采用利于大文件读取速度的选择较好,比如EXT4/XFS等。

       随着3.2以上版本的发布,部分优势越来越成熟。

 

二、HTTP 代理缓存过程

  

###-#cache服务过程


   1)用户请求一个 web 对象,TS 收到请求

   2)TS 通过对象的地址,在对象数据库(缓存)中去定位该对象

      a.如果对象在缓存中,TS 会检查对象是否新鲜(fresh

           如果新鲜,TS 从缓存里返回该对象给用户,此时称为缓存命中(cache hit);

           如果不新鲜(stale),TS 会连接源服务器去验证对象是否仍然新鲜,即重新验证(revalidation),如果仍然新鲜,TS 立即将缓存中的副本返回给用户,同样记为(hit);

      b.如果对象不在缓存中(缓存未命中,cache miss),或者缓存的副本不再有效,TS 会去源服务器获取对象,然后同时做下面两件事(此功能与nginx/squid3一致);

           并行工作1:将对象返回给用户

           并行工作2:将对象放到本地缓存中

  

###-#Traffic Server 判断 HTTP 对象是否新鲜(fresh)的过程


  • 如果有 Expires 或者 max-age 头部直接定义缓存的过期时间,TS将对比当前时间和过期时间去判断对象是否新鲜
  • 如果没有上述头部,TS 将检查 Last-Modified 和 Date 头部(其中Date是源服务器返回对象的时间,如果没有 Last-Modified 头部,TS 会用对象写入缓存的时间以作代替),然后用以下公式算出新鲜的时间范围(freshness_limit,可理解为保质期):
                         freshness_limit = ( Date - Last-Modified ) x 0.1
    0.1 这个参数可以作调整,并且能限制 freshness_limit 的上下限,默认最小是 1 小时,最大是 1 天
  • 如果没有 Expires 头部或者没有 Last-Modified、Date 头部,TS 将使用默认的 fressness limit
  • 另外,TS 还会检查 cache.config 配置文件中的 revalidate 规则,该规则可以对特定的 HTTP 对象设置特定的验证时间(特定的域名、IP、一定规则的 URL、特定的客户端等等)


###-#. 缓存过期(stale),Traffic Server 去源服务器重新验证对象可能的情况


  • 仍然 fresh,TS 重置 freshness_limit,并返回对象
  • 对象新副本可用,TS 缓存新对象,并同时返回给用户
  • 源服务器上的对象不再存在,TS 也不再返回该副本给用户
  • 源服务器没有响应,TS 返回过期的对象并发出警告。


注:本文记在SQUID3.3.8ubuntu13.10全功能发布之际,笔者和几个朋友正对真正smp版的squid3生产运行上线之时,觉得终于squid可以和ATS拼搏一次了。


ATS的一些重要机制 - lzdzhy-itoedr - itoedr的it学苑
ats3.2.4与squid3.3.8在同系统下的表现
  评论这张
 
阅读(143)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017