反模式:将大于 256 KB 的数据存储在缓存中

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

Apigee Edge 能够在运行时将数据存储在缓存中,以实现持久性并加快检索速度。

  • 数据最初存储在消息处理器的内存缓存中,称为“L1 缓存”。
  • L1 缓存受为其保留的内存量(占 JVM 内存的百分比)的限制。
  • 缓存的条目随后保留在 L2 缓存中,可供所有 Message Processor 访问。更多详情,请参阅下文。
  • L2 缓存对缓存条目数量没有任何硬性限制,但可缓存的条目大小上限为 256 KB。为获得最佳性能,建议将缓存大小设置为 256 KB。

反模式

这一特定的反模式讨论了超出 Apigee Edge 平台中当前缓存大小限制的影响。

当缓存大于 256 KB 的数据时,会产生以下后果:

  • 因为在 L2 缓存中没有大于 256 KB 的条目,因此在每个 Message Processor 上首次执行的 API 请求都需要独立于原始来源(政策或目标服务器)获取数据。
  • 在 L1 缓存中存储较大的数据(大于 256 KB)会给平台资源带来更大的压力。这使得 L1 缓存内存的填充速度更快,从而使得其他数据的空间更少。因此,任何人都无法像希望的那样缓存数据。
  • 达到条目数量上限时,Message Processor 中的缓存条目将被移除。这会导致相应 Message Processor 重新从原始来源提取数据。

两个流程图表。一个大小小于等于 256KB,显示 API 代理和消息处理器之间的流,以及消息处理器和永久性存储 L2 缓存之间的流。一个用于大小超过 256KB 的流,显示 API 代理和消息处理器之间的流,以及消息处理器和未存储在 L2 缓存中的数据/响应之间的流。

影响

  • 大于 256 KB 的数据不会存储在 L2/persistent 缓存中。
  • 更频繁地调用原始来源(政策或目标服务器)会增加 API 请求的延迟时间。

最佳做法

  • 为了获得最佳性能,最好在缓存中存储小于 256 KB 的数据。
  • 如果需要存储大于 256 KB 的数据,请考虑:
    • 使用适当的数据库来存储大数据

      OR

    • 压缩数据

更多详情