了解缓存层次结构
缓存层次结构由彼此通信的缓存级别组成。ats支持多种类型的缓存层次结构。
所有缓存层次结构都识别父和子的概念。 父缓存是层次结构中较高的缓存, ats可以
将请求转发到该缓存。子缓存是ats作为父缓存的缓存。

Parent Caching
如果ats节点无法在其缓存中找到请求的对象,则它会在最终从源服务器检索对象
之前搜索父缓存(它本身可以搜索其它缓存). 可以将ats节点配置为使用多个父缓存,以
便在一个父缓存不可用时,将依次检查其他父缓存,直到请求得到正确服务或者没有
其它父缓存可用时能够联系到原始服务器。称为故障转移。ats支持http和https请求的
父缓存。

如果您不希望所有请求都转到父缓存,则只需将ats配置为将某些请求(包含特定URL
的请求)直接路由到源服务器。可以通过在parent.config中设置父代理规则来实现。

下图说明了一个简单的缓存层次结构,其中ats节点配置为使用父缓存。在以下
方案中,客户端将请求发送到作为缓存层次结构中的子节点的ats节点(因为它配置为将
丢失的请求转发到父缓存)。该请求是缓存未命中,因此ats然后将请求转发到父缓存中
命中。父缓存将内容的副本发送到ats流量服务器,然后将其缓存并提供给客户端。后续
的请求可以直接从ats缓存(直到数据过期或失效)提供相应的服务。

如果请求是父级的缓存未命中,则父级将从源服务器(或从另一个缓存中检索内容,具体取决于父
级的配置). 父级缓存内容,然后将副本发送到ats(其子级), 在该级别将其复制并提供给客户端。

Parent Selection Policies
ats子节点可以使用多个父选择策略;
1. 一致性hash. 子节点为每个URI选择特定父节点。这有效的使父缓存大小成为每个父缓存大小的
总和;
2. 轮询. 子节点循环访问父节点。孩子可以根据客户端IP("true")或严格循环("严格")选择父级。
3. 未命名的。子节点选择列出的第一个活动父节点。这种策略有两种变体.当策略设置为"false"
时,子节点将使用第一个列出的父项(称为p1),直到它标记为关闭,此时子节点将切换到
第二个父项。然后,当重新测试并发现p1时,子节点将重新启用p1. 当选择策略设置为"
已锁定"时,子项将使用p1直到它被标记为关闭,此时它将切换到p2. 当重新测试并发现
p1可用时,子节点将继续使用p2直到它被标记为关闭。

与remap.config进行交互
如果需要重映射规则(proxy.config.reverse_proxy.enabled), 当请求进入子节点时,将在
父选择之前评估其remap.config。这意味着客户端请求是根据重映射规则进行转换的,因此,
应该根据重新映射的主机名进行任何父选择。无论是否启用了pristine主机头(proxy.config.
url_remap.pristine_host_hdr), 都是如此。父节点将接收已转换的请求(因此需要配置为接受它).

Example
客户端向ats请求http://example.com.请求的原始服务器是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

父缓存(parent1.example.com)需要一个类似于remap.config行:
map http://origin.example.com http://origin.example.com

在此示例中,如果parent1.example.com已下线,则子节点将在缓存未命中时自动直接联系
origin.example.com .

Parent Failover
ats支持使用多个父缓存。这可确保如果一个父缓存不可用,则另一个父缓存可以为客户端请求
提供服务。

将ats配置为使用多个父缓存时,ats会检测父缓存不可用并将miss请求发送到另一个父缓存。如果指定两个以上的父缓存,则查询父缓存的顺序取决于parent.config配置文件中配置的父代理规则。默认情况下,将按照配置文件中列出的顺序查询父缓存。

Configuring Traffic Server to Use a Parent Cache
要将ats配置为使用一个或多个父缓存,必须执行下面详述的配置调整。

只需配置子缓存。假设父节点配置为服务器于子服务器的源服务器, 则作为ats父缓存的节点不
需要其他配置。

1. 设置records.config
CONFIG proxy.config.http.parent_proxy_routing_enable INT 1

2. 标识要用于miss的请求提供服务的父缓存。要使用父故障转移,必须标识多个父缓存,以便于
在父缓存不可用时,将请求发送到另一个父缓存;

3. 编辑parent.config以设置父代理规则,该规则指定希望转发请求的父缓存;

以下示例将ats配置为将包含正则表达式和路径/viewpoint的所有请求直接路由到源服务器(绕过
父层次结构);

url_regex=politics prefix=/viewpoint go_direct=true

以下示例将ats配置为将包含http://host1开头的url的所有未命中请求定向到父缓存parent1.如果
parent1无法提供请求,则请求将转发到parent2. 因为round-robin=true, ats会根据客户端ip地址循环
访问父缓存列表。

dest_host=host1 scheme=http parent="parent1;parent2" round-robin=strict

traffic_ctl config reload

ats 分层缓存的更多相关文章

  1. ATS 分级缓存

    理解缓存分级cache hierarchies 缓存分级是由彼此能够相互通信的各级缓存组成的,ATS支持几种类型的缓存分级.所有的缓存分级都有父子缓存概念. 父缓存位于缓存分级的较高级别,ATS能将请 ...

  2. 使用go mod结合docker分层缓存进行自动CI/CD

    本文地址:https://www.cnblogs.com/likeli/p/10521941.html 喜大奔的go mod 官方背书的go mod拯救了我的代码洁癖症! 环境 go v1.12 do ...

  3. ats显示代理缓存

    如果要将ats用作显示代理缓存,则必须配置客户端软件(即浏览器)以将请求直接发送到ats. 如果没有将ats配置为使用透明度选项(通过交换机或路由器在路由到源服务器的情况下拦截客户端请求并重新路由到a ...

  4. ats缓存规则

    一. 用户访问过程:1. ats收到一个用户对web对象的请求;2. 使用该地址, ats尝试着在其对象数据库(缓存)中用被请求对象的地址来定位该对象;3. 如果对象在缓存中, ats会检查该对象是否 ...

  5. Redis学习之路(一)之缓存知识体系

    转自:https://www.unixhot.com/page/cache 缓存分层 缓存分级 内容 内容简介/主要技术关键词 用户层 DNS 浏览器DNS缓存 Firefox默认60秒,HTML5的 ...

  6. Apache Traffic Server(ats)

    零.前言1.官网 http://trafficserver.apache.org/2.国内社区 https://blog.zymlinux.net3.简洁明了的配置:http://blog.csdn. ...

  7. ATS日志说明

    在ATS日志中我们经常遇到形形色色的缓存结果码,为了更清晰地认识它们,相关资料整理到这里: TCP_HIT 请求对象的一份合法拷贝被缓存,ATS将发送该对象给client TCP_MISS 请求对象未 ...

  8. 缓存设计(cache-design)

    分布式缓存设计 目前常见的缓存方案都是分层缓存,通常可以分为以下几层: 1.1NG本地缓存,命中的话直接返回 1.2 NG没有命中时则需要查询分布式缓存,如redis 1.3 如果分布式缓存没有命中则 ...

  9. Ehcache3.x学习(二)分层的选项

    Ehcache支持分层缓存的概念. 当想缓存堆内存以外的空间时,会发生下面的事情: 1.将数据添加到缓存意味着必须序列化key和value. 2.从缓存中读取数据意味着可能必须反序列化key和valu ...

随机推荐

  1. 1692. [USACO07DEC] 队列变换【后缀数组+贪心】

    Description FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛”.在这场比赛中,每个参赛者都必须让他的奶牛排成一列,然后领她们从裁判席 ...

  2. 对于高并发短连接造成Cannot assign requested address解决方法

    https://www.cnblogs.com/dadonggg/p/8778318.html 感谢这篇文章给予的启发 在tcp四次挥手断开连接时,主动释放连接的一方最后会进入TIME_WAIT状态, ...

  3. npm发布插件步骤

    开发好一个插件后,要想让其他人也能使用该插件需要将插件发布到npm上,具体步骤如下: 1.添加npm用户: npm adduser Username: your name Password: your ...

  4. [NOIp2009] $Hankson$の趣味题

    \(23333\)这是最近第二份在时间上吊打\(yjk\)的代码--啊哈哈哈哈哈哈哈 嗯,其实遇到这种单纯的\(gcd \ \ or \ \ lcm\)的题,我们都可以用一种比较简单的方法分析:唯一分 ...

  5. SEGGER RTT STOP/SLEEP 模式下使用

    1.问题详述, M3/M4内核在sleep 或者 STOP模式 下,内核是不工作的,因此需要 以下 几步操作 第一步: 开启 低功耗模式下,debug 的连接 DBGMCU_Config(DBGMCU ...

  6. Altium Ddesigner 栅格 含义

    栅格分为可视栅格(Visible Grid).捕获栅格(snap grid).元件放置捕获栅格(Component Grid).电气栅格(Electrical Grid). 可视栅格:就是编辑过程中看 ...

  7. Linux进程管理——fork()和写时复制

    写时复制技术最初产生于Unix系统,用于实现一种傻瓜式的进程创建:当发出fork(  )系统调用时,内核原样复制父进程的整个地址空间并把复制的那一份分配给子进程.这种行为是非常耗时的,因为它需要: · ...

  8. 性能测试loadrunner安装

    把杀毒软件关闭 1. 点击 HP_LoadRunner_12.02_Community_Edition_T7177-15059.exe 完成后,点击下一步 接受协议 点击安装 点击完成 TOOLS - ...

  9. WPF RichTextBox 自定义文字转超链接

    搬运自StackOverflow private void AddHyperlinkText(string linkURL, string linkName, string TextBeforeLin ...

  10. 【转】CSDN离线网页html文件自动跳转

    问题: 最近使用OneNote2016剪辑csdn的文章时,发现一些公式/文本框不能被正确识别,所以离线保存网页的html文件. 但是每次打开html文件,都会自动跳转的CSDN主页,即使断网,也会自 ...