본문 바로가기

JAVA

[리액티브 프로그래밍] Backpressure (배압)

728x90

webflux에서 backpressure는 트래픽 통신 시에 과부하가 발생했을 때, 이를 처리하는 방식들을 말합니다.

publisher가 subscriber가 처리할 수 있는 양보다 더 많은 데이터를 송신했을 때, 이를 어떻게 처리할 것인지 에 대한 방식입니다.

 

 

처리방식

  • subscriber가 처리할 수 있는 수준의 데이터 개수를 publisher에게 요청
  • IGNORE 전략
    • 아무것도 하지 않는다
  • ERROR 전략
    • 처리속도를 따라가지 못할 경우 IllegalStateException을 발생
  • DROP전략
    • 버퍼에 데이터가 가득 찰 경우, 버퍼 밖에서 대기 중 인 데이터 중 먼저 온 데이터 부터 drop(폐기)
  • LATEST 전략
    • 버퍼에 데이터가 가득 찰 경우, 버퍼 밖에서 대기 중 인 데이터 중에서 가장 나중에 온 데이터 부터 버퍼에 채움

 

 

 

출처: https://devfunny.tistory.com/914

 

[리액티브 프로그래밍] Backpressure의 개념과 Backpressure 전략

Backpressure 리액티브 프로그래밍에서의 배압, 즉 Backpressure은 Publisher가 끊임없이 emit하는 무수히 많은 데이터를 적절하게 제어하여 데이터 처리에 과부하가 걸리지 않도록 제어하는 것이다. Publish

devfunny.tistory.com

 

728x90