24.05.07 16:39 작성
·
279
0
Kafka를 사용하는 주된 이유 중 하나는 확실히 데이터 처리의 유연성과 부하 분산에 있습니다. Kafka를 활용함으로써, 많은 양의 이벤트(예: 쿠폰 발행 요청)를 바로 처리하지 않고 큐에 보관했다가, 시스템의 부하가 적은 시기에 또는 자원이 더욱 충분할 때 일괄적으로 처리할 수 있게 됩니다.
kafka 관련해서 다른 분 질문에 답글이 위처럼 달린 것을 확인했는데요.. 큐에 보관했다가 일괄적으로 처리를 할 수 있다고 했는데 그럼 컨슈머 listener 에 언제 카프카에 있는 이벤트를 받아서 처리할 것인지에 대한 설정을 할 수 있는 것인가요?
시스템 부하가 적은 시기나 자원이 충분할 때가 언제인지 어떻게 알고 처리를 하는지 궁금합니다.
답변 2
0
2024. 05. 12. 21:30
tete 님 안녕하세요.
Kafka 를 사용할 때 큐에 보관을 해놓았고 이벤트를 순차적으로 처리할 수 있습니다.
이러한 특성을 이용하여 100개의 요청을 한번에 하는것이 아닌 100번에 나누어서 할 수 있게됩니다.
또는, 100개의 요청을 적재만 해두고 이벤트가 모두 종료된 후 트래픽이 낮아졌을 때 컨슈머를 실행시켜 이벤트를 처리할수도 있습니다.
시스템 부하가 적은 시기나 자원이 충분할 때는 시스템 모니터링을 통해서 알 수 있습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
tete님의 질문에 대해 답변드리겠습니다. Kafka는 특정한 부하 상황이나 시스템 자원의 상태를 기반으로 자동으로 이벤트를 처리하도록 스케줄링하는 기능을 직접 제공하지 않습니다. 대신, Kafka를 사용하는 애플리케이션 또는 Kafka Streams 같은 클라이언트 라이브러리를 이용하여 개발자가 명시적으로 이런 처리를 구현해야 합니다.
예를 들어, Kafka Streams를 사용하면 스트림 처리를 위한 다양한 기능을 활용할 수 있는데, 이 때 애플리케이션의 상태 관리나 프로세싱 시간과 이벤트 타임을 구분하는 등의 처리를 통해 시스템의 리소스 상황에 맞춰서 조금 더 효과적으로 데이터를 처리할 수 있습니다. 하지만, 시스템 부하가 적은 시간을 자동으로 감지하고 그에 맞춰서 처리를 스케줄링하는 로직은 개발자가 직접 구현해야 합니다.
일반적으로 이벤트 처리 시기나 배치 처리의 타이밍은 애플리케이션의 비즈니스 로직, 시스템의 성능 모니터링 도구, 또는 외부 스케줄러 등을 통해 결정되며, Kafka 자체의 설정으로는 이를 직접 제어하기 어렵습니다.
자세한 내용은 Kafka Streams에 대해 더 알아보시길 추천드립니다.
URL: Kafka Streams Documentation