[λμμ±] Java, Database, Redis, Kafka λ°©μ μ±λ₯ λΉκ΅
π λμμ± μ μ΄ λ°©μ λΉκ΅
Series
β οΈ
λ‘컬μμ ν μ€νΈν κ²°κ³Όμ΄κ³ ,
μλ² νκ²½κ³Ό μ¬λ¬ μμΈλ€μ μν΄ κ²°κ³Όκ° λ¬λΌμ§ μ μκ³ , μ ννμ§ μμ μ μμ΅λλ€.
Case 01
νμ μλ : 50,000
- Total User :
296
- Processes :
8
- Threads :
37
(DB Named λ°©μμ μ μΈ)
.
μκ° λ΄μ λͺ¨λ νΈλν½μ μ±κ³΅μ μΌλ‘ μ²λ¦¬ν λ°©μ
- DB Pessimistic
- Redis Incr
- Kafka + Redis
.
μΌλΆ μ±κ³΅μ νκΈ΄ νμμ§λ§, νΈλν½μ λ²ν°μ§ λͺ»νκ³ μ±λ₯ λ¬Έμ κ° λ°μν λ°©μ (μ±λ₯ λ¬Έμ κ° λ°μν κ°μΈμ μΈ μκ°λ λ΄μ보μλ€.)
- DB Optimistic β μΆ©λ μ²λ¦¬ λΉμ© (μΆ©λ μ ν΄λΉ νΈλμμ μ¬μλ) μΌλ‘ μΈν μ±λ₯ μ ν
- DB Named β 컀λ₯μ ν λΆμ‘±μΌλ‘ μΈν DeadLock λ°μ λ° μ±λ₯ μ ν
- Redis Lettuce β Spin Lock λ°©μ (λ°λ³΅μ μΌλ‘ νμΈνλ©΄μ λ½ νλμ μλ) μΌλ‘ μΈν CPU λΆν
- Redis Redisson β λ΄λΆμ μΌλ‘ ꡬνλ μ¬μλ λ‘μ§ (νΉμ κ°κ²©μΌλ‘ μ¬μλ) μμ λ°μνλ λΆν
.
λ‘컬 PCμμ λ²νΈ μ μλ νΈλν½μ΄ μλλΌμ κ²°κ³Όκ° νμ€κ³Όλ λ€λ₯Ό μλ μμ§λ§,
μ²μ κ²°κ³Όλ₯Ό 보μμ λ λΉ λ₯Έ μ±λ₯μ μλνλ Redis μ Lettuce, Redisson λ°©μμ΄ μ±λ₯ μ ν μ΄μκ° μμ μ€μ λͺ°λλ€.
λ½ νλμ μν μ¬μλ λ‘μ§μΌλ‘ μΈν΄μ λ°μνλ μ±λ₯ μ νμΌ μλ μμ κ²μ΄λΌλ μκ°μ΄ λ λ€.
Case 02
νμ μλ : 1,000
- Total User :
99
- Processes :
3
- Threads :
33
.
μκ° λ΄μ λͺ¨λ νΈλν½μ μ±κ³΅μ μΌλ‘ μ²λ¦¬ν λ°©μ
- DB Pessimistic
- DB Optimistic
- Redis Incr
- Redis Lettuce
- Redis Redisson
- Kafka + Redis
.
μΌλΆ μ±κ³΅μ νκΈ΄ νμμ§λ§, νΈλν½μ λ²ν°μ§ λͺ»νκ³ μ±λ₯ λ¬Έμ κ° λ°μν λ°©μ
- DB Named β 컀λ₯μ ν λΆμ‘±μΌλ‘ μΈν DeadLock λ°μ λ° μ±λ₯ μ ν
.
νμ μλμ΄ 50,000 κ±΄μΌ κ²½μ°μ λΉν΄ λλΆλΆμ λ°©μμ΄ μ±κ³΅μ μΌλ‘ λͺ¨λ νΈλν½μ μ²λ¦¬ν κ²μ λ³Ό μ μλ€.
μ κ²°κ³Όλ€μ ν΅ν΄ μ§κ·Ήν κ°μΈμ μΈ μκ°μΌλ‘ κ° λ°©μμ λν κ²°λ‘ μ λ΄λ³΄λ €κ³ νλ€.
Compare
Java
- Java Async
- λμμ± μ΄μ μ¬λ‘μ νλ³Έ
- Java Sync
- μλ²κ° 2λ μ΄μμΌ κ²½μ° λμμ± μ΄μ λ°μ
μ€λ¬΄μμ λμμ± μ²λ¦¬μ
μ λ μ¬μ©ν μ μλ
λ°©μ.
Database
- Databse Pessimistic Lock
- μΆ©λμ΄ λΉλ²νκ² λ°μν μ μλ μν©μ΄κ±°λ
- λ°μ΄ν°λ² μ΄μ€μ λΆνκ° μ¬ μ λμ λμ νΈλν½μ 견λμΌ νλ μν©μ΄ μλλΌλ©΄ μ ν©νλ€κ³ μκ°
- Databse Optimistic Lock
- μ λΉν νΈλν½μμλ μ¬μ©ν λ§ νμ§λ§,
- Ramp-Up ν μ€νΈλ₯Ό ν΅ν΄ μΌλ§νΌ λ²νΈ μ μμμ§ κ²μ¦μ΄ νμ
- Databse Named Lock
- 컀λ₯μ ν λΆμ‘± νμμΌλ‘ μ€λ¬΄μμ μ μ©μ μ΄λ €μ 보μ
κ°μΈμ μΌλ‘ λ°μ΄ν°λ² μ΄μ€μ λ½μ μ μ©νλ λ°©μμ
κ°μ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλ λ€λ₯Έ μλΉμ€μ μ±λ₯ μ΄μλ₯Ό μ νν μ μλ€κ³ μκ°ν΄μ
λλμ νΈλν½
μ 견λμΌ νλ μν©μ΄λΌλ©΄Redis
,Kafka
λ₯Ό νμ©νκ³
μλμ νΈλν½
λ§ κ²¬λλ λλ μν©μ΄λΌλ©΄Pessimistic Lock
μ μ μ©νλκ² μ μ νλ€κ³ μκ°
Redis
- Redis Incr
- κ°μ₯ μ’μ μ±λ₯μ 보μ
- λ©λͺ¨λ¦¬ κΈ°λ°μ΄κ³ μλ²κ° μ¬μμλκ±°λ μ₯μ λ°μ μ λ°μ΄ν° μ μ€ κ°λ₯μ±μ΄ μ‘΄μ¬νλ λ¨μ
- Redis Lettuce / Redisson
- μ¬μλ λ‘μ§μΌλ‘ μΈν λΆνλ‘ λλμ νΈλν½μμ μ’μ μ±λ₯μ λΌ μλ μμ κ² κ°μ
- λΆμ°λ½μ νκ³λ μ‘΄μ¬ β λ λμ€κ° μ 곡νλ λΆμ°λ½(RedLock)μ νΉμ§κ³Ό νκ³
- Ramp-Up ν μ€νΈλ₯Ό ν΅ν΄ μΌλ§νΌμ νΈλν½μμ μ±λ₯μ λΌ μ μμμ§ κ²μ¦μ΄ νμ
Redis Incr
λ°©μμ λ°μ΄ν°κ° μ μ€λλ μν©μ λν λλΉλ§ μ λμ΄μλ€λ©΄ κ°μ₯ μ’μ λ°©μμ΄λΌκ³ μκ°
Kafka
- Kafka + Redis
- μκ³κ° μ μ΄μ λΉμ¦λμ€ λ‘μ§ μ²λ¦¬μ μν μ λΆλ¦¬
- λΆνκ° λΆμ°λλ―λ‘ λλμ νΈλν½μ μ ν©ν λ°©μμ΄λΌκ³ μκ°
Redis Inc
λ°©μμ νμ©νμ§λ§, λλΆλΆμ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬ μκ°μ΄ λ€μ μμλλ€ λ³΄λμκ³κ° μ μ΄λ Redisμμ μ²λ¦¬νκ³ , λΉμ¦λμ€ λ‘μ§μ Kafka Consumerκ° μ²λ¦¬νλ©΄μ
λΆνλ₯Ό λΆμ°μμΌ μ±λ₯μ ν₯μμν¬ μ μλ κ°μ₯ μ’μ λ°©λ²μ΄λΌκ³ μκ°