「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ThrottleX によるレート制限

ThrottleX によるレート制限

2024 年 11 月 2 日に公開
ブラウズ:912

Rate Limiting with ThrottleX

クイックリンク:

  • GitHub リポジトリ
  • Wiki ドキュメント

導入

オープンソース愛好家と Go 愛好家の皆さん、こんにちは!私のオープンソース プロジェクト、API の分散レート リミッタである ThrottleX の概要を説明します。私はこのオープンソースの世界にはまだ慣れていないので、アドバイスはいつでも大歓迎です。 ?

ThrottleX は、API トラフィックを効果的に管理し、システムをスムーズかつ公平に保つように構築されています。悪用の防止や高負荷の処理など、ThrottleX が対応します。 ThrottleX を強力にするレート制限アルゴリズムのいくつかを見てみましょう。 ?

レート制限アルゴリズムの説明 ?‍?

ThrottleX には、API トラフィックの管理に役立つ 3 つのコア アルゴリズムが詰め込まれています。

1. 固定ウィンドウレート制限

仕組み: 時間を一定の間隔に分割することを想像してください。各間隔中に、固定数のリクエスト (たとえば、1 分あたり 100 リクエスト) を許可します。ウィンドウが閉じると、カウンターはリセットされます。

ユースケース: 予測可能なトラフィック パターンには最適ですが、ウィンドウの終わりに近い多くのリクエストが意図したレート制限をバイパスする可能性がある「境界問題」に注意してください。

2. スライディング ウィンドウ レート制限

仕組み: これは移動平均のようなものです。各ウィンドウの終わりに完全にリセットするのではなく、レート制限が時間とともに「スライド」するため、よりスムーズな制御が可能になります。

ユースケース: 急増を回避し、リクエストをより均等に分散するのに最適です。

3. トークンバケットレート制限

仕組み: 一定の速度でトークンがいっぱいになるバケツを想像してください。リクエストはトークンを消費し、バケットが空の場合、バケットが補充されるまでリクエストはブロックされます。

ユースケース: トークンが蓄積されている場合に、突然のトラフィックのバーストを許可するのに最適です。

使用例 ?️

固定ウィンドウ レート リミッターを使用した簡単な例を次に示します:

package main

import (
    "github.com/neelp03/throttlex/ratelimiter"
    "github.com/neelp03/throttlex/store"
    "time"
    "fmt"
)

func main() {
    // Initialize an in-memory store and a Fixed Window rate limiter
    memStore := store.NewMemoryStore()
    limiter, err := ratelimiter.NewFixedWindowLimiter(memStore, 10, time.Minute)
    if err != nil {
        fmt.Println("Failed to create limiter:", err)
        return
    }

    // Simulate API requests
    key := "user1"
    for i := 0; i 



期待される出力:

Request 1 allowed
Request 2 allowed
... (up to 10 allowed)
Request 11 blocked
Request 12 blocked
... (up to 15 blocked)

ThrottleX の次は何ですか? ?

  • 優先レート制限: ユーザーごとに異なる優先順位。
  • 動的レート制限: サーバーの負荷に基づいて制限を調整します。
  • 同時実行制限: 同時リクエストを管理します。

ThrottleX をさらに強力にする今後のアップデートにご期待ください!

どのように貢献できるでしょうか?

私はオープンソースについてはまだ初心者ですが、ぜひこの取り組みに参加していただきたいと思っています。バグ修正、提案、ドキュメントの改善など、貢献はいつでも歓迎されます。

リポジトリ: ThrottleX GitHub リポジトリをチェックし、役立つと思われる場合はスターを付けてください。気軽に問題を開いたり、リクエストをプルしたりしてください。どんな些細なことでも役に立ちます!

最終的な考え

ThrottleX は、API レート制限をよりアクセスしやすく効率的にするための私の試みです。楽しく(そして苦痛を減らして)やりましょう! ?

リリースステートメント この記事は次の場所に転載されています: https://dev.to/neelp03/rate-limiting-with-throttlex-26df?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3