Elastic Job

김도비·2024년 9월 20일
0

Etc

목록 보기
6/6

이번에 배치작업을 이중화하는 요건이 생겨 기존 Quartz 아닌 다른 오픈소스를 찾아보다가 적어본다.

주기적인 작업이외에 단발성 작업이 많이 발생하는데 해당 작업이 여기에 잘 맞을지는 의문이지만 적용가능한지는 기술 검토중에 있다.

Apache ShardingSphere의 서브 프로젝트로, 분산 작업 스케줄링을 제공하는 오픈소스 라이브러리. 주로 대규모 시스템에서 안정적인 배치 작업을 처리하기 위한 목적으로 개발되었습니다. ElasticJob은 Quartz와 비슷한 기능을 제공하며, 특히 분산 환경에서 고가용성, 확장성, 장애 복구 등을 지원하는 것이 큰 특징

ElasticJob 특징

1. 분산 스케줄링

ElasticJob은 여러 노드에서 동시에 작업을 실행하고, 각 노드에 작업을 분배하여 실행 제공

2. 샤딩(Sharding)

작업을 여러 부분으로 나누어 여러 노드에서 분할 실행할 수 있으며, 이를 통해 대규모 작업의 성능을 극대화 가능

3. 장애 복구

작업 실행 중 문제가 발생한 노드가 있으면, 다른 노드가 자동으로 작업을 인계받아 처리 가능

4. 유연한 확장성

작업의 스케줄을 쉽게 관리하고 새로운 노드를 추가하여 작업의 성능을 수평적으로 확장 가능

5. 다양한 작업 유형 지원

SimpleJob, DataflowJob, ScriptJob 등 다양한 유형의 배치 작업을 지원

ElasticJob 구성요소

Registry Center

ElasticJob은 Zookeeper를 사용하여 분산된 여러 노드의 작업 상태를 중앙에서 관리한다.
레지스트리 센터는 작업의 분할 상태(Sharding), 실행 상태 등을 관리하고, 작업의 조정(예: 작업 할당, 장애 복구)을 담당
Zookeeper를 통해 분산된 환경에서 노드 간의 상태 동기화를 효율적으로 처리

Scheduler

ElasticJob의 핵심 스케줄링 엔진으로, Quartz 기반으로 동작
주기적인 작업 스케줄을 관리하며, 지정된 시간에 맞춰 분산 환경에서 각 노드에 작업을 할당한다.
스케줄러는 분산된 환경에서도 작업의 트리거, 재시도, 장애 복구 등을 관리합니다.

Job Executors

ElasticJob은 세 가지 작업 실행 방식을 지원
1). SimpleJob : 단순한 배치 작업
2). DataflowJob: 대량의 데이터를 처리할 때 적합한 데이터 흐름 기반의 배치 작업
3). ScriptJob: 스크립트 기반의 작업으로, 외부 스크립트를 호출하여 실행하는 작업

샤딩

작업을 여러 개의 셰어드(shard)로 나누어 각 노드에 분배하여 실행할 수 있다. 이 기능은 대규모 작업을 분산 처리하여 처리 성능을 높이는 데 사용

profile
모든 걸 기록하자

0개의 댓글