inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Cách giải quyết các vấn đề đồng thời bằng hệ thống kiểm kê

synchronized 쓰지 않는 이유는 해당 서버가 스케일 아웃(분산처리 하기 위해) 경우 동시성을 보장 못 하기 때문이라고 해주셨는데요

762

syh8088

77 câu hỏi đã được viết

0


 
 
이와 같이 동시성 보장하기 위해
 
Redisson, Lettuce 를 사용한다고 가정하겠습니다.
 
하지만 해당 Redis 서버에서도 스케일 아웃을 하게된다면
 
이때 synchronized 처럼 동시성 보장 얻기 힘든거 아닌가요?
 
Thread A 가 Redis A Server 에 Lock 을 걸었는데
동시에 Thread B 가 Redis B Server 에 Lock 을 걸고 동시에 호출이 가능하지 않을까 해서요.
 
사실 대규모 서비스를 운영해본적이 없어서 이렇게 엉뚱한? 질문을 드리네요...
 
 

java spring 동시성

Câu trả lời 2

0

seolnavy

Redis에서 명령/요청등을 처리하는 스레드는 한개인것으로 알고있습니다.

읽기 성능 확장을 위한 복제(Replication)와 쓰기 성능 향상을 위한 샤딩(Sharding)을 하더라도
명령/요청처리는 마스터의 한 스레드만 담당하는것으로 알고있는데요.

그래서 레디스를 스케일아웃으로 확장하더라도 동시성 보장이 되는것으로 보입니다.
내용에 틀린부분이 있다면 댓글 부탁드립니다.

---

Reddison Readme Features
(https://github.com/redisson/redisson/)

  • Redis Replicated setup (also compatible with AWS ElastiCache and Azure Redis Cache)
  • Redis Cluster setup (also compatible with AWS ElastiCache Cluster, Amazon MemoryDB and Azure Redis Cache)
  • Redis Sentinel setup
  • Redis with Master with Slave only

---

https://djlee118.tistory.com/111

https://akasai.tistory.com/23

0

169developer9973

안녕하세요. seolnavy 님
말씀해주신 내용이 맞습니다 :)

제가 예시로 들어드린 2대의 Redis 에서 모두락을 얻는상황은 클러스터링이나 샤딩이 아닌 독립적인 2대의 Redis 의 상황이었습니다!

제가 리나님의 질문을 잘못 이해한듯합니다.
대신 답변주셔서 감사합니다 :)

 

0

169developer9973

안녕하세요. 리나님!

일단 강의에서 가정하는 인프라구조는 아래와 같습니다.

2개의 서버가 1개의 레디스를 바라본다고 한다면 동시성이 보장됩니다.

1개의 레디스에 먼저 Lock 을 획득한 서버가 Lock 을 해제하기 전까지 다른 서버에서는 Lock 을 획득하지 못하기때문입니다.

 

추가로 Redis Server 가 2개가 있는것은 Redis 를 2대를 활용한다는듯합니다. 맞을까요 ?

2대를 활용하는것이 맞다면 말씀해주신것처럼 동시성이 보장되지 않을 수 있습니다.

그럴때는 특별한 전략을 사용해야합니다.

가장 간단하게 생각을 해본다면 "2 대의 Redis 서버에서 모두 Lock 을 획득해야만 Lock 획득으로 인정한다" 라는 전략을 사용할 수 있을 듯합니다.

 

추가적인 질문이 있다면 댓글 달아주세요!

레디선 테스트코드에서 채널이름은 없어도 되는건가요?

0

48

2

낙관적 락을 사용할 떄 차이점

0

128

2

동시성 검증 코드에 관한 문의

0

97

2

단일연산

0

75

2

낙관적락vs. 레디스락

0

112

2

안녕하세요. 레디슨 질문있습니다..!!

0

67

2

@Lock(OPTIMISTIC)이 필요한 이유

0

92

2

get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?

0

133

2

DataSource Hikari 사용 이유

0

149

2

saveAndFlush 사용 이유 문의

0

115

3

비관적 락 VS 네임드 락

0

161

3

application.yaml 에 redis 정보

0

101

2

왜 클래스 이름에 Facade 가 붙나요?

0

185

2

@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.

0

220

2

@modifying 이용한 동시성 제어

0

170

2

DB락과 분산락

0

264

2

NamedLock 테스트 실패

0

186

2

테스트에서 트랜잭션 어노테이션 질문 있습니다.

0

175

2

optimistic Lock 재시도 질문입니다.

0

234

2

낙관적 락 테스트 실패

0

243

2

오류?

0

1632

4

LettureLockStockFacadeTest에서 오류가 발생합니다.

1

269

2

Pessimistic Lock 전체 테스트 오류 문의

0

363

3

비관적 락 vs 레디스(Lettuce)락 비교 관련 질문

0

462

2