FluxSink

Single Ko·2024년 8월 11일
0

reactive-programing

목록 보기
6/8
  • 단일 Subscriber가 있을 때 사용하도록 설계되었습니다.
  • FluxSink는 스레드 세이프입니다. 여러 스레드와 공유할 수 있습니다.
  • 다운스트림 수요에 대해 걱정하지 않고 계속 데이터를 싱크로 방출할 수 있습니다
  • FluxSink는 데이터를 순차적으로 구독자에게 전달합니다

사용 시나리오

온라인 쇼핑몰에서 여러 사용자가 동시에 다양한 제품 정보를 조회하는 상황을 가정해봅시다.

새로운 요구사항:
사용자가 어떤 제품을 봤는지 기록하여 나중에 프로모션 이메일을 보내고 싶어합니다.

코드 예시 설명:

// pseudo code
public Product getProductInfo(int userId, int productId) {
    emitCustomerProductViewRequest(userId, productId);
    return this.productRepository.getProduct(productId);
}

이 코드에서 emitCustomerProductViewRequest가 사용자 조회 정보를 기록하는 부분입니다.

FluxSink를 사용하는 이유:

  • 성능 향상: FluxSink는 비동기적으로 동작하여 주 작업(제품 정보 조회)의 속도를 늦추지 않습니다.
  • 안전성: 여러 사용자의 요청이 동시에 들어와도 데이터 손실 없이 안전하게 처리합니다.
  • 백프레셔 관리: 시스템이 처리할 수 있는 속도로 데이터를 관리합니다.

성능에 문제가 없는 이유:

  • 비차단 방식: 사용자 조회 정보 기록이 제품 정보 조회를 지연시키지 않습니다.
  • 효율적인 리소스 사용: 시스템 리소스를 효율적으로 사용하여 많은 요청을 처리할 수 있습니다.
  • 독립적 처리: 제품 정보 조회와 사용자 행동 기록이 독립적으로 처리되어 서로 영향을 주지 않습니다.

요약하자면, FluxSink를 사용하면 주요 비즈니스 로직(제품 정보 조회)의 성능을 해치지 않으면서도 추가적인 데이터 처리(사용자 행동 기록)를 안전하고 효율적으로 수행할 수 있습니다.

profile
공부 정리 블로그

0개의 댓글