일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 부트
- 우아한세미나
- 트랜잭션
- 프로그래머스
- AWS
- mock
- 우테코
- Docker
- yml
- CircuitBreaker
- 프리코스
- 서블릿
- JPA
- REDIS
- JUnit5
- AOP
- HTTP
- 세션
- 백준
- Spring Batch
- MSA
- 스프링부트
- 미션
- 코드리뷰
- Paging
- 우아한테크코스
- 레벨2
- Level2
- 의존성
- 자바
- Today
- Total
목록lock (2)
늘
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/4SXKU/btsIWij6gXF/BruZK9vHQvxgFBf2fzG3mk/img.png)
https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.htmlredis를 사용한 분산락을 구현할때 RedLock의 한계는 이미 잘 알려진 문제입니다. 간략히 짚고 넘어가자면 Java기반 서버에서 stw가 발생할때 또는 클락 드리프트 이슈가 발생할때 락 일관성이 깨질 수 있다는 것입니다.이를 확실하게 해결하기 위해서는 주피터를 사용하라고 되어있습니다. 그렇다면 redis를 사용한 분산락은 어떻게 구현할 수 있을까요?redlock알고리즘을 사용하는 이유가 클러스터 구조에서 일관성있는 락을 유지하기 위해 존재하는데, redlock을 사용하지 않는다면 어떤 식으로 redis의 java 클라이언트인 redisson이 락을 처리하는지 확인해보겠..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cjuA3V/btrPfYzB0LN/TDmSbR4DIBKppiWe8dHDrk/img.png)
해당 글은 innodb에서 lock이 어떻게 동작하는지 어느 정도 알고 있는 상태에서 읽으면 좋을 것 같습니다! 제목에 JPA가 들어가서 주제가 JPA에 한정적으로 보일수 있겠다. 하지만 실제 해당 이슈는 JPA 뿐만 아니라 모든 곳에서 발생이 가능하다. 하지만 JPA에서는 dirty checking이라는 기능을 지원해주므로 더욱 조심해야 한다고 생각해서 제목으로 지어봤다. 본론으로 들어가자면 해당 상황이 위험한 이유는 lock과 관련이 있다. 그중에서 Lost Update 문제이다. (저희 서비스는 JPA와 MVCC를 지원하는 Mysql Innodb를 사용합니다.) QA를 진행하다 다른 팀에서 데드락이슈를 맞이했다. 우리 팀은 괜찮을까 테스트해보다가 다른 이슈를 맞이했다. 바로 동시성 이슈였는데 해당 ..