Ocelot中文文件-流量控制

loogn發表於2018-05-08

感謝@catcherwong 的文章激勵我最終寫出了這個文件

Ocelot支援上游的請求限制,以便您的下游服務不會過載。 此功能是由GitHub上的@geffzhang新增! 非常感謝。

好了,為了讓ReRoute獲得流量限制,你需要新增下面的json到ReRoute中。

"RateLimitOptions": {
    "ClientWhitelist": [],
    "EnableRateLimiting": true,
    "Period": "1s",
    "PeriodTimespan": 1,
    "Limit": 1
}

ClientWhitelist - 是一個包含客戶端白名單列表的陣列。這意味著在白名單裡的客戶端不受流量限制的影響。
EnableRateLimiting - 該值指定流量限制是否開啟。
Period - 該值指定時間段,例如1s,5m,1h,1d等。
PeriodTimespan - 該值指定我們可以在一定的秒數後重試。
Limit - 該值指定一個客戶端可以在定義的時間段(Period)內允許的最大請求數。

您還可以在ocelot.json的GlobalConfiguration部分中設定以下內容

"RateLimitOptions": {
  "DisableRateLimitHeaders": false,
  "QuotaExceededMessage": "Customize Tips!",
  "HttpStatusCode": 999,
  "ClientIdHeader" : "Test"
}

DisableRateLimitHeaders - 該值指定是否禁用X-Rate-Limit和Rety-After頭。
QuotaExceededMessage - 該值指定超出限制時返回的訊息。
HttpStatusCode - 該值指定超出限制時返回的HTTP狀態程式碼。
ClientIdHeader - 允許您指定應該用於標識客戶端的頭。 預設是“ClientId”

相關文章