本文档翻译自参考文献[1]

理解缓存分级cache hierarchies
缓存分级是由彼此能够相互通信的各级缓存组成的,ATS支持几种类型的缓存分级。所有的缓存分级都有父子缓存概念。
父缓存位于缓存分级的较高级别,ATS能将请求转发(farward)转发给它。子缓存就是将ATS作为父缓存的缓存。
ATS支持父缓存和ICP两种形式的缓存选项。

父级缓存Parent Caching
假如ATS节点在自身缓存中找不到请求对象,那么它将查询父缓存,父缓存找不到的情况下,会继续查找其它缓存,如果父缓存都找不到,就会回源去取。
你能够配置ATS节点去使用多个父缓存,以便假如某个父缓存不可用时,转而去查询另一个父缓存,依次下去,直至要么能有资源响应该请求,要么在没有更多父缓存的情况下
去源站回源。这种情况叫做父缓存故障转移Parent Failover。ATS支持HTTP和HTTPS的父级缓存。
假如你不想将所有的请求都转发到父缓存,那么可以只简单配置ATS让一部分请求(比如含有特殊URL的那些请求)直接回源,只需要在parent.config中设置
父缓存规则parent proxy rules。
下图描述了一个配置使用父缓存的ATS节点的简单分级缓存,在该场景scenario中,client向分级缓存的ATS子缓存发送请求,子缓存cache miss,然后子缓存转发请求到父缓存,并cache hit,父缓存发送内容副本到ATS子缓存,子缓存保存一份,并响应给client。后续对该资源的请求将会直接从子缓存处命中,直至该资源变旧stale或是失效expired

加入请求在父缓存cache miss,父缓存会回源或是从其它缓存获取,依据父缓存的配置而定。父缓存缓存该内容后,将副本返回给子缓存ATS,子缓存缓存后再返回给client。

与remap.config结合
假如要求使用remap规则(配置了proxy.config.reverse_proxy.enabled),当请求到达子节点是,它的remap.config将在parent规则之前处理。这意味着client的请求先安装remap rule转换,
因而任何parent规则将会基于改写后的主机名remapped host name,这不管pristine host header是否启用(proxy.config.url_remap.pristine_host_hdr) 都成立。父缓存将会接收转换后的请求,因此需要配置去接受该情况。

示例
客户端发送请求到 http://example.com. 上的ATS,发到源站的请求是http://origin.example.com;父节点是parent1.example.com,子节点被配置为反向代理
子缓存节点
remap.config中添加
map http://example.com http://origin.example.com
parent.config中添加
dest_domain=origin.example.com method=get parent="parent1.example.com:80
父缓存节点
remap.config中配置
map http://origin.example.com http://origin.example.com
该例子中,假如 parent1.example.com宕机,子节点在cache miss的情况下,会自动直连源站 origin.example.com

父缓存故障转移Parent Failover
ATS支持使用多个父缓存,这能确保假如一个父缓存不可用时,另一个父缓存能对client请求服务
当你使用多个父缓存配置ATS时,ATS探测到一个父缓存不可用时,会将miss请求发送到另一个父缓存。假如你指定了两个以上的父缓存,父缓存查询次序依赖于你在parent.config中配置parent proxy rules,默认按照该配置文件中配置的先后次序查询。

配置ATS使用父缓存
为了配置ATS使用一个或多个父缓存,你需要向下面那样详细配置。
注意
你只需要配置子缓存,假设父缓存配置为子缓存的源站,对父缓存不需要额外配置
1.在records.config中开启父缓存选项parent caching option
CONFIG proxy.config.http.parent_proxy_routing_enable INT 1
2.确保你想使用父缓存去服务于 service missed requests。如果另外要使用parent failover,你必须指定一个以上的父缓存,以便当一个父缓存不可用时,请求可以转发到另一个父缓存
3.配置parent.config中的parent proxy rules 
下面的例子配置ATS子缓存将所有path为/viewpoint 和含有正则表达式politics的请求直接发往源站(跳过任何父缓存)
url_regex=politics prefix=/viewpoint go_direct=true
下面的例子配置ATS子缓存将所有以http://host1开头的URL的missed请求转发到父缓存,假如parent1不能服务,就转发到parent2.
因为round-robin=true, ATS会基于client IP address轮询方式遍历父缓存列表
dest_host=host1 scheme=http parent="parent1;parent2" round-robin=strict
运行traffic_ctl config reload命令去让配置变动生效。

ICP Peering
The Internet Cache Protocol (ICP)被代理缓存使用去交换彼此的资源信息,ICP query消息去查询其它缓存是否存有指定的URL?
ICP response消息会应答为hit或miss。缓存只会和自己相邻的,并且能够接收ICP消息的特定ICP peer交换ICP消息。一个ICP缓存可以是一个
sibling缓存(在分级缓存中同级)或是parent缓存(在分级缓存中高一级)
假如ATS开启了ICP caching,那么当HTTP请求cache miss时,它发送ICP query到ICP peers。假如ICP peers都没有hit,但是存在父级缓存,它会使用轮询策略
(round-robin policy)选择一个父缓存。假如没有ICP父缓存存在,ATS会将请求转发到HTTP父缓存。假如没有HTTP父缓存,ATS会转发请求到源站。

为了配置ATS节点作为ICP分级缓存的一部分,你必须执行下面的任务:

  • 确定ATS是否只能接收ICP消息,或者是否发送和接收ICP消息
  • 确定ATS是否可以直接将消息发给每个ICP peer,或者在指定多播通道发送单个消息
  • 指定ICP消息使用的端口
  • 确定能与ATS通信的ICP peer(siblings and parents)

在records.config中配置如下选项来使用ICP分级缓存ICP cache hierarchy
proxy.config.icp.enabled
proxy.config.icp.icp_port
proxy.config.icp.multicast_enabled
proxy.config.icp.query_timeout
配置icp.config,对每个你想识别的ICP peer,给出一条单独的规则

运行traffic_ctl config reload去让配置变动生效

参考文档
[1].https://docs.trafficserver.apache.org/en/latest/admin/hierachical-caching.en.html#configuring-traffic-server-to-use-a-parent-cache
[2].https://docs.trafficserver.apache.org/en/latest/reference/configuration/parent.config.en.html

ATS 5.3.0分级缓存相关推荐

  1. ATS 5.3.0中开启最高级别的缓存调试信息

    近来在pptv,letv之类的站点响应中看到via头中有非常详细的缓存信息,我研究了一下,原来是ATS默认就支持的,以ATS 5.3.0中为例,修改records.config中的如下配置项: CON ...

  2. ATS 5.3.0缓存架构

    下面是参考文献[1]的翻译 简介 ATS既可以用作HTTP代理,也可以用作HTTP缓存,ATS能够缓存任何字节流,虽然它当前只支持HTTP协议传输的字节流,当这样的流缓存时,会带一个HTTP协议头部, ...

  3. ATS 5.3.0中parent.config配置文件解读

    该博文翻译自参考文献[1] parent.config parent.config文件识别用在缓存分级中的父代理,用这个文件去执行下面的配置: 搭建父分级缓存,兼容多父级缓存和父级缓存故障转移 配置指 ...

  4. 在ATS 5.3.0上测试域名统计插件channel_stats

    (所有的说明都在README文档中有详细说明,敬请熟读) 编译安装 使用上面的编译选项默认就会将该插件对应的动态库channel_stats.so编译进动态库目录/opt/ats/libexec/tr ...

  5. ATS 5.3.0中利用grep得到纯净的配置文件

    ATS 5.3.0中的配置文件通常会标有详细的注释,但是我们有时候需要纯净的配置文件,特别是在线上部署的配置文件,不需要这么详细的注释.下面是处理过程. cat records.config | gr ...

  6. ATS 5.3.0日志字段分析(续)

    自定义日志域Custom Logging Fields 下面的字段描述了ATS支持的自定义日志域 {HTTP header field name}cqh {HTTP header field name ...

  7. 在ATS 5.3.0上测试网页加速插件ats_pagespeed

    历史回顾 网页加速的原理源远流长,最著名的是yahoo的那个<Yahoo! 网站性能最佳体验的34 条黄金守则>,基于此思想,诞生了两个比较有名的网站优化工具,YSlow和Page Spe ...

  8. 全面认识一下.NET 4.0的缓存功能

    很多关于.NET 4.0新特性的介绍,缓存功能的增强肯定是不会被忽略的一个重要亮点.在很多文档中都会介绍到在.NET 4.0中,缓存功能的增强主要是在扩展性方面做了改进,改变了原来只能利用内存进行缓存 ...

  9. opengles2.0 帧缓存对象(FBO)

    opengles2.0 帧缓存对象(FBO) 帧缓存对象(fbo)主要是用于做渲染到纹理. opengles2.0渲染到纹理的方法有三种: 第一,使用glCopyTexImage2D或者glCopyT ...

最新文章

  1. AttributeError: module ‘tensorflow‘ has no attribute ‘applications‘
  2. 管理敏捷迭代任务和任务协作
  3. sc config 命令(详细)
  4. 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)
  5. 一文读懂什么是C++移动语义《一》
  6. mysql数据自动备份_每天自动备份MySQL数据库的shell脚本
  7. 数组转换成json key-value形式
  8. java string类型_java中String类型
  9. Linux 命令之 timedatectl -- 查看系统当前时区设置
  10. 主攻计算机专业英语翻译,湖师大“博导”黄振定,主攻“翻译学”
  11. ireport参数传递json_ssm中iReport报表使用json数据源过程体会
  12. java日历查询代码,查询日历,万年历查询,日历格式JAVA原代码
  13. Linux平台-小型企业DHCP服务器的搭建
  14. 还在死磕 Ajax?那可就 out 了!
  15. python turtle 乌龟赛跑_海龟快跑,turtle碰撞检测小游戏
  16. 自己做小程序开个社区团购可行吗?
  17. hibernate left join fetch 出错的问题
  18. 存储新图谱:DNA存储的边界与天地
  19. 中企海外周报 | 华米在印尼发布两款智能手表;百世集团进军越南市场
  20. 图钉能按到墙上吗_请问图钉能钉在水泥墙上吗

热门文章

  1. 2022-2028年中国无人经济行业深度调研及投资前景预测报告
  2. 2022-2028年中国三氟化氮行业市场调查研究及前瞻分析报告
  3. C++ primer 第七章之 友元函数与友元类
  4. Servlet中的配置 web.xml
  5. java.sql.Exception:setString 只能处理少于 32766 个字符的字符串
  6. tp3分布式session mysql_分布式数据库支持
  7. 什么是php递归算法_PHP递归算法(一)
  8. python 检验数据正态分布程度_python 实现检验33品种数据是否是正态分布
  9. c++ int转unsigned int_mysql中int、bigint、smallint 和 tinyint的区别详细介绍
  10. 3d stroke插件下载_推荐一款好用的PS 3D地图插件,PS插件3D Map Generator ,一键生成地图神器...