Leaky Bucket
μ΄ μκ³ λ¦¬μ¦μ ν΅μ¬ μμ΄λμ΄λ, "μμ²μ 'ν(Queue)'μ λ΄μλκ³ , μ ν΄μ§ μ²λ¦¬ μλ(Rate)μ λ§μΆ° μμλλ‘ μΌμ νκ² μ²λ¦¬νλ λ°©μ" μ
λλ€. ν΅μ¬μ 'νκ· μλ'κ° μλλΌ 'κ³ μ λ μλ'λ‘ μμ²μ μ²λ¦¬νμ¬ νΈλν½μ ννν(smoothing)νλ λ° μμ΅λλ€.
μ΄λ¦ κ·Έλλ‘ "ꡬλ©μ΄ μ(Leaky) μλμ΄"μ λΉμ ν μ μμ΅λλ€.
μλμ΄ (Bucket): μμ²μ μμλλ‘ λ΄λ ν(Queue)μ λλ€. (μ ν΄μ§ ν¬κΈ° μ‘΄μ¬)
λ¬Ό (Water): μμ€ν μ λ€μ΄μ€λ μμ²μ λλ€. (λΆκ·μΉνκ² λ€μ΄μ¬ μ μμ)
κ΅¬λ© (Leak): μ ν΄μ§ μλ(μ: 1μ΄μ 1κ°)λ‘ μμ²μ μ²λ¦¬νλ μ₯μΉμ λλ€. λ¬Όμ΄ μΌμ ν μλλ‘λ§ λΉ μ Έλκ°λλ€.
λμΉ¨ (Overflow): μμ²μ΄ λ무 빨리 λ€μ΄μ μλμ΄(ν)κ° κ°λ μ°¨λ©΄, μλ‘ λ€μ΄μ€λ λ¬Ό(μμ²)μ λ²λ €μ§λλ€(κ±°λΆ).
λμ λ°©μ
ν(Queue) μμ±: μ ν΄μ§ ν¬κΈ°(Capacity)λ₯Ό κ°μ§ FIFO(First-In, First-Out) νλ₯Ό μμ±ν©λλ€.
μμ² μμ λ° ν μΆκ°: μμ²μ΄ λ€μ΄μ€λ©΄, νμ λΉ κ³΅κ°μ΄ μλμ§ νμΈν©λλ€.
κ³΅κ° μμ (Allow): νμ 맨 λ€μ μμ²μ μΆκ°ν©λλ€.
κ³΅κ° μμ (Deny): νκ° κ°λ μ°ΌμΌλ―λ‘, μλ‘μ΄ μμ²μ κ±°λΆ(Overflow)ν©λλ€.
μΌμ ν μλλ‘ μ²λ¦¬: λ³λμ μ²λ¦¬κΈ°(Processor)κ° νμ 맨 μμμλΆν° κ³ μ λ μλ(μ: 1μ΄λΉ 1κ°)λ‘ μμ²μ κΊΌλ΄μ΄ μ²λ¦¬ν©λλ€.
μ΄ μ²λ¦¬ μλλ μμ²μ΄ μΌλ§λ λ§μ΄ νμ μμ¬μλμ§μ κ΄κ³μμ΄ νμ μΌμ ν©λλ€.
π μ₯μ
μμ μ μΈ νΈλν½ μ²λ¦¬ (νΈλν½ ννν): μ΄ μκ³ λ¦¬μ¦μ κ°μ₯ ν° μ₯μ μ λλ€. μμ²μ΄ μκ°μ μΌλ‘ νμ£Ό(Burst)νλλΌλ, μ€μ μμ€ν (μλ²)μ νμ μΌμ ν μλλ‘ μμ²μ λ°κ² λ©λλ€. μ΄λ₯Ό ν΅ν΄ μμ€ν μ κ³ΌλΆνλ‘λΆν° μμ μ μΌλ‘ 보νΈν μ μμ΅λλ€.
μμΈ‘ κ°λ₯μ±: μμ€ν μ΄ μ²λ¦¬νλ μμ² μλκ° κ³ μ λμ΄ μμ΄, λΆνλ₯Ό λ§€μ° μ½κ² μμΈ‘νκ³ κ΄λ¦¬ν μ μμ΅λλ€.
μμ² μμ 보μ₯: FIFO νλ₯Ό μ¬μ©νλ―λ‘, νμ λ€μ΄μ¨ μμ²μ μμλλ‘ μ²λ¦¬λ©λλ€.
π λ¨μ
λ²μ€νΈ νΈλν½ λΆν: ν ν° λ²ν·κ³Ό μ λ°λλλ λ¨μ μ λλ€. μμ€ν μ΄ μ€λ«λμ μ ν΄ μνμ¬μ μ²λ¦¬ μ¬λ ₯μ΄ λ¨μμμ΄λ, μκ°μ μΌλ‘ λͺ°λ¦° μμ²μ μ ν΄μ§ μλλ³΄λ€ λΉ λ₯΄κ² μ²λ¦¬ν μ μμ΅λλ€.
μμ² μ§μ° (Latency): λͺ¨λ μμ²μ μ¦μ μ²λ¦¬λμ§ μκ³ μΌλ¨ νμ λκΈ°ν΄μΌ ν©λλ€. νκ° κΈΈμ΄μ§μλ‘ μμ²μ΄ μ²λ¦¬λκΈ°κΉμ§μ λκΈ° μκ°(Latency)μ΄ κΈΈμ΄μ§λλ€.
μ€λλ μμ² λ¬Έμ (Stale Request): νμ μμ²μ΄ λ무 μ€λ 머무λ₯΄λ©΄, λ§μ μ²λ¦¬λ μμ μλ μ΄λ―Έ νμμμ λ±μΌλ‘ μΈν΄ μλ―Έ μλ μμ²μ΄ λ μ μμ΅λλ€.
π₯ κ²°κ³Ό: Token Bucketκ³Ό ν΅μ¬ μ°¨μ΄
λ μκ³ λ¦¬μ¦μ λΉμ·ν΄ 보μ΄μ§λ§ λͺ©μ μ΄ λ€λ¦ λλ€.
ν ν° λ²ν· (Token Bucket): "νκ· μλ"λ₯Ό μ μ΄νλ©°
λ²μ€νΈ(Burst)λ₯Ό νμ©ν©λλ€. (ν ν°μ΄ λͺ¨μ¬μμΌλ©΄ ν λ²μ μ¬μ© κ°λ₯)λ¦¬ν€ λ²ν· (Leaky Bucket): "κ³ μ λ μΆλ ₯ μλ"λ₯Ό κ°μ νλ©°
λ²μ€νΈλ₯Ό ννν(Smoothing)ν©λλ€. (μμ²μ΄ μ무리 λ§μλ μ²λ¦¬ μλλ μΌμ )
Last updated