您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
本主题介绍了以下各政策下的缓存的工作原理:例如 PopulateCache 政策、LookupCache 政策、InvalidateCache 政策和 ResponseCache 政策。
共享缓存和环境缓存
您配置的每项缓存政策都可以使用以下两种缓存类型之一:您的应用有权访问的所含共享缓存,以及您创建的一个或多个环境级范围的缓存。
-
共享缓存:默认情况下,您的代理可以访问每个环境中的一个共享缓存。共享缓存非常适合基本用例。
您只能使用缓存政策(而非 Management API)来处理共享缓存。如需让缓存政策使用共享缓存,只需省略政策的
<CacheResource>
元素即可。 -
环境缓存:如果您想使用自己选择的值配置缓存属性,可以创建环境级范围的缓存。如需详细了解如何创建缓存,请参阅创建和修改环境缓存。
创建环境缓存时,您需要配置其默认属性。您可以通过在政策的
<CacheResource>
元素中指定缓存名称,让缓存政策使用环境缓存。
缓存加密简介
Edge for Public Cloud:仅在支持 PCI 和 HIPAA 的组织中加密缓存。这些组织的加密会在组织预配期间进行配置。
内存中和永久性缓存级别
共享缓存和环境缓存都是在由内存级别和永久性级别构成的双层系统上构建的。政策以组合框架方式与两个级别交互。Edge 管理各级别之间的关系。
-
1 级是内存缓存 (L1),用于快速访问。每个消息处理节点 (MP) 都有自己的内存缓存(从 Ehcache 实现),以便以最快的方式响应请求。
- 在每个节点上,系统都会预留一定百分比的内存供缓存使用。
- 在达到内存上限时,Apigee Edge 会从内存中移除缓存条目(但它们仍保留在 L2 永久性缓存中),以确保内存仍可供其他进程使用。
- 系统会按上次访问时间的顺序移除条目,最早的条目会先被移除。
- 这些缓存还受缓存条目数量的限制。
-
2 级是永久性缓存 (L2),其位于内存缓存下方。所有消息处理节点共用一个缓存数据存储区 (Cassandra) 来持久保留缓存条目。
- 即使从 L1 缓存中移除缓存条目(例如当达到内存限制时),这些条目仍会在这里持久保留。
- 由于永久性缓存在多个消息处理器之间共享(即使位于不同地区),因此无论哪个节点收到缓存数据的请求,缓存条目都可用。
- 只有特定大小的条目可以缓存,并且适用其他缓存限制。请参阅管理缓存限制。
您可能还会对 Apigee 社区中的Apigee Edge 缓存详解感兴趣。
政策如何使用缓存
下文介绍了当缓存政策执行时 Apigee Edge 如何处理缓存条目。
- 当政策(PopulateCache 或 ResponseCache 政策)在缓存中写入新条目时:
- Edge 仅将条目写入负责处理请求的消息处理器上的内存中 L1 缓存。如果在条目到期之前达到消息处理器的内存限制,则 Edge 会从 L1 缓存中移除该条目。
- Edge 还会将该条目写入 L2 缓存。
- 当政策(LookupCache 或 ResponseCache 政策)从缓存中读取条目时:
- Edge 首先会在负责处理请求的消息处理器的内存中 L1 缓存中查找条目。
- 如果没有相应的内存中条目,Edge 会在 L2 永久性缓存中查找该条目。
- 如果该条目不在永久性缓存中:
- LookupCache 政策:未从缓存中检索任何值。
- ResponseCache 政策:Edge 会将实际响应从目标返回至客户端,并将条目存储在缓存中,直到其过期或失效。
- 当政策(InvalidateCache、PopulateCache 或 ResponseCache 政策)更新现有缓存条目或使其失效时:
- 接收请求的消息处理器会发送广播,以更新或删除该消息处理器以及所有地区中所有其他消息处理器的 L1 缓存中的条目。
- 如果广播成功,则每个接收方消息处理器都会更新或移除 L1 缓存中的条目。
- 如果广播失败,则失效的缓存值会保留在未收到广播的消息处理器上的 L1 缓存中。这些消息处理器在 L1 缓存中将包含过时数据,直到条目的存留时间 (TTL) 到期或达到消息处理器内存限制时条目被移除为止。
- 该广播还会更新或删除 L2 缓存中的条目。
- 接收请求的消息处理器会发送广播,以更新或删除该消息处理器以及所有地区中所有其他消息处理器的 L1 缓存中的条目。
管理缓存限制
通过配置,您可以管理缓存的某些方面。内存中缓存可用的总空间受系统资源限制,无法配置。缓存适用以下限制:
- 缓存限制:需遵循各种缓存限制,例如名称和值大小、缓存总数、缓存中的项数和过期。
-
内存中 (L1) 缓存。 无法配置缓存的内存限制。Apigee 会为托管多个客户缓存的每个消息处理器设置限制。
在托管云环境中,所有客户部署的内存中缓存都在多个共享消息处理器中托管,每个处理器都包含一个 Apigee 可配置的内存百分比阈值,以确保缓存不会耗尽应用的所有内存。当超过给定消息处理器的阈值时,缓存条目会从最近最少使用的内存中逐出。从内存中逐出的条目仍保留在 L2 缓存中,直到它们过期或失效为止。
- 永久性 (L2) 缓存。根据可配置的存留时间设置,从内存中缓存逐出的条目仍将保留在永久性缓存中。
可配置的优化
下表列出了可用于优化缓存性能的设置。您可以在创建新的环境缓存时为这些设置指定值,如创建和修改环境缓存中所述。
设置 | 说明 | 备注 |
---|---|---|
到期 | 指定缓存条目的存留时间。 | 无。 |