Sliding Window Log
Sliding Window Counterλ μμ§μ΄λ μκ° κ΅¬κ°μ μ μ§νμ§λ§, Sliding Window Logλ μκ° λ¨μλ₯Ό μΈλ°νκ² μ μ΄νλ€. μΆμ νλ κ²μ΄ μλλΌ, μ€μ λͺ¨λ κΈ°λ‘μ μΌμΌμ΄ νμΈνμ¬ κ°μ₯ μ ννκ² νλ¨νλ€.
λ‘κ·Έ (Log): κ° μμ²μ΄ λ€μ΄μ¨ μ νν μκ°(νμμ€ν¬ν)μ μμλλ‘ λͺ¨λ μ μ₯νλ€.
μ¬λΌμ΄λ© μλμ° (Sliding Window): νμ 'νμ¬ μκ°'μ κΈ°μ€μΌλ‘, κ³Όκ±°μ νΉμ μκ° λ²μ(μ: μ§λ 1λΆ)λ₯Ό λμ μΌλ‘ μ€μ νλ€.
μ νν μΉ΄μ΄νΈ (Precise Count): μ΄ λμ μκ° λ²μ μμ ν¬ν¨λ λ‘κ·Έ(νμμ€ν¬ν)μ κ°μλ₯Ό μ νν μΌλ€.
ν΅μ¬ μμ΄λμ΄
μ΄ μκ³ λ¦¬μ¦μ ν΅μ¬ μμ΄λμ΄λ, "νμ¬ μκ°μ κΈ°μ€μΌλ‘ μ§λ μλμ° μκ° λμ λ°μν λͺ¨λ μμ²μ νμμ€ν¬νλ₯Ό μ€μ λ‘ κΈ°λ‘νκ³ , κ·Έ κΈ°λ‘μ κ°μλ₯Ό μΈμ΄ νλλ₯Ό μ μ΄νλ κ²" μ΄λ€.
λμ λ°©μ
νμμ€ν¬ν κΈ°λ‘: μμ²μ΄ λ€μ΄μ€λ©΄, νμ¬ μκ°μ νμμ€ν¬νλ‘ λ³ννμ¬ λ‘κ·Έ(λ³΄ν΅ Redisμ Sorted Set κ°μ μλ£κ΅¬μ‘°)μ μ μ₯νλ€.
μ€λλ λ‘κ·Έ μ κ±°: νμ¬ μλμ°μ μμ μκ°λ³΄λ€ μ€λλ νμμ€ν¬ν λ‘κ·Έλ λͺ¨λ μμ νμ¬ νμ μ΅μ λ‘κ·Έλ§ μ μ§νλ€.
λ‘κ·Έ κ°μ μΉ΄μ΄νΈ: νμ¬ μλμ° λ²μ λ΄μ λ¨μμλ λ‘κ·Έμ μ΄κ°μλ₯Ό μΌλ€.
νλ νμΈ: μ΄ κ°μκ° μ€μ λ νλ(Limit)λ³΄λ€ μμμ§ νμΈνλ€.
νμ© (Allow): νλ μ΄λ΄λΌλ©΄ μμ²μ μ²λ¦¬νλ€. (1λ² λ¨κ³μμ μ΄λ―Έ λ‘κ·Έλ κΈ°λ‘λμμ)
κ±°λΆ (Deny): νλλ₯Ό μ΄κ³Όνλ€λ©΄, λ°©κΈ κΈ°λ‘ν νμμ€ν¬νλ₯Ό λ€μ μμ νκ³ μμ²μ κ±°λΆνλ€.
π μ₯μ
μλ²½ν μ νμ±: λͺ¨λ μμ²μ κΈ°λ‘νκ³ μΈκΈ° λλ¬Έμ, μΆμ λ°©μμμ λ°μνλ μ€μ°¨κ° μ ν μλ€. μ΄λ‘ μ μΌλ‘ κ°μ₯ μλ²½ν Rate Limitingμ μ 곡νλ€.
μ μ°μ±: μλμ° κ²½κ³ λ¬Έμ κ° μμ μ‘΄μ¬νμ§ μμΌλ©°, μ΄λ€ νΈλν½ ν¨ν΄μλ μ ννκ² λμνλ€.
π λ¨μ
λμ λ©λͺ¨λ¦¬ λΉμ©:
μλμ° λ΄μ
λͺ¨λ μμ² νμμ€ν¬νλ₯Ό μ μ₯ν΄μΌ νλ€.λ§μ½ λΆλΉ 10,000κ°μ μμ²μ νμ©νλ€λ©΄, μ¬μ©μ ν λͺ λΉ μ΅λ 10,000κ°μ νμμ€ν¬ν λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬μ μ μ§ν΄μΌ νλ―λ‘ λΉμ©μ΄ λ§€μ° λΉμΈλ€.
κ³μ° λΆν:
μμ²λ§λ€ λ‘κ·Έλ₯Ό μΆκ°νκ³ , λ²μλ₯Ό κ³μ°νμ¬ κ°μλ₯Ό μΈλ κ³Όμ μμ μ½κ°μ κ³μ° λΆνκ° λ°μν μ μλ€.
μμ
κ·μΉ: 1λΆλΉ 10κ°μ μμ² νμ© (Window ν¬κΈ° = 60μ΄, Limit = 10)
μν©: νμ¬ μκ°
12:01:15. μ§λ 1λΆ λμ λ€μκ³Ό κ°μ μμ² κΈ°λ‘(νμμ€ν¬ν)μ΄ λ‘κ·Έμ μ μ₯λμ΄ μμ[12:00:20, 12:00:35, 12:00:58, 12:00:59, 12:01:01, 12:01:05, 12:01:10]
μλ‘μ΄ μμ² λμ°©:
12:01:15μ μλ‘μ΄ μμ²μ΄ 1κ° λ€μ΄μ¨λ€.μκ³ λ¦¬μ¦μ νλ¨:
νμ¬ μλμ° λ²μ μ€μ :
12:00:15~12:01:15λ²μ λ΄ λ‘κ·Έ νν°λ§: κΈ°μ‘΄ λ‘κ·Έ μ€ μ΄ λ²μμ ν΄λΉνλ κΈ°λ‘λ§ νμΈνλ€.
[12:00:20, 12:00:35, 12:00:58, 12:00:59, 12:01:01, 12:01:05, 12:01:10]-> μ΄ 7κ°
μΉ΄μ΄νΈ νμΈ: νμ¬ λ‘κ·Έ κ°μλ 7κ°λ‘, νλ 10κ°λ³΄λ€ μλ€.
μ²λ¦¬: μμ²μ νμ©νκ³ , μλ‘μ΄ νμμ€ν¬ν
12:01:15λ₯Ό λ‘κ·Έμ μΆκ°νλ€.[..., 12:01:05, 12:01:10, 12:01:15]
Last updated