用于使用策略片段生成高级执行管道的体系结构

适用于:所有 API 管理层级

若要生成在请求和响应生命周期内执行的自定义行为的高级管道方案,可以使用 策略片段。 策略片段是集中管理的可重用 XML 代码段,其中包含 策略 配置和 策略表达式。 策略片段提供以下功能:

  • 阶段:可以使用片段跨入站、后端、出站和错误阶段分配自定义行为。
  • 顺序处理:片段按定义的顺序执行,具有明确的依赖项,使业务逻辑能够逐步展开。 每个片段在下一个开始之前完成,无需并行执行。
  • 可缩放的体系结构:片段提供高效的执行和缓存来支持企业级方案。
  • 可维护的设计:在片段之间明确分离关注点,使系统更易于理解和维护。

遵循以下四种建议模式,使用策略片段生成高级管道:

1. 模块化

将每个片段设计为具有单一且明确定义的职责。 每个片段应侧重于一个特定的问题,例如身份验证、日志记录或速率限制。 例如,命名 security-authentication 的片段应仅包含身份验证行为和逻辑。

2. 数据共享

使用 上下文变量在片段之间共享数据。

  • 定义数据协定:将上下文变量用作数据协定,以便按顺序在片段之间传递数据。 例如,片段 security-authentication 可以设置一个名为包含经过身份验证的用户提取 ID 的上下文变量 user-id ,使其可用于管道中的下游片段。 在幕后,每个请求都维护自己的独立 context.Variables 字典来存储上下文变量,确保片段之间的线程安全通信。 有关详细信息,请参阅 策略片段的变量管理

  • 缓存共享数据:当多个片段需要访问相同的数据时,请使用跨请求缓存来减少分析开销并提高性能。 请参阅策略片段的中央元数据缓存以获取实现指南。

3. 片段执行行为

通过在 产品和 API 策略 定义中按顺序插入片段来定义执行行为。

  • 顺序执行:按需要执行的顺序插入片段,以启用以后片段依赖于早期片段设置的变量的工作流。

  • 策略划分:根据自定义逻辑范围划分产品和 API 策略的片段。

  • 共享片段:为了避免重复和维护一致的行为,可以在产品和 API 策略级别重复使用相同的片段。

有关跨策略范围协调片段执行的详细指南,请参阅 策略注入与片段的协调

4. 性能优化

优化片段以获得最佳性能。

  • 将片段保持在 32 KB 以下:保持在 32 KB 的限制 内,以确保快速进行内存中分析,并避免基于文件的处理速度较慢。 该限制包括所有空格、注释和 XML 标记 ,而不仅仅是代码逻辑。 若要保持在限制范围内,请执行以下设置:

    • 将较长的值(如多行 JSON)提取到 命名值
    • 使用较短的变量名称。
    • 将复杂片段拆分为较小的片段。
  • 应用建议模式:遵循本文前面概述的建议。 最重要的是:

    • 通过实现元数据缓存来消除冗余分析。
    • 使用早期退出模式来处理运行状况检查、身份验证失败、变量存在情况,以及其他可以直接确定明确响应的场景,从而无需进行进一步处理。
    • 遵循处理优化,例如最小化变量访问。

有关全面的实现详细信息,请参阅以下 “相关内容 ”部分中的指南。