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

막스님의 프로필 이미지

작성한 질문수

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

Backpressure 이해하기

DROP 전략과 LATEST 전략의 차이점이 무엇인가요?

작성

·

307

2

안녕하세요. 수업 잘 듣고 있습니다~

백프레셔 전략 중 DROP과 LATEST 전략은 결국 버퍼가 비워질 때까지 Publsiher에서 emit되는 데이터를 제거(drop or discard)하는 것으로 이해했습니다.

버퍼가 비어지는 시점 이후로 emit되는 데이터를 다시 버퍼에 채운다는 점에서 두 전략은 같은 것으로 보입니다.

차이점을 알려주시면 감사하겠습니다~

답변 3

1

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

안녕하세요. 휴일이라서 답변이 조금 늦어졌습니다.

음.. 버퍼가 비워지는 시점이 찰나의 짧은 시점이라서 100퍼센트 정확하게 설명드리기 곤란한 부분이 있긴한데 개념적으로 차이점만 설명드리자면,

우선 현재 버퍼가 가득차 있는 상태이고, subscriber의 처리가 끝나지 않은 시점이라고 가정하겠습니다.

이 시점에 Drop 전략인 경우 버퍼가 가득차 있기때문에 즉시 drop 되어 폐기가 됩니다.

반면에 Latest 전략의 경우 버퍼가 가득차 있고 Upstream 쪽에서 데이터가 emit되어 들어오면 drop 전략처럼 즉시 데이터가 drop되어 폐기 되는게 아니라 최신데이터 하나(A)는 유지합니다. 이 상태에서 뒤따라 오는 데이터(B)가 있다면 A는 이제 최신 데이터가 아니기때문에 B가 최신 데이터가 되고 A는 삭제 됩니다.

 

저는 여러 분석을 거쳐서 이렇게 이해하고 수강생들에게 설명을 드리고 있습니다.

 

질문에 답변이 충분히 되셨길 바랄게요.

막스님의 프로필 이미지
막스
질문자

감사합니다. 답변에 따라 차이점을 명확히 이해했습니다.

0

Reactor의 백프레셔 전략에서 droplatest는 다르게 동작합니다.

  1. Drop: 이 전략은 버퍼가 꽉 찼을 때 새로운 데이터가 들어오면 그 데이터 자체를 버립니다. 즉, 버퍼가 꽉 차면 이후에 들어오는 데이터가 모두 버려지게 됩니다. 백프레셔가 발생한 시점 이후의 모든 데이터를 건너뛰기 때문에 들어오는 데이터가 많아져도 버퍼의 크기를 유지할 수 있습니다.

  2. Latest: 이 전략은 버퍼가 꽉 찬 상태에서 새로운 데이터가 들어오면, 이미 버퍼에 들어있던 가장 오래된 데이터를 제거하고 새 데이터를 넣습니다. 즉, 최신 데이터만 유지하고 이전 데이터가 밀려서 버려지는 방식입니다. 이 경우, 버퍼가 꽉 차면 가장 최근의 데이터가 버퍼에 남고 오래된 데이터가 차례로 사라집니다.

따라서 drop은 새로운 데이터가 버려지는 반면, latest는 가장 오래된 데이터가 버려져 최신 데이터가 유지됩니다. 이 점에서 최신 데이터 보존이 필요한지, 데이터 손실 최소화가 필요한지에 따라 선택할 수 있습니다.

챗지피티는 이렇게 얘기하네요

0

안녕하세요, 인프런 AI 인턴입니다.

max.me님의 질문인 DROP 전략과 LATEST 전략에 대한 차이점에 대해, Kevin 강사님이 답변을 제공한 내용이 있어 이를 기반으로 설명드립니다.

DROP 전략과 LATEST 전략의 차이

  • DROP 전략: 이 전략을 사용할 때, Subscriber가 처리할 수 없을 정도로 많은 데이터가 Publisher로부터 오면, 처리할 수 없는 새로운 데이터는 단순히 무시(드랍)됩니다. 즉, 버퍼가 가득 차게 되면, 그 시점 이후에 오는 데이터는 처리되지 않고 손실됩니다.

  • LATEST 전략: LATEST 전략 역시 버퍼가 가득 차면 새로운 데이터를 무시하지만, 한 가지 점이 다릅니다. 즉 가장 최근에 받은 데이터는 버퍼에 유지되어, Subscriber가 준비되었을 때 가장 마지막에 들어온 데이터부터 처리할 수 있도록 합니다. 이는 드랍되는 데이터 중 가장 최신 데이터 1개는 보존한다는 읐미입니다.

이전에 비슷한 주제에 대해 답변한 내용이 있는데, 자세한 설명이 필요하시면 아래 답변 링크를 참조하시기 바랍니다.

  • 백프레셔 전략 관련해서 - 이 링크에서는 폐기(discard)와 드랍(drop)의 개념을 설명하며, DROP과 LATEST 전략에 대한 이해를 도울 수 있는 정보를 제공합니다.

DROP과 LATEST 전략 사이의 주된 차이는, 버퍼가 가득 찼을 때 처리되지 않는 데이터의 처리 방식에 있습니다. DROP은 새 데이터가 무시되는 반면, LATEST는 가장 최근의 데이터를 보존하여 나중에 처리가 가능하도록 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

막스님의 프로필 이미지
막스
질문자

결과적으로 버퍼가 비어지는 시점 이후로 emit되는 데이터를 다시 버퍼에 채운다는 점에서 DROP과 LATEST 전략 모두 가장 최신 데이터를 버퍼에 추가하여 처리하는 것으로 이해하고 있습니다. 차이점으로 보이지 않습니다.

 

막스님의 프로필 이미지

작성한 질문수

질문하기