Token Bucket
μ΄ μκ³ λ¦¬μ¦μ ν΅μ¬ μμ΄λμ΄λ, "μμ²μ μ²λ¦¬ν μ μλ ν ν°(Token)μ 미리 μ ν΄μ§ μλλ‘ λ²ν·(Bucket)μ μ±μλκ³ , μμ²μ΄ λ€μ΄μ¬ λλ§λ€ ν ν°μ μλͺ¨νμ¬ μμ²μ μ²λ¦¬νλ λ°©μ" μ΄λ€.
κ°λ¨νκ² λΉμ νλ©΄, μΆ©μ μ κ΅ν΅μΉ΄λμ λΉμ·νλ€.
λ²ν·(Bucket): κ΅ν΅μΉ΄λ. μΉ΄λμ μΆ©μ ν μ μλ μ΅λ κΈμ‘(ν ν°)μ΄ μ ν΄μ Έ μλ€.
ν ν°(Token): κ΅ν΅μΉ΄λμ μΆ©μ λ μμ‘μ΄λ€.
ν ν° κ³΅κΈκΈ°(리νμλ, Refiller): μΌμ μκ°λ§λ€(μ: 1μ΄μ 1,000μμ©) μΉ΄λμ μμ‘μ μλμΌλ‘ μΆ©μ νλ μ₯μΉ
κ΅ν΅μΉ΄λμ μμ‘(ν ν°)μ΄ μμ΄μΌλ§ λ²μ€λ₯Ό ν μ μκ³ , μμ‘μ΄ μμΌλ©΄ ν μ μλ€. μΉ΄λλ κ³μν΄μ μλμΌλ‘ μΆ©μ λμ§λ§, μ΅λ μΆ©μ νλ(λ²ν· ν¬κΈ°)λ₯Ό λμ΄μλ κΈμ‘μ΄ μμ΄μ§λ μλλ€.
λμ λ°©μ
λ²ν· μμ±: κ° μ¬μ©μ(λλ IP)λ§λ€ μ ν΄μ§ ν¬κΈ°(Capacity)μ λ²ν·μ λ§λ λ€. μ΄ λ²ν·μ ν ν°μ λ΄λ μν μ νλ€.
ν ν° κ³΅κΈ: μ ν΄μ§ μλ(Refill Rate)λ‘ λ²ν·μ ν ν°μ μ£ΌκΈ°μ μΌλ‘ μΆκ°νλ€. μλ₯Ό λ€μ΄, "1μ΄μ 1κ°μ© ν ν°μ μΆκ°"νλ λ°©μμ΄λ€. λ²ν·μ΄ κ°λ μ°¨ μλ€λ©΄ λ μ΄μ ν ν°μ μΆκ°λμ§ μλλ€.
μμ² μ²λ¦¬ λ° ν ν° μλͺ¨: μμ²μ΄ λ€μ΄μ€λ©΄, λ²ν·μ ν ν°μ΄ μλμ§ νμΈνλ€.
νλ νμΈ:
νμ© (Allow): λ²ν·μ 1κ° μ΄μμ ν ν°μ΄ μλ€λ©΄, ν ν° 1κ°λ₯Ό μ¬μ©νκ³ μμ²μ μ²λ¦¬νλ€.
κ±°λΆ (Deny): λ²ν·μ ν ν°μ΄ μλ€λ©΄, μμ²μ κ±°λΆνλ€.
π μ₯μ
μ μ°ν νΈλν½ μ μ΄ (Burst νΈλν½ νμ©): μμ²μ΄ μλ λμ ν ν°μ΄ λ²ν·μ κ³μ μμΈλ€. λλΆμ μ¬μ©μλ μκ°μ μΌλ‘ λͺ°λ¦¬λ μμ²(Burst) μ λͺ¨μλ ν ν°λ§νΌ μ²λ¦¬ν μ μλ€. μλ₯Ό λ€μ΄, 1μ΄μ 1κ°μ© ν ν°μ΄ μ±μμ§κ³ λ²ν· ν¬κΈ°κ° 10μ΄λΌλ©΄, 10μ΄ λμ μμ²μ΄ μλ€κ° νμκ°μ 10κ°μ μμ²μ 보λ΄λ λͺ¨λ μ²λ¦¬λλ€. μ΄λ μ 체 νκ· μμ²λ₯ μ μ μ§νλ©΄μλ μΌμμ μΈ νΈλν½ νμ¦μ μ μ°νκ² λμν μ μκ² ν΄μ€λ€.
μ§κ΄μ μΈ λ‘μ§: μκ³ λ¦¬μ¦μ λμ λ°©μμ΄ "ν ν°μ μ±μ°κ³ , μ¬μ©νλ€"λ κ°λ μΌλ‘ λ§€μ° μ§κ΄μ μ΄μ΄μ μ΄ν΄νκΈ° μ½λ€.
λμ μμΈ‘ κ°λ₯μ±: ν ν°μ΄ μ±μμ§λ μλκ° κ³ μ λμ΄ μμ΄, μ₯κΈ°μ μΌλ‘ μμ€ν μ΄ μ²λ¦¬ν μ μλ νκ· μμ²λμ μμΈ‘νκΈ° μ½λ€.
π λ¨μ
ꡬν 볡μ‘μ±: μ¬λ¬ μνλ₯Ό ν¨κ» κ΄λ¦¬ν΄μΌ νλ€. κ° μ¬μ©μλ§λ€ λ²ν· ν¬κΈ°(Capacity), νμ¬ ν ν° μ(Token Count), κ·Έλ¦¬κ³ λ§μ§λ§ ν ν° λ¦¬ν μκ°(Last Refill Timestamp) μ΄λΌλ 3κ°μ§ μνλ₯Ό λͺ¨λ κΈ°λ‘νκ³ κ΄λ¦¬ν΄μΌ νλ―λ‘ κ΅¬νμ΄ μλμ μΌλ‘ 볡μ‘ν μ μλ€.
λ©λͺ¨λ¦¬ μ¬μ©λ: κ΄λ¦¬ν΄μΌ ν μνκ° λ§κΈ° λλ¬Έμ, μ¬μ©μ μκ° λ§μμ§μλ‘ λ λ§μ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νκ² λλ€.
π₯ κ²°κ³Ό: ν ν° λ²ν· μκ³ λ¦¬μ¦μ μκ°μ μΈ νΈλν½ νμ¦μ νμ©νλ©΄μλ μ 체μ μΈ νκ· μμ²λ₯ μ μ μ΄νκ³ μΆμ λ λ§€μ° ν¨κ³Όμ μΈ λ°©μμ΄λ€. API κ²μ΄νΈμ¨μ΄λ λ€νΈμν¬ νΈλν½ μ μ΄ λ±μμ λ리 μ¬μ©λλ μ κ΅ν Rate Limiting κΈ°λ² μ€ νλμ΄λ€.
Last updated