向您的 API 添加 Spinke Arrest 政策

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

学习内容

通过本教程,您将学会:

  • 添加影响请求和响应的政策。
  • 了解此政策的影响。

所需条件

  • 代理中至少有一个政策(也是入门教程的一部分)。
  • 您的机器上安装了 curl,以便通过命令行进行 API 调用。

添加 Spinke Arrest 政策

在本教程中,您将添加并配置 SpikeArrest 政策,以防止目标服务因使用量、错误客户端或恶意攻击而出现突发流量高峰。请求数超过速率限制时,API 会针对请求返回 HTTP 500 错误。

将 Spoke Arrest 政策添加到 API 代理:

  1. 登录 apigee.com/edge
  2. 在左侧导航栏中,选择开发 > API 代理
  3. 选择要添加 Skeke Arrest 政策的 API 代理。

    如果您按照入门教程进行操作,则可以将其添加到您在创建 API 代理中创建的“getstarted”代理。

  4. 在新 API 代理的编辑器中,点击开发标签页:

    API 代理编辑器让您可查看 API 代理的结构并配置其流。编辑器将显示代理的请求和响应消息流的直观表示,以及定义代理的底层 XML 的可修改显示。

  5. 在左侧导航窗格中,点击代理端点 > 默认下的 PreFlow。(其他教程将介绍 的概念。)
  6. 点击与请求 PreFlow 相对应的 +步骤按钮。此时会显示您可以创建的所有政策的分类列表。

    点击 请求预流 (Step in Request PreFlow) 步骤

  7. 在“流量管理”类别中选择 Spke Arrest。此时会显示“新建政策”对话框:

    创建 Spike Arrest 政策

  8. 保留默认名称,然后点击添加。新政策将附加到请求的 PreFlow 流。
  9. 在导航器中,确保代理端点 > 默认下的 PreFlow 仍处于选中状态,并在 API 代理编辑器中注意以下内容:
    • 在 API 代理编辑器左侧的导航器的政策下添加了新的 Spoke Arrest-1 政策。
    • 将 Spinke Arrest-1 图标添加到了 API 代理编辑器顶部中心的设计师视图,此视图是代理消息流的直观表示。
    • 政策的 XML 显示在 API 代理编辑器底部中心的代码视图中。

    查看“使用 Spike Arrest”的 PreFlow 政策

  10. 在导航器的“政策”下选择 Spke Arrest-1,并在 API 代理编辑器中注意以下内容:
    • 政策详细信息显示在 API 代理编辑器顶部中心的设计师视图中。
    • 政策的 XML 显示在 API 代理编辑器底部中心的代码视图中。
    • 政策的 XML 元素和属性值显示在 API 代理编辑器右侧的属性检查器中。

  11. 在政策的 XML 中,将 <Rate> 元素的值更改为 1pm(在云端会转换为每 60 秒允许 2 次请求左右)。

    您可以将速率指定为每分钟 (pm) 或每秒 (ps) 整数值。这是一个非常高的限额,仅在本教程中用于演示政策。通常,您可以将其设置为更高的限额。

    请注意,属性检查器中的 Rate 值也会更改为“1pm”。或者,您也可以在属性检查器中更改速率值,该值会反映在 XML 视图中。

  12. 点击保存,保存当前修订版本以及您所做的更改。
  13. 使用 curl 调用 API,将 Apigee 组织名称替换为 org_name

    curl "http://org_name-test.apigee.net/getstarted"

    例如:

    curl "http://ahamilton-eval-test.apigee.net/getstarted" | python -m json.tool

    确保请求成功,并且您看到的 XML 响应与以前相同。(您也可以在网络浏览器中输入网址。)

  14. 在一分钟内执行 curl 命令(或刷新浏览器窗口)两次或三次,您会注意到自己收到以下消息,因为您超出了该政策的速率限制:
    {
    "fault": {
      "faultstring":"Spike arrest violation. Allowed rate : 1pm",
      "detail": {
        "errorcode":"policies.ratelimit.SpikeArrestViolation"}
      }
    }

    如果您尝试在一分钟内进行更多调用,则应会继续收到故障消息。

  15. 修改政策,将 <Rate> 限额设置为 15pm(在云端会转换为每 4 秒允许 2 次调用左右),然后保存 API 代理。
  16. 执行 curl 命令或反复刷新浏览器(curl 更快)。请注意,如果您在 4 秒的间隔内进行一次或两次致电,调用将成功。如果您快速执行调用,并在 4 秒内超过两次次调用,应该会收到故障。但每 4 秒间隔之后,就可以继续进行调用,而不是在一分钟内都被阻止(设置为 1pm)。