1. 介绍

Apache Traffic Server(ATS或TS)是一个高性能的、模块化的 HTTP 代理缓存服务器
与 Nginx 和 Squid 类似。它通过将频繁访问的信息缓存在网络的边缘来改善网络的效率和性能,使得访问内容在地里上更接近终端用户,在更快分发的同事也减少带宽的占用
Traffic Server 最初是 Inktomi 公司的商业产品,该公司在 2003 年被 Yahoo 收购,之后 Traffic Server 一直在 Yahoo 内部使用长达 4 年,直到 2009 年 8 月 Yahoo 向 Apache 软件基金会(ASF)贡献了源代码,并于 2010 年 4 月成为了 ASF 的顶级项目(Top-Level Project)。
Apache Traffic Server 现在是一个开源项目,开发语言为C++。
官方文档 : docs.trafficserver.apache.org

2. 组件

Traffic Server(TS) 的组成

1.Traffic Server缓存

TS 缓存包含一个高速的对象数据库,数据库根据 URL 和相关头部来索引对象,对于同一对象可以缓存不同版本(如不同的编码、语言)。
当缓存空间满后,TS 会移除过期的数据。
当磁盘出错时,TS 将不再使用该块磁盘,转而使用剩下的磁盘。所有磁盘都出错时,TS 将切换至 proxy-only 模式,即只代理,不缓存。
可分区,即可以给指定的协议和源服务器划分一定数量的磁盘空间

2.RAM 缓存

内存缓存区储存比较热门的对象,在流量的高峰期时能加快处理速度和降低磁盘负载。

3.主机数据库

储存 DNS 信息,方便主机名到 IP 地址的快速转换
储存每个主机的 HTTP 版本,方便高级协议特性的使用
储存主机的可靠性和可用性信息

4.DNS 解析器

TS 原生实现了 DNS 解析器,不依赖较慢的传统解析库。同时也降低了 DNS 的流量。

5.Traffic Server 进程
  • traffic_server 进程负责接受连接,处理协议请求,然后从缓存或源服务器获取对象并返回
  • traffic_manager 进程是 TS 的命令和控制设施,负责启动、监控和配置 traffic_server 进程,它也负责代理的端口配置、统计信息的接口、集群管理和虚拟 IP 的故障转移。
  • 如果 traffic_manager 检测到 traffic_server 进程失效,它立即重启 traffic_server 进程并且维护一个连接队列,保存此时到来的请求,完全重启后这个队列里的连接将按顺序被处理。
  • traffic_cop 进程监视 traffic_server 和 traffic_manager 进程,此进程周期性的查询 traffic_server 和 traffic_manager 进程的健康状况,如果查询在一定间隔时息不正确,traffic_cop 将重启 traffic_manager 和 traffic_server 进程。

6.管理工具

Traffic Line 是命令行程序,可以用来快速监视 Traffic Server 的性能和网络流量,也能配置 TS。
Traffic Shell 也是命令行工具,进入该 shell 后有自己一套语法,可代替 Traffic Line 完成监控、配置任务。
通过 Traffic Line 和 Traffic Shell 对配置作出的修改将会自动写入配置文件中。

3. 机制

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

  • 异步事件处理(Asynchronous event processing)
  • 多线程(Multi-threading)
    Traffic Server 在多 CPU、多核的硬件上扩展良好,能充分利用所有可用的 CPU 和其他资源。

4. HTTP 代理缓存相关机制

1. Traffic Server 处理请求的过程

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

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

     a.如果对象在缓存中,TS 会检查对象是否新鲜(fresh)如果新鲜,TS 从缓存里返回该对象给用户,此时称为缓存命中(cache hit)如果不新鲜(stale),TS 会连接源服务器去验证对象是否仍然新鲜,即重新验证(revalidation),如果仍然新鲜,TS 立即将缓存中的副本返回给用户b.如果对象不在缓存中(缓存未命中,cache miss),或者缓存的副本不再有效,TS 会去源服务器获取对象,然后同时做下面两件事将对象返回给用户将对象放到本地缓存中

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、特定的客户端等等)

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

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

参考文档

  • Apache Traffic Server 简介

Apache Traffic Server 简介相关推荐

  1. 使用jtest工具压测Apache Traffic Server

    置顶声明:下面的内容来自于赵永明的ATS博客, 本文是在他的指导和自身实践基础上整理而成.这里对豪哥的无私热心帮助表示无限感激! 一.概述 1.压力测试的定义 很多情况下,大家都希望在服务器上线前.业 ...

  2. Ubuntu 12.04 64bit上安装Apache Traffic Server 4.1.2

    说明: 对于企业级服务器来说,一般是使用Redhat或是CentOS上来跑Apache traffic server作为代理缓存服务器, 一般使用Ubuntu的机会很少,我这里探讨安装在Ubuntu ...

  3. Apache Traffic Server安装配置

    介绍 Apache Traffic Server(ATS或TS)是一个高性能的.模块化的 HTTP 代理和缓存服务器.Traffic Server 最初是 Inktomi 公司的商业产品,该公司在 2 ...

  4. proxyServer squid / varnish / apache traffic server / ATS

    apache traffic server http://gwan.com/benchmark/index.html http://zymlinux.net/  赵永明(阿里) /  旺旺群:7543 ...

  5. Apache Traffic Server 5.3.2及6.2.1的使用初探索

    Records-config详细参考:http://www.safecdn.cn/2017/01/records-config-2/ 快速安装及使用参考: http://www.cnblogs.com ...

  6. Apache Traffic Server管理工具

    Traffic Line是命令行程序,可以用来快速监视 Traffic Server 的性能和网络流量,也能配置 TS. Traffic Shell也是命令行工具,进入该 shell 后有自己一套语法 ...

  7. Apache Traffic Server 安装部署

    安装环境 系统:CentOS 7.4 更新yum yum update yum -y install epel* 先安装bzip2 yum -y install bzip2 1.下载源代码 我这里下载 ...

  8. 在CentOS 6.3 64bit上安装tsar并监控Apache Traffic Server

    Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告工具,如收集服务器的系统信息(cpu,mem等),以及应用数据,收集到的数据存储在服务器磁盘上,可以随时查询历史信息,也可以将数据发送到nag ...

  9. ATS (apache traffic server) http_ui 设置与使用

    参考官方FAQ进行设置: https://cwiki.apache.org/confluence/display/TS/FAQ#FAQ-http_ui 这里也有一篇: https://blog.zym ...

最新文章

  1. 原始ajax方式调用asp.net后台方法
  2. tp3.2 连接两个数据库
  3. word邮件合并一页8个_办公软件小课堂||word邮件合并
  4. 让乔布斯立足肩上的C语言之父
  5. springboot 应用程序的文件检索描述
  6. 2017年8个最流行的Web编程趋势
  7. labiview ni python_LabVIEW到底有哪些优势导致他用户量这么少但是长期不消失?
  8. 10年测试经验的性能测试工程师简历模板你见过吗?
  9. 【字符编码】Unicode字符集与字符编码方式
  10. 联想服务器bios中文显示,联想bios怎么设置中文显示
  11. 2021年下半年软件设计师考试下午题
  12. ArcGIS基础学习笔记之空间数据库管理工具ArcCatalog基础
  13. vCenter6.5+虚拟ISCSi
  14. sqlserver加载驱动失败的问题
  15. 手机3D的新境界:Omnia II 是3D方面的力作!!
  16. boonton 功率测试软件,Power Tester
  17. 处理idcard中的特殊字符
  18. Revit复制轴网和标高
  19. div绘制各种三角形
  20. 高等数学期末总复习 DAY 2.判断间断点类型 零点、

热门文章

  1. UNION ALL用法 以及 UNION ALL和UNION的区别
  2. window10右下角 天气 关闭
  3. 分类时为什么都选择one hot编码
  4. 【J2EE】JSP简介
  5. 电磁场与电磁波(1)——简史
  6. 云小课|帮您高效快速上传组件至私有依赖库
  7. 如何轻松打造一款智能防丢神器?让生活更省心省力
  8. 全球市场动荡持续,澳元和液化天然气(LNG)价格跌至近11年最低水平
  9. 皇家墨尔本理工大学计算机科学专业,皇家墨尔本理工大学计算机科学硕士专业.pdf...
  10. android usb rndis驱动,usb绑定rndis驱动下载-RNDIS驱动工具 2.0.1.1 最新版 - 河东下载站...