issues
search
dgryoo
/
pfairplayService
My soccer matching platform
1
stars
0
forks
source link
Race Condition, when count Up/Down
#81
Open
dgryoo
opened
3 years ago
dgryoo
commented
3 years ago
Race Condition, when count Up/Down
문제 상황
리뷰에 Up/Down 기능에서 INCR/DECR 시에 Race Condition 발생 가능성
Race Condition으로 인한 Latency 지연 및 Time out 발생 가능성
해결방안
Mysql + Kafka
장점
Kafka의 Partition Key를 사용하여 특정 Partition으로 Event를 할당하고 Counsumer가 소비함으로써 Consistency 보장
Consumer Group으로 특정 Consumer의 장애에 방어
단점
Kafka 서버에 대한 비용
Kafka에 대한 학습 필요
Cassandra Counter Column
장점
각 노드에서 write가 가능함으로 빠른 INCR/DERC 가능
단점
Eventual Consistency 하지만 각 Node 마다 조회 결과가 다르게 나올 수 있음
Eventual Consistency
Consistency Level 옵션으로 Node Consistency 보완
Redis
장점
Lock Free Single Thread로 Race Condition, Consistency 보장
In-memory DB의 빠른 조회 및 수정
Sorted Set의 사용으로 랭킹 구현 가능
단점
높은 비용
In-memory DB의 휘발에 대한 대책 필요
In-memory DB의 휘발 대책
1. Dump File
File을 받을 때 다른 작업 수행 불가
2. BatchApplication을 이용한 다른 DB로의 백업
사용량이 적은 시간을 활용하여 주기적으로 백업하여 Redis의 부담을 줄임
Race Condition, when count Up/Down
문제 상황
해결방안
Mysql + Kafka
장점
단점
Cassandra Counter Column
장점
단점
Eventual Consistency
Redis
장점
단점
In-memory DB의 휘발 대책
1. Dump File
2. BatchApplication을 이용한 다른 DB로의 백업