📊 동시성 제어 방식 비교SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency Control⚠️ 로컬에서 테스트한 결과이고,서버 환경과 여러 요인들에 의해 결과가 달라질 수 있고, 정확하지 않을 수 있습니다.Case 01한정수량 : 50,000Total User : 296Processes : 8Threads : 37(DB Named 방식은 제외).시간 내에 모든 트래픽을 성공적으로 처리한 방식DB PessimisticRedis IncrKafka + Redis.일부 성공을 하긴 하였지만, 트래픽을 버티지 못하고 성능 문제가 발생한 ..
🎯 Redis Concurrency ControlRace Condition경쟁상태는 두 개 이상의 스레드가 공유 데이터에 액세스 할 수 있고, 동시에 변경을 하려고 할 때 발생하는 문제Race Condition 으로 동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서실제 갱신이 누락되는 현상이 발생SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency Control🏹 Redis incrRedis의 INCR 명령을 이용하여 특정 키의 값을 원자적으로 증가시키면서카운터나 임계값 제어 등의 작업에 사용하는 방법정의.Redis는 빠..
🎯 DataBase Concurrency ControllRace Condition경쟁상태는 두 개 이상의 스레드가 공유 데이터에 액세스 할 수 있고, 동시에 변경을 하려고 할 때 발생하는 문제Race Condition 으로 동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서실제 갱신이 누락되는 현상이 발생SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency ControlDatabase Lock데이터베이스 락의 종류데이터베이스 락(Lock)의 종류와 역할공유 락(Shared Lock, Read Lock)데이터를 변경하지 않는 ..
🎯 Java Concurrency ControlRace Condition경쟁상태는 두 개 이상의 스레드가 공유 데이터에 액세스 할 수 있고, 동시에 변경을 하려고 할 때 발생하는 문제Race Condition 으로 동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서실제 갱신이 누락되는 현상이 발생SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency Control🏹 Java Asynchronous동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서 실제 갱신이 누락before: 100, after: 99 // 갱신 전 값..
Python Multiprocessing GIL(Global Interpreter Lock) 파이썬에서는 하나의 프로세스 안에 모든 자원의 Lock을 Global하게 관리함으로써 한번에 하나의 쓰레드만 자원을 컨트롤하여 동작 여러 쓰레드를 동시에 실행시키지만, 결국 GIL 때문에 한번에 하나의 쓰레드만 계산을 실행 GIL로 자원 관리(GC..)를 쉽게 구현 가능해졌지만, 멀티 코어 부분에서는 아쉬움 파이썬의 경우에는 GIL이 존재하여 멀티 쓰레드보다는 멀티 프로세스를 사용하는 것이 좋음 multiprocessing 쓰레딩 모듈로 쓰레드를 생성 할 수 있는 것과 동일한 방식으로 프로세스를 생성 프로세스는 각자가 고유한 메모리 영역을 가지기 때문에 쓰레드에 비하면 메모리 사용이 늘어난다는 단점 싱글 머신 아..