Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GoのRateLimit処理の実装

matumoto
March 19, 2023

 GoのRateLimit処理の実装

2023/03/19に行われた日大Joken&会津大Zli 合同LTでの発表資料です

イベントページはこちら

- https://zli.connpass.com/event/277175/

matumoto

March 19, 2023
Tweet

More Decks by matumoto

Other Decks in Technology

Transcript

  1. • 学年:28期(学部3年) • 所属:会津大学コンピュータ理工学部 • 今興味のある技術:Goʕ◔ϖ◔ʔ • 趣味: ◦ ゲームしたりマンガ読んだり

    ▪ 最近モンハンで傀異Lv199になりました ▪ イカᔦꙬᔨもやっています ◦ 競プロ ▪ 春休み中、平日21時にくじかつしてます • Twitter:@matumoto_1234 matumoto 松本 響輝 自己紹介
  2. そもそもRateLimitってなに • APIとかでの回数制限的なやつ • APIを呼びすぎてしまうのを防ぐ目的でつけられてたりすることが多い • 例. ◦ Twitter:1日で2400ツイート ◦

    Slack:メッセージの投稿は1秒に1回 ◦ GitHub:検索クエリは1分で30リクエスト これがサーバー側で 設定されてないと大量のリクエストで爆発してしまう 🤯
  3. トークンバケットについて • トークン、バーストという概念がある • トークン := 受付可能な残りリクエスト数 • バースト :=

    1秒間に受付可能な最大リクエスト数 • トークンは1リクエストにつき1個消費する • トークンは1秒につき r 個補充される • リクエストが来た段階でトークンがなくなっていた場合、トークンが補充されるまで待つ