了解缓存层次结构
缓存层次结构由彼此通信的缓存级别组成。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. CF613D:Kingdom and its Cities(树形DP,虚树)

    Description 一个王国有n座城市,城市之间由n-1条道路相连,形成一个树结构,国王决定将一些城市设为重要城市. 这个国家有的时候会遭受外敌入侵,重要城市由于加强了防护,一定不会被占领.而非重 ...

  2. 「GXOI / GZOI2019」旅行者

    题目 我还是太傻了 考虑每一条边的贡献,对于一条有向边\((u,v,w)\),我们求出\(k\)个关键点中到\(u\)最近的距离\(dis_1\),以及\(v\)到\(k\)个关键点中最近的距离\(d ...

  3. 【node.js】Stream(流)

    Stream 有四种流类型: Readable - 可读操作. Writable - 可写操作. Duplex - 可读可写操作. Transform - 操作被写入数据,然后读出结果. 所有的 St ...

  4. 常用的SharePoint命令行代码

    网站备份: Backup-SPSite http://sp2013 -Path C:\sp.bak 网站还原: Restore-SPSite http://sp2013 -Path C:\sp.bak ...

  5. elasticserach 索引删除 源码分析

    索引的构成 在看IndicesService服务中移除索引的前提,先了解一个Index类的构成,也就是索引的一些基本信息,代码贴图如下:   主要的信息就两个:一个是name,表示索引名称,一个是uu ...

  6. rdlc报表随笔心得 ,基本结构和一些表达式。

    Dataset Form RDLC 主要放数据集的文件夹 存放窗体的文件夹 存放各种报表的文件夹 第一部,创建报表结构 首先添加数据集项 添加完成之后我们会看到这个页面 之后我们在上面添加一些数据集 ...

  7. MySQL 基础回顾

    mysql 回顾 数据库的设计必须满足三范式 1NF: 强调列的原子性,列不可拆分 eg: 一张表(联系人) 有(姓名,性别,电话)三列,但是现实中电话又可分为家庭电话和公司电话,这种表结构设计就不符 ...

  8. 基于 HTML5 WebGL 的计量站三维可视化监控系统 Web 组态工控应用

    得益于 HTML5 WebGL 技术的成熟,从技术上对工控管理的可视化,数据可视化变得简单易行!完成对工控设备的管理效率,资源管理,风险管理等的大幅度提高,同时也对国家工业4.0计划作出有力响应! 如 ...

  9. 苏州Uber优步司机奖励政策(4月24日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. HDU - 5877 Weak Pair (dfs+树状数组)

    题目链接:Weak Pair 题意: 给出一颗有根树,如果有一对u,v,如果满足u是v的父节点且vec[u]×vec[v]<=k,则称这对结点是虚弱的,问这棵树中有几对虚弱的结点. 题解: 刚开 ...