在 API 中新增尖峰流量防範政策

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

課程內容

透過本教學課程,您可以瞭解下列主題:

  • 新增會影響要求和回應的政策。
  • 查看政策的影響。

軟硬體需求

  • Proxy 中有至少一個政策 (也是「開始使用」教學課程的一部分)。
  • 機器安裝 curl,以便透過指令列發出 API 呼叫。

新增尖峰流量防範政策

在這個教學課程中,您將新增並設定 SpikeArrest 政策,以免目標服務突然暴增,而流量高峰可能是用量增加、發生錯誤的用戶端或惡意攻擊。如果要求數量超過頻率限制,API 就會針對要求傳回 HTTP 500 錯誤。

為 API Proxy 新增尖峰流量防範政策:

  1. 登入 apigee.com/edge
  2. 在左側導覽列中,依序選取「Develop」(開發) >「API Proxy」
  3. 選取要新增尖峰流量防範政策的 API Proxy。

    如果您已按照「開始使用」教學課程操作,可以將該 Proxy 新增至您在建立 API Proxy 中建立的「getstarted」Proxy。

  4. 在新 API Proxy 的編輯器中,按一下「Develop」分頁標籤:

    API Proxy 編輯器可讓您查看 API Proxy 的結構,並設定其流程。編輯器會以視覺化方式呈現 Proxy 的要求和回應訊息流程,並顯示定義 Proxy 的基礎 XML 編輯畫面。

  5. 在左側的導覽器窗格中,依序點選「Proxy Endpoints」>「default」PreFlow底下的「PreFlow」PreFlow。(其他教學課程將會說明「流程」的概念)。
  6. 按一下與 Request PreFlow 對應的頂端「+Step」按鈕。畫面上會列出您可以建立的所有政策的分類清單。

    按一下「要求 PreFlow」中的步驟

  7. 在流量管理類別中選取「高強度單車」。系統隨即會顯示「新政策」對話方塊:

    建立尖峰流量防範政策

  8. 保留預設名稱,然後按一下「新增」。新政策會附加至要求的 PreFlow 流程。
  9. 在導覽器中,確認「Proxy Endpoints > default」PreFlow底下的「PreFlow」PreFlow仍已選取,並在 API Proxy 編輯器中記下下列內容:
    • 新的 Spike Arrest-1 政策會在 API Proxy 編輯器左側「Navigator」的「政策」下方新增。
    • Spike Arrest-1 圖示已新增至 API Proxy 編輯器正上方的「Designer view」中,以視覺化方式呈現 Proxy 的訊息流程。
    • 政策的 XML 會顯示在 API Proxy 編輯器底部中央的「程式碼檢視」中。

    查看《PreFlow with Spike Arrest 政策》

  10. 在「Navigator」中,選取「Policy」下方的「Spike Arrest-1」,並在 API Proxy 編輯器中記下下列內容:
    • 政策詳細資料會顯示在 API Proxy 編輯器正上方的「設計人員檢視」中。
    • 政策的 XML 會顯示在 API Proxy 編輯器底部中央的「程式碼檢視」中。
    • 政策的 XML 元素和屬性值會顯示在 API Proxy 編輯器右側的屬性檢查器中。

  11. 在政策的 XML 中,將 <Rate> 元素的值變更為「下午 1 點」 (在雲端中大約每 60 秒會轉譯為大約 2 個要求)。

    你可以將速率指定為每分鐘 (pm) 或每秒 (ps) 的整數值。這項限制極低,僅供本教學課程使用,用於展示政策。通常提高上限會比較高。

    請注意,屬性檢查器中的 Rate 值也會變更為「1pm」。或者,您也可以在屬性檢查器中變更「Rate」值,然後反映在 XML 檢視畫面中。

  12. 按一下「儲存」,將目前的修訂版本儲存到您的變更。
  13. 使用 curl 呼叫 API,將 org_name 換成您的 Apigee 機構名稱:

    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 秒限制為每 4 秒進行一次的呼叫),然後儲存 API Proxy。
  16. 執行 curl 指令或重複重新整理瀏覽器 (速度較快 curl)。 請注意,如果您在 4 秒內進行一到兩次呼叫,呼叫成功。如果能在 4 秒內快速發出呼叫,應該就能收到錯誤。但是每隔 4 秒過後,您可以繼續撥打電話,而不是被阻斷一分鐘 (在下午 1 點設定)。