인프런 커뮤니티 질문&답변

vanillaa님의 프로필 이미지

작성한 질문수

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부

Backpressure Example 코드 설명

버퍼가 비워지는 시점

23.10.05 16:15 작성

·

263

1

안녕하세요.

 

Backpressure의 Drop 전략에서 버퍼가 비워질 때까지 Emit된 데이터가 Drop이 된다는 것은 이해했습니다.

그런데 1번 데이터가 subscriber에게 전달되어서 처리가 되면 버퍼에 자리가 한 자리 비게 되는데 왜 데이터가 계속 Drop이 되는건가요? (코드 실습에서 onNext()함수가 호출이 되어도 255,256,257 ~ 1024까지 모두 드랍됨)

| 1, 2 | <-------- 3 듣랍

| 2, |. <-------- 4 드랍 (여기서 왜 4번 데이터는 안들어가나요?)

| 5, 6 |

 

 

Buffer DROP-LATEST를 보면

| 1, 2 | <---- 3들어오는 중 버퍼 가득 차서 drop

| 2, 4 | <------ 1번이 버퍼에서 나가고 한 자리가 비어서 4번이 들어와짐

 

이런식으로 동작을 하는데 Drop은 이렇게 동작하지 않는 것 같아 버퍼가 어떻게 동작하는지 궁금하여 질문드립니다.

 

 

 

 

답변 1

3

Kevin님의 프로필 이미지
Kevin
지식공유자

2023. 10. 05. 16:37

안녕하세요?

Backpressure 전략 중에서 Drop 전략에 대해 질문 주셨는데요.

Drop 전략의 경우, 버퍼 안의 데이터가 Subscriber에게 한개 전달되면, 버퍼 공간이 한개 비니까 한개의 데이터가 채워지는것이 아니라 전체 버퍼 중에 70-80 퍼센트 정도(정확한 비율은 나중에 확인 후 말씀드릴게요)가 한번에 비워진다고 보시면 될것 같습니다.

즉, 데이터 한개가 버퍼에서 비워지는 것이 아니라 버퍼가 가득찬 상태에서 Downstream이 데이터를 처리할 수 있는 상태가 될 때까지 Upstream에서 emit된 데이터는 Drop이 된다고 생각하시면 될것 같습니다.

denia park님의 프로필 이미지

2024. 09. 08. 23:22

Drop 전략에 대해서 공부하다가 저도 해당 부분에 대해서 의문점이 들었는데, 이미 질문과 답변이 올라와있네요.

 

잘 보고 갑니다!

vanillaa님의 프로필 이미지

작성한 질문수

질문하기