22.10.25 18:59 작성
·
209
0
안녕하세요? DROP 배압 전략을 들으면서 이해가 잘 되지 않는 부분이 생겨서 질문드립니다. 이전에 공지해 주신 https://www.inflearn.com/news/527932 도 확인한 상태입니다.
위 공지 사항에 내용을 토대로 들어보면, observeOn()의 bufferSize는 발행된 데이터가 담기는 버퍼와는 무관한 스레드를 담는 버퍼로 이해를 하였습니다.
그렇다면, DROP 배압 전략이 수행되면 발행된 데이터는 별도의 버퍼에 담기는 것이 아니라 소비자가 데이터를 처리할 때까지 모조리 DROP하는 방식이 맞을까요?
만약 이 내용이 맞다면, PPT에 작성해 주신 아래 사진은 버퍼를 제거해야 하지 않을까 싶습니다.
답변 2
0
2022. 10. 25. 23:50
jayon님, 안녕하세요?
질문 주신 아래 문장에 대해서만 제 의견을 드리자면,
"DROP 배압 전략이 수행되면 발행된 데이터는 별도의 버퍼에 담기는 것이 아니라 소비자가 데이터를 처리할 때까지 모조리 DROP하는 방식이 맞을까요?"
--> '소비자가 데이터를 처리할때까지' observOn() 연산자에서 지정한 버퍼 사이즈만큼 Upstream에서 수신한 데이터를 쓰레드 경계 버퍼(boundary buffer)에 담기 때문에 그림 상에서 버퍼를 제거하지 않아도 된다고 생각합니다.
코드만으로 배압 전략을 설명하기가 어려워서 그림으로 쉽게 설명드리는 부분이라서 그림에서 표현한 부분은 개념적인 부분이라고 이해해주시면 감사드리겠습니다.
감사합니다.
2022. 10. 26. 10:33
버퍼라는 개념이 일반적으로 입/출력 간에 속도 차이가 발생하기 때문에 중간에서 이 차이를 완화시켜주는 역할을 한다는 측면에서 이해하는게 더 나을 것 같아요 jayon님.
버퍼가 꼭 발행 측 버퍼다 수신측 버퍼다 이렇게 나누어서 이해하시는 것보다는 Buffer 전략에서는 버퍼가 중간에 하나 더 생긴다 이렇게 생각하시면 될 것 같아요.
업무 중 쉬는 시간이라서 짧게 답변 남겨봅니다.