배달 못한 편지 대기열을 사용하여 반응형 이벤트 기반 앱 구축

배달 못한 편지 대기열을 사용하여 반응형 이벤트 기반 앱 구축

이벤트 기반 아키텍처는 사용자 프로필이 업데이트되는 경우와 같은 실제 이벤트에 시스템이 응답할 수 있도록 지원합니다. 이 게시물은 Spring WebFlux, Apache Kafka 및 Dead Letter Queue를 결합하여 데이터 손실을 처리하는 반응형 이벤트 기반 애플리케이션을 구축하는 방법을 보여줍니다. 이러한 기능을 함께 사용하면 대용량 데이터를 효율적으로 처리해야 하는 대규모 애플리케이션에 중요한 내결함성, 탄력성 및 고성능 시스템을 생성하기 위한 프레임워크를 제공합니다.

이 문서에 사용된 기능

  • 스프링 웹플럭스: 다음을 제공합니다. 반응형 패러다임 이는 이벤트 동시 처리를 위한 비차단 배압에 따라 달라집니다.
  • 아파치 카프카: 반응형 Kafka 생산자와 소비자는 유능하고 적응 가능한 처리 파이프라인을 구축하는 데 도움을 줍니다.
  • 반응형 스트림: Kafka 생산자 및 소비자 스트림의 실행을 차단하지 않습니다.
  • 배달 못한 편지 대기열(DLQ): DLQ는 여러 가지 이유로 처리할 수 없는 메시지를 임시로 저장합니다. DLQ 메시지는 나중에 메시지를 재처리하여 데이터 손실을 방지하고 이벤트 처리 탄력성을 높이는 데 사용될 수 있습니다.

반응형 카프카 생산자

Reactive Kafka 생산자는 메시지를 병렬로 푸시하고 게시하는 동안 다른 스레드를 차단하지 않습니다. 대용량 데이터를 처리하는 경우 유리합니다. 이는 Spring WebFlux와 잘 조화되며 마이크로서비스 아키텍처 내에서 역압을 처리합니다. 이러한 통합은 대용량 메시지 처리뿐 아니라 클라우드 리소스 관리에도 도움이 됩니다.

반응형 카프카 생산자

위에 표시된 반응형 Kafka 생산자를 찾을 수 있습니다. GitHub에서.

반응형 Kafka 소비자

Reactive Kafka Consumer는 차단 없이 Kafka 메시지를 가져오고 높은 처리량을 유지합니다. 또한 역압 처리를 지원하고 실시간 데이터 처리를 위해 WebFlux와 완벽하게 통합됩니다. 반응적 소비자 파이프라인은 리소스를 잘 관리하며 클라우드에 배포된 애플리케이션에 매우 적합합니다.

반응형 Kafka 소비자

위에 표시된 반응형 Kafka 소비자를 찾을 수 있습니다. GitHub에서.

배달 못한 편지 대기열(DLQ)

DLQ는 생산자가 보낸 메시지를 저장하고 처리되지 않는 간단한 Kafka 주제입니다. 실시간으로 시스템이 막힘이나 오류 없이 작동해야 하며 이는 이벤트 기반 아키텍처에서 이러한 메시지를 배달 못한 편지 대기열로 리디렉션하여 달성할 수 있습니다.

배달 못한 편지 대기열 통합의 이점

  • 이는 메시지 흐름이 중단되지 않도록 하는 대체 메커니즘을 제공합니다.
  • 처리되지 않은 데이터를 보존하고 데이터 손실을 방지하는 데 도움이 됩니다.
  • 오류에 대한 메타데이터를 저장하여 궁극적으로 근본 원인을 분석하는 데 도움이 됩니다.
  • 처리되지 않은 메시지를 처리하기 위해 재시도 횟수를 제공합니다.
  • 오류 처리를 분리하고 시스템을 탄력적으로 만듭니다.

실패한 메시지는 아래와 같이 생산자 코드에서 DLQ로 푸시될 수 있습니다.

생산자 코드

아래와 같이 반응형 소비자에서 DLQ 핸들러를 생성해야 합니다.

DLQ 행위

결론

반응형 생산자 및 소비자와 DLQ를 통합하면 복원력이 뛰어나고 내결함성이 있으며 효율적인 이벤트 기반 애플리케이션을 구축하는 데 도움이 됩니다. 반응형 생산자는 비차단 메시지 게시를 보장합니다. 반면, 반응형 소비자는 배압을 사용하여 메시지를 처리하여 응답성을 향상시킵니다. DLQ는 중단을 방지하고 데이터 손실을 방지하는 대체 메커니즘을 제공합니다.

위의 아키텍처는 시스템 오류 격리를 보장하고 애플리케이션 개선을 위해 추가로 해결할 수 있는 디버깅에 도움이 됩니다.

위의 참조 코드는 GitHub 생산자 및 GitHub 소비자에서 찾을 수 있습니다.

반응형 생산자 및 소비자에 대한 자세한 내용은 ReactiveEventDriven에서 확인할 수 있습니다. Spring Apache Kafka는 DLQ에 관한 추가 정보를 문서화합니다.

출처 참조

Post Comment