狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

.NET 高效靈活的API速率限制解決方案

freeflydom
2024年6月26日 10:33 本文熱度 895

前言

    FireflySoft.RateLimit是基于.NET Core和.NET Standard構(gòu)建,支持多種速率限制算法和策略,包括固定窗口、滑動(dòng)窗口、漏桶、令牌桶等。通過(guò)簡(jiǎn)單的配置和集成,開(kāi)發(fā)者可以快速地將其應(yīng)用到現(xiàn)有的Web API、微服務(wù)或中間件中,實(shí)現(xiàn)對(duì)請(qǐng)求的精確控制。

    同時(shí),該庫(kù)還支持分布式系統(tǒng)中的速率限制,通過(guò)Redis等分布式緩存系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)的共享和同步,確保在不同節(jié)點(diǎn)之間實(shí)現(xiàn)一致的速率限制效果。

    除了強(qiáng)大的功能外,F(xiàn)ireflySoft.RateLimit還注重易用性和性能優(yōu)化。提供了簡(jiǎn)潔明了的API和豐富的示例代碼,使得開(kāi)發(fā)者能夠快速地掌握其使用方法。同時(shí),我們還對(duì)算法進(jìn)行了優(yōu)化,減少了不必要的計(jì)算開(kāi)銷(xiāo),以確保在高并發(fā)場(chǎng)景下仍然能夠保持高效的性能表現(xiàn)。

    總之,F(xiàn)ireflySoft.RateLimit 是一個(gè)不錯(cuò)的限流類(lèi)庫(kù),其內(nèi)核簡(jiǎn)單輕巧,能夠靈活應(yīng)對(duì)各種需求的限流場(chǎng)景。希望通過(guò)它能夠幫助更多的開(kāi)發(fā)者保護(hù)系統(tǒng)和API免受惡意請(qǐng)求和過(guò)載請(qǐng)求的侵害,同時(shí)也期待與大家一起探索更多可能性和創(chuàng)新點(diǎn)。

功能

  • 多種限流算法:內(nèi)置固定窗口、滑動(dòng)窗口、漏桶、令牌桶四種算法,還可自定義擴(kuò)展。

  • 多種計(jì)數(shù)存儲(chǔ):目前支持內(nèi)存、Redis(含集群)兩種存儲(chǔ)方式。

  • 分布式友好:通過(guò)Redis存儲(chǔ)支持分布式程序統(tǒng)一計(jì)數(shù)。

  • 限流目標(biāo)靈活:可以從請(qǐng)求中提取各種數(shù)據(jù)用于設(shè)置限流目標(biāo)。

  • 支持限流懲罰:可以在客戶端觸發(fā)限流后鎖定一段時(shí)間不允許其訪問(wèn)。

  • 時(shí)間窗口增強(qiáng):支持到毫秒級(jí)別;支持從秒、分鐘、小時(shí)、日期等時(shí)間周期的起始點(diǎn)開(kāi)始。

  • 實(shí)時(shí)限流跟蹤:當(dāng)前計(jì)數(shù)周期內(nèi)已處理的請(qǐng)求數(shù)、剩余允許請(qǐng)求數(shù),以及計(jì)數(shù)周期重置的時(shí)間。

  • 動(dòng)態(tài)更改規(guī)則:支持程序運(yùn)行時(shí)動(dòng)態(tài)更改限流規(guī)則。

  • 自定義錯(cuò)誤:可以自定義觸發(fā)限流后的錯(cuò)誤碼和錯(cuò)誤消息。

  • 普適性:原則上可以滿足任何需要限流的場(chǎng)景。

項(xiàng)目說(shuō)明

項(xiàng)目說(shuō)明
FireflySoft.RateLmit.Core算法、規(guī)則等限流核心控制程序。
FireflySoft.RateLimit.AspNetASP.NET 限流處理器,支持 .NET 4.6.1 及以上版本。
FireflySoft.RateLimit.AspNetCoreASP.NET Core 限流中間件,支持 .NET Core 2.0 及后續(xù)版本。
FireflySoft.RateLimit.Core.UnitTestFireflySoft.RateLimit.Core 的單元測(cè)試。
FireflySoft.RateLimit.Core.BenchmarkTestFireflySoft.RateLimit.Core 的基準(zhǔn)測(cè)試。
Samples/Console使用 FireflySoft.RateLmit.Core 的控制臺(tái)示例程序.
Samples/AspNet使用 FireflySoft.RateLimit.AspNet 的普通示例程序。
Samples/AspNetCore使用 FireflySoft.RateLimit.AspNetCore 的普通示例程序。
Samples/RuleAutoUpdate使用 FireflySoft.RateLimit.AspNetCore 的自動(dòng)更新限流規(guī)則的示例程序。

使用說(shuō)明

ASP.NET Core 應(yīng)用

    1、安裝 Nuget 包,使用包管理器控制臺(tái):

Install-Package FireflySoft.RateLimit.AspNetCore

       或者使用 .NET CLI:

dotnet add package FireflySoft.RateLimit.AspNetCore

       或者直接添加到項(xiàng)目文件中:

<ItemGroup><PackageReference Include="FireflySoft.RateLimit.AspNetCore" Version="2.*" /></ItemGroup>

2、使用中間件

      在Startup.cs中注冊(cè)服務(wù)并使用中間件:

public void ConfigureServices(IServiceCollection services)

{

    ...


    services.AddRateLimit(new InProcessFixedWindowAlgorithm(

        new[] {

            new FixedWindowRule()

            {

                ExtractTarget = context =>

                {

                    // 提取限流目標(biāo)

                    // 這里是直接從請(qǐng)求中提取Path作為限流目標(biāo),還可以多種組合,甚至去遠(yuǎn)程查詢一些數(shù)據(jù)

                    return (context as HttpContext).Request.Path.Value;

                },

                CheckRuleMatching = context =>

                {

                    // 檢查當(dāng)前請(qǐng)求是否要做限流

                    // 比如有些Url是不做限流的、有些用戶是不做限流的

                    return true;

                },

                Name="default limit rule",

                LimitNumber=30, // 限流時(shí)間窗口內(nèi)的最大允許請(qǐng)求數(shù)量

                StatWindow=TimeSpan.FromSeconds(1) // 限流計(jì)數(shù)的時(shí)間窗口

            }

        })

    );


    ...

}


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

{

    ...


    app.UseRateLimit();


    ...

}


 

ASP.NET 應(yīng)用

    1、安裝 Nuget 包,使用包管理器控制臺(tái):

Install-Package FireflySoft.RateLimit.AspNet

    2、注冊(cè)消息處理器,打開(kāi) Global.asax.cs,使用下面的代碼添加限流處理器:

protected void Application_Start()

{

    ...


    GlobalConfiguration.Configuration.MessageHandlers.Add(

        new RateLimitHandler(

            new Core.InProcessAlgorithm.InProcessFixedWindowAlgorithm(

                new[] {

                    new FixedWindowRule()

                    {

                        ExtractTarget = context =>

                        {

                            return (context as HttpRequestMessage).RequestUri.AbsolutePath;

                        },

                        CheckRuleMatching = context =>

                        {

                            return true;

                        },

                        Name="default limit rule",

                        LimitNumber=30,

                        StatWindow=TimeSpan.FromSeconds(1)

                    }

                })

        ));


    ...

}


其它類(lèi)型應(yīng)用

    1、安裝 Nuget 包,使用包管理器控制臺(tái)

Install-Package FireflySoft.RateLimit.Core

       或者 .NET CLI

dotnet add package FireflySoft.RateLimit.Core

    2、使用限流算法,使用 IAlgorithm 過(guò)濾每個(gè)請(qǐng)求, 處理 Check 方法的返回值。

// 定義限流規(guī)則

var fixedWindowRules = new FixedWindowRule[]

{

    new FixedWindowRule()

    {

        Id = "3",

        StatWindow=TimeSpan.FromSeconds(1),

        LimitNumber=30,

        ExtractTarget = (request) =>

        {

            return (request as SimulationRequest).RequestResource;

        },

        CheckRuleMatching = (request) =>

        {

            return true;

        },

    }

};


// 使用限流算法

IAlgorithm algorithm = new InProcessFixedWindowAlgorithm(fixedWindowRules);


// 過(guò)濾請(qǐng)求

var result = algorithm.Check(new SimulationRequest()

{

    RequestId = Guid.NewGuid().ToString(),

    RequestResource = "home",

    Parameters = new Dictionary<string, string>() {

                { "from","sample" },

        }

});


      SimulationRequest是一個(gè)自定義請(qǐng)求,你可以把它修改為任何適合自己的請(qǐng)求類(lèi)型。

地址

      https://github.com/bosima/FireflySoft.RateLimit

總結(jié)

    FireflySoft.RateLimit 是一個(gè)功能強(qiáng)大且靈活的速率限制庫(kù),適用于多種應(yīng)用場(chǎng)景。

    通過(guò)提供多種算法和策略、支持分布式系統(tǒng)、易于配置和擴(kuò)展等特點(diǎn),使得用戶能夠輕松地實(shí)現(xiàn)API請(qǐng)求的速率控制,保護(hù)系統(tǒng)免受惡意請(qǐng)求或過(guò)載請(qǐng)求的侵害。

    同時(shí),該庫(kù)還提供了簡(jiǎn)潔明了的API和示例代碼,使得用戶能夠快速上手并集成到現(xiàn)有系統(tǒng)中。


轉(zhuǎn)自https://www.cnblogs.com/1312mn/p/18264444 作者小碼編匠


該文章在 2024/6/26 10:33:37 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved