![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bgWxwE/btsCpPGFhsM/ODA93BD5G9IOAVmsiLkAP0/img.png)
synchronized vs Pessimistic Lock vs Distributed Lock DB의 무결성을 보장하기 위해서는 다양한 방법이 있다. 물론 synchronized는 적합한 방법은 아니지만 왜 적합하지 않은지에 대해 살펴보고, 그 뒤 비관적 락(Pessimistic Lock)과 분산락(Distributed Lock)을 통해 성능 비교를 해보자. 재고 차감 로직을 통한 DB 부정합 문제 살펴보기 위 ProductService는 주문 관련 비즈니스 로직 중 하나로 "상품 조회 -> 상품의 재고 차감 가능 여부 확인 -> 재고 차감"의 순서로 이루어지는 로직이다. 해당 비즈니스 로직을 통해서 어떻게 DB 부정합 문제가 발생하게 되는지 테스트 코드를 작성해보자. 위 테스트 코드는 한 번에 100개..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wjh3Y/btsoCj2irpE/hqszIOsgOJExCyrFzZDJn1/img.png)
Thread 우리가 JVM을 실행시키면 자바 프로세스(Java Process)가 시작한다. 이 프로세스에는 여러 개의 스레드가 수행되는데 반대로 여러 프로세스가 공유하는 하나의 스레드가 수행되는 일은 절대 없다. 어떤 프로세스든 간에 스레드가 하나 이상 수행된다. 프로세스(Process): 운영체제로부터 시스템 자원을 할당받아 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 스레드(Thread): 프로세스가 할당받은 자원을 이용하는 실행의 단위 이 때, Java Thread는 일반 스레드와 거의 차이가 없으며, JVM이 운영체제의 역할을 한다. 즉, Java Thread는 JVM에 의해 스케되는 실행 단위 코드 블록이라고 할 수 있고, 스레드 스케줄링 및 스레드와 관련된 많은 정보들을 ..
- Total
- Today
- Yesterday
- 네티 스레딩 모델
- Synchronized
- TDD
- 분산 락
- Kafka
- sql
- spring session
- jvm 메모리 구조
- mysql
- 넥스트스탭
- mdcfilter
- transaction
- 카프카
- nginx
- 람다
- postgresql
- 트랜잭션
- pessimistic lock
- annotation
- nginx configuration
- 구름톤 챌린지
- 비관적 락
- 스프링 네티
- 자바 네티
- socket
- redis session
- NeXTSTEP
- 구름톤챌린지
- Java
- spring webflux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |