작성자 : kyuu 👀

Untitled

테스트 환경 :

Q. 다중 서버 구성시 여러 클라이언트의 요청이 동시에 들어올 때 동시성 오류가 발생할까?

<aside> 💬 동시에 1000번의 API 호출 시 동시성 오류가 발생하여 3.32 %의 리뷰 데이터가 유실되었다.

</aside>

Q. 어떤 동시성 제어 기법을 사용하는것이 좋을까?

1차 시도 | Java의 Lock 기법 ReentrantLock

1) synchronized VS ReentrantLock

: Java의 제일 대표적인 기법인 synchronized lock은 검색 시 synchronized block 에 진입 및 탈출 자체에 비용이 소모되기 때문에 남발하게 될 경우 성능 상에 문제가 될 수 있고 세세한 작업 또한 어려움이 있음 ( 세세한 작업 : 특정 시간을 기다리고, 그 안에 처리가 안될 경우 패스 혹은 lock을 잡는 순서를 보장 등 )

: 또한 Syncronized를 사용할 경우 나의 Thread가 상태 정보를 얻을 수 없고, Syncronized 구문을 마주했을 때 누군가 해당 객체의 Locking을 Release 하기까지 무한히 기다리는 수 밖에 없다.

⇒ java5 부터 제공되는 ReentrantLock의 경우 위의 단점을 보완하여 비교적 간편하게 구현이 가능했고