대규모 시스템 (8) 썸네일형 리스트형 RabbitMQ 라우팅 키로 구분하여 하나의 큐로 메세지 보내기 DirectExchangeConfig더보기package com.example.direct;import org.springframework.amqp.core.*;import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class DirectExchangeConfig { @Bean public Jackson2JsonMessageConverter producerJackson2Messa.. RabbitMQ - Listener 구분하기 1. Key를 사용해 구분하기메시지 전송 rabbitTemplate.convertAndSend("orderExchange", "order.create", "create");rabbitTemplate.convertAndSend("orderExchange", "order.cancel", "cancel"); Listener 설정@Componentpublic class OrderListener { @RabbitListener(queues = "orderQueue") public void handleOrderMessages(String message, @Header("amqp_receivedRoutingKey") String routingKey) { if ("order.create".equ.. SAGA Pattern SAGA 패턴이란?Saga 패턴은 분산 시스템에서 트랜잭션을 관리하기 위한 디자인 패턴입니다. 특히 마이크로서비스 아키텍처와 같은 분산 환경에서 데이터의 일관성을 유지하고, 복잡한 트랜잭션을 처리하는 데 유용합니다.주요 개념트랜잭션의 분할: 전통적인 트랜잭션이 여러 서비스에 걸쳐서 실행될 때, 이를 작은 단위의 트랜잭션으로 나누어 처리합니다. 각 단위 트랜잭션을 "사가(Saga)"라고 합니다.사후 조치(Compensating Action): 만약 하나의 사가가 실패할 경우, 이미 성공한 사가들을 취소하거나 되돌리기 위해 "보상 조치"를 실행합니다. 이 보상 조치는 실패한 사가의 영향을 상쇄하도록 설계됩니다.단계적 수행: 사가는 여러 단계로 나누어 실행되며, 각 단계는 독립적으로 성공하거나 실패할 수 있습.. Kafka 기본 설정 Kafka 설치도커 컴포즈를 사용하여 kafka 컨테이너 생성. docker-compose.yml 파일을 생성합니다.services: zookeeper: image: confluentinc/cp-zookeeper:latest platform: linux/amd64 ports: - "2181:2181" environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 kafka: image: wurstmeister/kafka:latest platform: linux/amd64 ports: - "9092:9092" environment: KAFKA_ADVERTISE.. Kafka란? Kafka란?Kafka는 분산 스트리밍 플랫폼으로, 주로 실시간 데이터 피드의 빅 데이터 처리를 목적으로 사용됩니다.Kafka는 메시지 큐와 유사하지만, 대용량 데이터 스트림을 저장하고 실시간으로 분석하거나 처리하는 데 중점을 둡니다.Kafka의 역할실시간 데이터 처리: 대용량 데이터를 실시간으로 처리하고 분석합니다.데이터 통합: 다양한 소스에서 데이터를 수집하고 이를 통합하여 분석합니다.내결함성: 데이터 손실 없이 안정적으로 데이터를 저장하고 전송합니다. Kafka의 기본 구성 요소 메시지(Message) 메시지는 Kafka를 통해 전달되는 데이터 단위입니다. 예를 들어, 로그 데이터나 이벤트 데이터가 메시지가 될 수 있습니다.메시지는 키(key), 값(value), 타임스탬프(timestamp),.. RabbitMQ 기본 설정 도커를 사용하여 RabbitMQ를 설치합니다.docker run -d --name rabbitmq -p5672:5672 -p 15672:15672 --restart=unless-stopped rabbitmq:managementlocalhost:15672에 접속하면 로그인 페이지가 보입니다. guest/guest를 입력하여 접속하면 대시보드를 볼 수 있습니다. 흐름도 Order Applicationbuild.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-amqp' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'or.. RabbitMQ란? RabbitMQ란?RabbitMQ는 메시지 브로커입니다. 메시지 브로커는 데이터(메시지)를 송신자(프로듀서)로부터 수신자(컨슈머)에게 전달하는 중간 매개체 역할을 합니다.RabbitMQ는 이러한 메시지를 큐(queue)에 저장하고, 필요할 때 적절한 수신자에게 전달합니다.RabbitMQ 역할비동기 처리: 데이터를 비동기적으로 처리하여 시스템의 응답성을 높입니다.부하 분산: 여러 소비자에게 메시지를 분산시켜 시스템의 부하를 균형 있게 분산합니다.내결함성: 메시지를 안전하게 저장하여 시스템 장애 시 데이터 손실을 방지합니다.RabbitMQ 기본 구성 요소메시지(Message)메시지는 RabbitMQ를 통해 전달되는 데이터 단위입니다. 예를 들어, 사용자 등록 정보나 주문 내역이 메시지가 될 수 있습니다. 프.. 대규모 시스템이란? 대규모 시스템이란?대규모 시스템이란, 많은 사용자, 데이터, 트래픽을 동시에 처리할 수 있도록 설계된 확장 가능하고 고가용성을 갖춘 분산 시스템입니다단순히 많은 사용자를 처리하는 것뿐만 아니라, 안정성과 신뢰성을 유지하면서 고성능을 제공해야 합니다. 분산 트랜잭션분산 트랜잭션은 여러 개의 독립된 시스템이나 데이터베이스에서 동시에 일어나는 트랜잭션을 일관되게 관리하는 방법입니다.단일 트랜잭션이 여러 시스템에 걸쳐 발생할 때, 모든 시스템이 해당 트랜잭션을 성공적으로 완료하거나, 모든 시스템이 트랜잭션을 실패로 처리하도록 보장합니다. 이를 통해 데이터의 일관성을 유지할 수 있습니다.분산 트랜잭션이 필요한 이유는 마이크로서비스 아키텍처에서 여러 서비스가 독립적으로 운영되기 때문입니다 분산 트랜잭션 관리 기법.. 이전 1 다음