日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Web API 速率限制(一)

發布時間:2023/12/4 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web API 速率限制(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


導讀

當您API有大量消費者或者請求量猛增到影響程序可用性的時候,您可能需要對API進行速率限制。所以對API進行限速的在于:在增加可靠性和可用性的同時來保護基礎架構,你不希望某個惡意的API消費者或者差勁的API客戶端開發者通過Dos攻擊把你的應用搞垮;保護你的產品,你同樣不希望你的產品被濫用,例如大規模用戶注冊或創建很多垃圾內容。

什么是限速


限速(Rate-Limiting)系統可以控制網絡接口發送和接受流量的速率。對于Web API來說,限速系統被用來控制一段時間內某個程序或客戶端允許調用某個API的次數,超過該次數的流量會被拒絕。例如Github的API只允許開發者每小時發送5000次請求。

限速

策略


在對API限速之前,您首先要考慮好限速的策略,通常一個好的限速策略有以下這兩個特性:

  • 易于理解,易于解釋,易于使用

  • 針對特殊情況,對開發者可以不限速

限速策略需考慮這些

限速策略還需要考慮這些問題

  • 顆粒速率限制還是全局速率限制

    針對比較簡單的系統,很多開發者采用的是全局速率限制,但是如果某個API消費了大量的資源,你可能需要為每個API單獨進行速率限制。所以顆粒的速率限制會保護你的基礎架構不被任何耗資巨大的API節點所引起的無理流量尖峰造成嚴重影響。

  • 測量每個用戶、應用、客戶端

    你想要進行速率限制的資源還依賴于您的API的身份認證方式。需要用戶身份認證的API通常可以按照用戶進行速率限制,而需要應用身份認證的API通常是基于每個應用來進行速率限制。對于未認證的API,我能想到的就是按照IP地址進行速率限制。

  • 是否支持突發流量

    有些API,尤其是企業內部的系統,需要支持超過速率限制的突發流量。這種情況下,可以采用令牌桶算法(Token Bucket)來實現速率限制。

  • 是否允許例外

    有時候,對于應用的開發者來說,一個限速策略或一組限速策略可能都不太適用。對于你信任的開發者,如果他們的請求超出了配額,可能需要給他們一些例外的允許,但是在此之前,你要做這些工作:

  • 保證每個開發者的用例對客戶來說都是合理有益的。

  • 要確認確實沒有其它不超出約束的辦法來達到相同的目的。

  • 確保你的基礎架構確實可以支撐想要請求的速率。

  • 針對 ASP.NET Core Web API

    針對ASP.NET Core Web API項目,如果不采用網關的話,我使用的是:

    AspNetCoreRateLimit

    Github的地址是:

    https://github.com/stefanprodan/AspNetCoreRateLimit。

    這個我會在后續文章中介紹。

    針對API網關

    .NET Core的Ocelot網關內置速率限制功能。

    https://ocelot.readthedocs.io/en/latest/features/ratelimiting.html

    而其它正經的API網關也都有該功能,例如Kong等。Kong的官網有一篇介紹API速率限制算法的文章,講的很好可以看看:

    https://konghq.com/blog/how-to-design-a-scalable-rate-limiting-algorithm/

    我也會在下一篇文章中介紹API速率限制的幾種算法。

    且聽下回分解

    2019-05-19

    .NET Core Rocks!!! \m/

    總結

    以上是生活随笔為你收集整理的Web API 速率限制(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。