缓存内部

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

本主题介绍了以下各政策下的缓存的工作原理:例如 PopulateCache 政策LookupCache 政策InvalidateCache 政策ResponseCache 政策

共享缓存和环境缓存

您配置的每个缓存政策都可以使用以下两种缓存类型之一:包含应用可以访问的共享缓存,以及您创建的一个或多个环境级范围的缓存。

  • 共享缓存:默认情况下,您的代理可以访问每个环境中的一个共享缓存。共享缓存非常适用于基本用例。

    您只能通过缓存政策(而不能使用 Management API)来处理共享缓存。如需让缓存政策使用共享缓存,只需省略政策的 <CacheResource> 元素即可。

  • 环境缓存:如果您要使用选择的值配置缓存属性,可以创建环境级缓存。如需详细了解如何创建缓存,请参阅创建和修改环境缓存

    创建环境缓存时,您可以配置其默认属性。您可以通过在政策的 <CacheResource> 元素中指定缓存名称,让缓存政策使用环境缓存。

缓存加密简介

针对公有云的 Edge:缓存在启用了 PCIHIPAA 的组织中进行加密。这些组织的加密会在组织预配期间进行配置。

内存中和永久性缓存级别

共享缓存和环境缓存都是在由内存级别和永久性级别构成的双层系统上构建的。政策以组合框架方式与两个级别交互。Edge 管理各级别之间的关系。

  • 1 级是内存缓存 (L1),用于快速访问。每个消息处理节点 (MP) 都有自己的内存缓存(从 Ehcache 实现),以便以最快的方式响应请求。
    • 在每个节点上,预留一定百分比的内存供缓存使用。
    • 达到内存上限后,Apigee Edge 会从内存中移除缓存条目(尽管它们仍保留在 L2 永久性缓存中),以确保内存仍可供其他进程使用。
    • 系统会按照自上次访问以来的时间顺序移除相应条目,最早的条目会先移除。
    • 这些缓存还受到缓存中条目数的限制。
  • 2 级是永久性缓存 (L2),其位于内存缓存下方。所有消息处理节点共用一个缓存数据存储区 (Cassandra) 来持久保留缓存条目。
    • 即使从 L1 缓存中移除缓存条目(例如当达到内存限制时),这些条目仍会在这里持久保留。
    • 由于永久性缓存在多个消息处理器之间共享(即使位于不同地区),因此无论哪个节点收到缓存数据的请求,缓存条目都可用。
    • 只有特定大小的条目可以缓存,并且适用其他缓存限制。请参阅管理缓存限制

您可能还对 Apigee 社区中的 Apigee Edge 缓存详情感兴趣。

政策如何使用缓存

下文介绍了当缓存政策执行时 Apigee Edge 如何处理缓存条目。

  • 当政策(PopulateCache 或 ResponseCache 政策)在缓存中写入新条目时:
    1. 边缘仅将条目写入处理请求的消息处理器上的内存中的 L1 缓存。如果在条目到期之前达到消息处理器的内存限制,则 Edge 会从 L1 缓存中移除该条目。
    2. Edge 还会将相应条目写入 L2 缓存。
  • 当政策(LookupCache 或 ResponseCache 政策)从缓存中读取条目时:
    1. Edge 会先在处理请求的消息处理器的内存中 L1 缓存中查找该条目。
    2. 如果没有相应的内存中条目,Edge 会在 L2 永久性缓存中查找该条目。
    3. 如果该条目不在永久性缓存中:
      • LookupCache 政策:未从缓存中检索任何值。
      • ResponseCache 政策:Edge 会将实际响应从目标返回至客户端,并将条目存储在缓存中,直到其过期或失效。
  • 当政策(InvalidateCache、PopulateCache 或 ResponseCache 政策)更新现有缓存条目或使其失效时:
    1. 接收请求的消息处理器会发送广播,以更新或删除自身以及所有区域中的所有其他消息处理器中的 L1 缓存中的条目。
      • 如果广播成功,则每个接收方消息处理器都会更新或移除 L1 缓存中的条目。
      • 如果广播失败,则失效的缓存值会保留在未收到广播的消息处理器上的 L1 缓存中。这些消息处理器会在 L1 缓存中有过时的数据,直到条目的存留时间 (TTL) 到期或在达到消息处理器内存限制时被移除。
    2. 该广播还会更新或删除 L2 缓存中的条目。

管理缓存限制

通过配置,您可以管理缓存的某些方面。内存中缓存可用的总空间受系统资源限制,无法配置。缓存适用以下限制:

  • 缓存限制:需遵循各种缓存限制,例如名称和值大小、缓存总数、缓存中的项数和过期。
  • 内存中 (L1) 缓存。 无法配置缓存的内存限制。Apigee 会为托管多个客户缓存的每个消息处理器设置限制。

    在托管云环境中,所有客户部署的内存中缓存都在多个共享消息处理器中托管,每个处理器都包含一个 Apigee 可配置的内存百分比阈值,以确保缓存不会耗尽应用的所有内存。当超过给定消息处理器的阈值时,缓存条目会从最近最少使用的内存中逐出。从内存中逐出的条目仍保留在 L2 缓存中,直到它们过期或失效为止。

  • 永久性 (L2) 缓存。根据可配置的存留时间设置,从内存中缓存逐出的条目仍将保留在永久性缓存中。

可配置的优化

下表列出了可用于优化缓存性能的设置。您可以在创建新的环境缓存时为这些设置指定值,如创建和修改环境缓存中所述。

设置 说明 备注
到期 指定缓存条目的存留时间。 无。