タグ

ブックマーク / christina04.hatenablog.com (2)

  • 様々なrate limitアルゴリズム - Carpe Diem

    概要 インターネットに晒されているWebサービスでは TV等で紹介されたことによる大量流入 悪意ある人物からの攻撃 クライアントのバグに依る大量リクエスト など、来想定していた以上のトラフィックが来ることはよくあります。 単純にシステムを構築すると大規模トラフィックに対応できずシステムがスローダウンしてしまうため、何かしらrate limitをかけておいた方が良いです。 ただしrate limitと一口に入っても色々あるため、今回は主なrate limitアルゴリズムを紹介します。 Leaky bucket Leaky bucketはデータ転送レートを一定にする(=上限を設定する)アルゴリズムです。 下の図のように、様々な流量の水流がそのバケツに流れ込んでも小さな穴からは一定の水流が流れ出す仕組みです。 ref: What is the difference between token

    様々なrate limitアルゴリズム - Carpe Diem
    raimon49
    raimon49 2019/11/11
    勉強になった。
  • Goのcontext.Contextはいつ使うべきか - Carpe Diem

    概要 go 1.7からcontextパッケージが標準パッケージになりました。 タイムアウト、キャンセルなどのハンドリングができることから、ブロッキングする処理や外部APIリクエストなどを扱う時は基的に第一引数に置くべきです。 またAPIやプロセス間通信のリクエストスコープの値を引き継がせる際にも利用されます。 例えばgoogleAPIを叩くコードでは全ての関数にcontextが引数に存在します。 github.com ブログでもこのように言っています。 At Google, we require that Go programmers pass a Context parameter as the first argument to every function on the call path between incoming and outgoing requests. ref:

    Goのcontext.Contextはいつ使うべきか - Carpe Diem
  • 1