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

highjune님의 프로필 이미지

작성한 질문수

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

Scheduler의 종류

newBoundedElastic 에서 queue 에 쌓이는 룰

24.08.01 00:22 작성

·

60

0

안녕하세요

좋은 강의 감사합니다.

강의 <Sceduler의 종류> 에서 13:24 쯤에 나오는 내용이 궁금합니다.

"subscribe 3 doing" 는 왜 T-1 쓰레드의 Q1 큐에 쌓이고,

"subscribe 4 doing" 는 왜 T-1 쓰레드의 Q2 큐에 쌓에 쌓이는지 궁금합니다.

그 다음

"subscribe 5 doing" 역시 왜 T-1쓰레드 Q1 큐에 쌓이는 지도 궁금합니다.

순서가 차례로 하나씩 할당되게 되는 것인가요

감사합니다.

답변 2

0

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

2024. 08. 01. 09:44

안녕하세요? 어젯 밤에 질문 남겨주셨는데 질문 남겨주시기 전에 잠들어서 이제야 답변 드리게 되었네요.

 

newBoundedElastic에서 큐에 쌓이는 방식이 Reactor 공식 문서에 명시적으로 나와있지는 않습니다.(제가 찾아본 바로는 없었습니다.)

다만, 저런식으로 각각의 Thread의 큐에 번갈아 가면서 쌓은 방식은 일종의 라운드 로빈(Round-Robin) 방식을 적용한거라고 볼 수 있는데요.

라운드 로빈 방식을 찾아보시면 아시겠지만 데이터를 골고루 분배해서 효율성을 높이기 위한 방식이기 때문에 하나 이상의 큐에 라운드 로빈 방식이 적용된건 이상하지 않다고 생각합니다.

실제로 Reactor의 ParallelFlux에서는 라운드 로빈 방식으로 작업을 처리한다고 공식 문서에도 나와 있습니다.

 

질문에 대한 답변이 되셨길 바랍니다.

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 01. 00:26

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

질문자님께서 요청하신 내용에 대해서는 “Sinks multicast의 subscribe에 질문있습니다.”에서 관련된 설명을 찾을 수 있습니다. 이 게시글에서 Kevin 강사님은 Sinks.many().multicast().onBackpressureBuffer()을 사용할 때 emitNext 메서드를 통해 데이터가 어떻게 처리되는지에 대해 설명하고 있습니다. 이는 FluxMono에서 사용되는 리액티브 스트림의 데이터 흐름과 밀접하게 관련되어 있으며, 이를 통해 구독자(Subscriber)가 어떻게 데이터를 받는지에 대한 이해를 돕고 있습니다.

그러나, 질문자님이 구체적으로 언급하신 newBoundedElastic과 관련된 스케줄러의 작동 방식 및 특정 쓰레드의 큐에 할당되는 원리에 대해 구체적으로 해결해주는 직접적인 내용은 제시된 링크 내에 없습니다.

newBoundedElastic과 관련된 스케줄링, 특히 어떻게 작업이 쓰레드와 큐에 할당되는지에 대한 세부적인 동작 원리는 Project Reactor의 공식 문서나 해당 주제를 상세하게 다룬 기술 블로그 포스트를 참고하시는 것이 좋습니다. newBoundedElastic 스케줄러는 복잡한 작업 처리와 관련하여 쓰레드의 생성과 관리를 돕기 위해 설계되었습니다. 이 스케줄러는 한정된 양의 쓰레드를 사용하여 작업을 처리하고, 필요한 경우 쓰레드풀 내에서 큐를 통해 추가 작업을 쌓아 처리합니다.

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

highjune님의 프로필 이미지

작성한 질문수

질문하기