了解缓存层次结构
缓存层次结构由彼此通信的缓存级别组成。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. jenkins 调用 k8s api

    delete_old_images() { #删除以前的镜像,节省本地空间 if docker images | grep $javaname ; then docker rmi -f `docker ...

  2. ES6新特性2:变量的解构赋值

    本文摘自ECMAScript6入门,转载请注明出处. ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring).不仅适用于var命令,也适用于let和c ...

  3. virtualbox+vagrant学习-2(command cli)-10-vagrant Port命令

    Port 格式: vagrant port [options] [name|id] 端口命令显示映射到主机端口的客户端口的完整列表 userdeMacBook-Pro:~ user$ vagrant ...

  4. 利用grep命令查找字符串分析log文件的一次实践

    需求场景: 我需要分析一个服务器访问日志,分析百度蜘蛛这个月对求索网页面的抓取情况. 分析问题: 我的一个access.log文件大小有35M,不可能直接通过打开查看.我需要过滤掉一些没有的信息,只保 ...

  5. [原创]关于在VS解决方案下使用文件夹管理多个项目层次关系的说明

    由于所创建的应用项目或类库项目较多,于是将这些类库放到一个文件夹下.在VS解决方案下确实能看到一个文件夹下多个类库项目这种层次关系.如下图所示: 但打开“我的电脑”,看到的只有类库,并未看到维护层次关 ...

  6. 404 Note Found 队-Beta7

    目录 组员情况 组员1:胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:何宇恒 组员11:刘一好 展示组内最新 ...

  7. hibernate -- 注解映射实体和表

    表名的映射 //代表此类参与ORM映射,此注解必须要有 @Entity //代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略 @Table(name="user ...

  8. Spring MVC 入门笔记

    主要名词解释 DispatcherServlet 前端控制器  相当于一个转发器 入口: protected void doDispatch(HttpServletRequest request, H ...

  9. EasyX_无法填充圆颜色的问题

    官网:https://www.easyx.cn/ 在线帮助文档:https://docs.easyx.cn/ 目标:生成一个边框为黄色,填充为蓝色的圆 遇到的问题:使用以下代码,只能生成边框为黄色的圆 ...

  10. #leetcode刷题之路42-接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水.上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 ...