查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
Apigee Edge 能夠為 API Proxy 設定允許的要求數量 「配額政策」達到特定一段時間或特定時間範圍的資料。
反模式
API Proxy 要求可以由一或多個已呼叫的分散式 Edge 元件處理 訊息處理器。如果已設定多個用於提供 API 的訊息處理器 資源要求),可能會超出配額,因為每個訊息處理者保有自己的擁有權 「count」處理要求的某些部分
讓我們透過範例加以說明。假設將下列配額政策套用至 API Proxy:
<!-- /antipatterns/examples/1-6.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
上述設定應允許每小時共處理 100 個要求。
但實際上,當多個訊息處理器都在處理 API 要求時,將會發生以下情況:
在上圖中:
- 配額政策設定為每小時允許處理 100 個要求。
- 向 API Proxy 發出的要求是由兩個訊息處理器進行處理。
- 每個訊息處理器都會維持各自的配額計數變數
quota_count_mp1
和quota_count_mp2
,以便追蹤自己處理的要求數量。 - 因此,每個訊息處理器將分別允許處理 100 個 API 要求。如此一來,系統處理的要求總數就是 200 個,而非 100 個。
影響
在這種情況下,設定配額的目的將會失敗,而且也會對處理要求的後端伺服器帶來負面影響。
後端伺服器可能會:
- 因連入流量高於預期而負荷過重
- 無法回應較新的 API 要求而導致發生 503 錯誤
最佳做法
建議您在配額政策中將 <Distributed>
元素設為 true
,以確保透過共用計數器來追蹤所有訊息處理器的 API 要求。請依照以下程式碼片段所示來設定 <Distributed>
元素:
<!-- /antipatterns/examples/1-7.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Distributed>true</Distributed> <Allow count="100"/> </Quota>