Reactor Schedulers, SubscribeOn, PublishOn 이론편 [ 스프링 웹플럭스 (Spring WebFlux) ]

admin | | 조회 22


[주요 목차]

리액터 스케줄러의 기본 이해

스케줄러 메소드의 종류와 활용

서브스크라이브On과 퍼블리시On의 차이


안녕하세요! 요즘 비동기 프로그래밍에 관심이 많으신가요? 특히 스프링 웹플럭스를 사용하면서 리액터 스케줄러에 대해 고민해보신 적 있으실 거예요. 스케줄러는 비동기 작업을 효율적으로 처리하는 데 큰 역할을 하죠. 하지만 다양한 스케줄러와 그 사용법을 이해하는 것은 쉽지 않죠. 이 글을 통해 리액터 스케줄러의 기본 개념과 다양한 메소드들을 살펴보고, 서브스크라이브On과 퍼블리시On의 차이점까지 알아보려고 해요. 이 내용을 통해 여러분의 비동기 처리 능력이 한층 더 향상될 거예요!


Reactor Schedulers, SubscribeOn, PublishOn 이론편 [ 스프링 웹플럭스 (Spring WebFlux) ] - 현장 스냅 1 - 스프링웹플럭스Reactor Schedulers, SubscribeOn, PublishOn 이론편 [ 스프링 웹플럭스 (Spring WebFlux) ] · 현장 스냅 1

리액터 스케줄러의 기본 이해

리액터 스케줄러는 비동기 작업을 다양한 쓰레드 풀에서 실행할 수 있도록 도와주는 기능입니다. 이 스케줄러는 작업의 성격에 따라 여러 종류가 존재하는데요. 예를 들어, 즉시 실행되는 작업은 'Immediate' 스케줄러를 사용하고, 단일 쓰레드로 순차적으로 작업을 처리하고 싶다면 'Single' 스케줄러를 사용하면 됩니다.

각 스케줄러는 특정 작업에 최적화되어 있으므로, 어떤 스케줄러를 선택하느냐가 성능에 큰 영향을 미칠 수 있어요. 따라서, 작업의 특성을 이해하고 적합한 스케줄러를 선택하는 것이 중요합니다. 예를 들어, IO 바운드 작업에는 'Bounded Elastic' 스케줄러가 유리하고, CPU 바운드 작업에는 'Parallel' 스케줄러가 적합하답니다.

Reactor Schedulers, SubscribeOn, PublishOn 이론편 [ 스프링 웹플럭스 (Spring WebFlux) ] - 주요 포인트 2 - 스프링웹플럭스Reactor Schedulers, SubscribeOn, PublishOn 이론편 [ 스프링 웹플럭스 (Spring WebFlux) ] · 주요 포인트 2

스케줄러 메소드의 종류와 활용

리액터에서는 다양한 스케줄러 메소드를 제공하는데, 그 중에서도 'Elastic', 'Bounded Elastic', 'Parallel' 등이 있습니다. 각 메소드의 특징을 살펴보면, 'Elastic'은 필요에 따라 쓰레드를 생성하고, 쓰레드가 비활성화되면 종료되는 방식입니다. 그러나 Java 9 이후로는 'Bounded Elastic'이 추천되는데, 이는 생성할 수 있는 쓰레드 수를 제한하여 자원 낭비를 방지하기 때문이에요.

'Parallel' 메소드는 고정된 수의 쓰레드를 사용하여 CPU 바운드 작업을 처리하는 데 최적화되어 있습니다. 이 스케줄러는 CPU 리소스를 최대로 활용할 수 있도록 설계되었죠. 예를 들어, 대규모 데이터 처리 작업에서는 'Parallel' 스케줄러를 사용해 효율적으로 처리할 수 있어요. 각 스케줄러의 특징을 잘 이해하고 적절히 활용하면 성능을 크게 개선할 수 있습니다.

Reactor Schedulers, SubscribeOn, PublishOn 이론편 [ 스프링 웹플럭스 (Spring WebFlux) ] - 본문 이미지 3 - 스프링웹플럭스Reactor Schedulers, SubscribeOn, PublishOn 이론편 [ 스프링 웹플럭스 (Spring WebFlux) ] · 본문 이미지 3

서브스크라이브On과 퍼블리시On의 차이

스케줄러를 사용하기 위해서는 'subscribeOn'과 'publishOn' 두 가지 메소드를 적절히 활용해야 해요. 'subscribeOn'은 구독이 시작되는 시점에 쓰레드를 제어하는 방식입니다. 즉, 데이터 스트림의 소비가 시작될 때 어떤 쓰레드에서 실행할지를 결정하죠. 반면, 'publishOn'은 데이터가 흐르는 도중에 쓰레드를 제어하여 실행할 쓰레드를 결정합니다.

이 두 메소드는 비슷하지만, 적용되는 시점이 다르므로 혼동하지 않도록 주의해야 해요. 예를 들어, 'subscribeOn'을 사용하면 데이터 방출 시점에서의 쓰레드가 결정되지만, 'publishOn'은 데이터가 흐르는 과정에서 쓰레드를 변경할 수 있죠. 따라서 이 두 메소드를 목적에 맞게 잘 활용하면 비동기 처리의 유연성을 높일 수 있습니다.


[자주 묻는 질문]

리액터 스케줄러는 왜 필요한가요?

리액터 스케줄러는 비동기 작업을 효율적으로 처리하기 위해 필요합니다. 다양한 스케줄러를 통해 작업의 성격에 맞는 최적의 쓰레드 풀을 선택할 수 있어 성능을 극대화할 수 있습니다.

스케줄러 메소드를 어떻게 선택하나요?

스케줄러 메소드는 작업의 특성에 따라 선택해야 해요. IO 바운드 작업에는 'Bounded Elastic'을, CPU 바운드 작업에는 'Parallel'을 사용하는 것이 좋습니다. 작업의 성격에 따라 적절한 메소드를 선택하는 것이 중요합니다.

subscribeOn과 publishOn의 차이는 무엇인가요?

'subscribeOn'은 구독 시작 시점에 쓰레드를 결정하고, 'publishOn'은 데이터 흐름 중에 쓰레드를 변경합니다. 각각의 메소드가 적용되는 시점이 다르므로 사용 시 주의가 필요합니다.

목록
글쓰기
한국 서버호스팅
전체보기 →

댓글 0

jpg/png/gif/webp/zip · 최대 100MB · 10개

리뷰

0
0건의 리뷰
5★
0
4★
0
3★
0
2★
0
1★
0
0/5000
아직 작성된 리뷰가 없습니다. 첫 리뷰를 남겨주세요!