O0oO0Oo / netty-reservation-service

트랜잭션, 동시성을 공부하기 위한 토이 프로젝트입니다.
0 stars 0 forks source link

feat: data anomalies in saga pattern #12

Open O0oO0Oo opened 2 months ago

O0oO0Oo commented 2 months ago

이슈 개요

전통적인 트랜잭션과 다르게 사가 패턴의 경우 ACID 에서 isolation 을 완전히 보장하지 못해 anomalies 가 발생할 수 있다. 하지만 Semantic lock, Commutative updates 와 같이 이를 해결하기 위한 방법들이 있다.

발생 가능성, mysql 은 기본적으로 repeatable read 수준

Orchestration-based saga 에서 현재 생각으론 각 서비스에서 이벤트를 소비할때 싱글 스레드라면 발생하지 않을것으로 예상하지만, 성능 향상을 위해 멀티 스레드로 소비하게 된다면 lost update 가 발생한다.

격리 수준이 낮고 락이 적을 수록 동시처리 성능은 올라간다. 격리 수준은 유지하고, 락은 사용하지 않고 데이터 일관성을 해결해보자.

재현 단계

예상 동작

실제 동작

추가 정보