본문 바로가기

두두의 IT/Spring

[Spring Batch] 12. Multi Thread Processing

728x90

단일스레드 vs 멀티 스레드

  • 프로세스 내 특정 작업을 처리하는 스레드가 하나일 경우 단일 스레드, 여러 개일 경우 멀티 스레드로 정의할 수 있다
  • 작업 처리에 있어서 단일 스레드와 멀티 스레드의 선택 기준은 어떤 방식이 자원을 효율적으로 사용하고 성능 처리에 유리한가 하는 점이다
  • 일반적으로 복잡한 처리나 대용량 데이터를 다루는 작업일 경우 전체 소요 시간 및 성능상의 이점을 가져오기 위해 멀티 스레드 방식을 선택한다
  • 멀티 스레드 처리 방식은 데이터 동기화 이슈가 존재하기 때문에 최대한 고려해서 결정해야 한다.

단일, 멀티 스레드

 

 

스프링 배치 스레드 모델

  • 스프링 배치는 기본적으로 단일 스레드 방식으로 작업을 처리한다
  • 성능 향상과 대규모 데이터 작업을 위한 비동기 처리 및 Scale out 기능을 제공한다
  • Local과 Remote 처리를 지원한다
  1. AyncItemProcessor / AsyncItemWriter: ItemProcessor에게 별도의 스레드가 할당되어 작업을 처리하는 방식
  2. Multi-threaded Step: Step 내 Chunk 구조인 ItemReader, ItemProcessor, ItemWriter 마다 여러 스레드가 할당되어 실행하는 방법
  3. Remote Chunking: 분산환경처럼 Step 처리가 여러 프로세스로 분할되어 외부의 다른 서버로 전송되어 처리하는 방식
  4. Parallel Steps: Step마다 스레드가 할당되어 여러 개의 Step을 병렬로 실행하는 방법
  5. Partitioning: Master/Slave 방식으로서 Master가 데이터를 파티셔닝 한 다음 각 파티션에게 스레드를 할당하여 Slave가 독립적으로 작동하는 방식

 

'두두의 IT > Spring' 카테고리의 다른 글

[Spring Batch] 02. Spring Batch 시작  (0) 2024.07.12
Spring Batch 개요 ?  (0) 2024.07.12
static / final / 상수  (0) 2023.04.18
Builder와 Getter/Setter  (0) 2023.04.18
int, Integer 차이  (0) 2023.04.17