728x90
반응형
SMALL
상황
현재 어떤 서비스는 여러 파드 기반에 하나의 파드 내에서 @Schedule 어노테이션을 통해서 하나의 스케줄러가 동작을 하고 있는 상황이다. 일정한 양의 데이터를 처리한다면 이슈가 없겠지만, 갑자기 데이터가 많아진다면 현재의 스케줄러가 부하가 있을 수 있는 상황이다. 어떻게 대처를 할 것인지?
해결방안 생각
- 각 파드마다 스케줄러를 돌리게 하는 동시에 데이터들을 각 파드에 나눠서 처리하게 하는 방식
- 환경변수를 이용해서 조건절을 사용하는 방식으로 분할해서 처리하는 방식을 생각할 수 있을거 같음
- 스케일 업 하는 방식
- 큐를 사용하는 방식
- RabbitMq나 Kafka를 써서 순서대로 데이터 오는데로 Bulk 단위로 처리하는 방식
- 한 파드 내에서 스케줄러 처리에 대해서 한계가 있으므로 큐에 모이는 속도를 딜레이를 줘야 할 듯
분석
- 내가 생각하기에는 3개 방식 중에서 가장 간편한 방법이면서도 효과적일 거 같음
- 단순히 스케일 업 하는 방식은 한계가 있는 것도 있고 단순히 사양을 늘린다 해서 효과도 없을 거 같음
- 큐 세팅이 보다 복잡할 거 같고, 1번에 비해서 어떤 장점이 있는지를 잘 모르겠음
우려하는 점
- 환경변수로 조건절을 분기처리를 한다고 하면 중복되는 영역이 없어야 함. 만약 있다면 중복처리 되는 이슈가 생길 수 있음
- X
- 세팅은 복잡하지만 1번 처럼 중복에 대한 이슈는 없을 거 같음.
728x90
반응형
LIST
'Java' 카테고리의 다른 글
Java 멀티스레딩: Runnable과 Callable 인터페이스의 차이점 (0) | 2024.04.07 |
---|---|
일반 재귀 대 테일리 커전: 깊은 이해와 올바른 선택 (0) | 2024.04.01 |
Java 8 스트림(Stream) 이해하기: 데이터 처리의 혁신 (0) | 2024.01.29 |
Java에서 hashCode()와 equals()를 함께 오버라이드하는 이유 (1) | 2024.01.22 |
synchronize 라는 키워드를 함수에 사용하면 어떻게 동작해야 하나요? (1) | 2023.12.27 |