공부/MSA

· 공부/MSA
org.apache.kafka:kafka_2.13와 org.springframework.kafka:spring-kafka 두 가지 의존성은 각각 Apache Kafka와 Spring Kafka 라이브러리를 제공합니다. 이 둘은 서로 다른 목적을 가지고 있으며, 주로 Kafka를 사용할 때 함께 사용되지만, 서로 다른 역할을 수행합니다.org.apache.kafka:kafka_2.13이 의존성은 Apache Kafka 클라이언트를 제공합니다. Kafka 클라이언트는 Kafka 브로커와 상호작용하기 위한 기본적인 라이브러리입니다. 이를 통해 프로듀서와 컨슈머를 직접 구현할 수 있습니다. 2.13 부분은 Scala 버전과 관련이 있으며, Kafka가 Scala로 작성되었기 때문에 필요합니다.주요 기능:Kafk..
· 공부/MSA
UserServiceDockerfile 파일 만들기  DockerfileFROM openjdk:17-ea-jdk-slim#tmp 디렉토리 생성VOLUME /tmp# 복사를 할 때 docker파일이 포함되어 있는 디렉토리나 파일을 복사해야한다.COPY target/user-service-1.0.jar UserService.jar# ENTRYPOINT :이미지가 실행될 때 어떤 커맨드를 가지고 할 것인지# 명령을 입력할 때 공백을 리스트 형태롤 앞에 bracket하고 여러 개 나눠서 입력ENTRYPOINT ["java","-jar","UserService.jar"]  터미널UserService 프로젝트를 인텔리제이에서 하면 컴파일 해준다.하지만 따로 cmd를 켜서 할 경우, 컴파일을 수동으로 해주면 된다.테..
· 공부/MSA
애플리케이션 배포를 위한 컨테이너 가상화(Docker 컨테이너) Virtualization   Docker Virtualization  Docker Image한 서버에서 여러 개의 컨테이너를 실행할 수 있다.💡 Image컨테이너가 실행에 필요한 설정값/정보를 가지고 있는 것💡 Registry이미지가 저장될 수 있는 저장소.Public Registry로 많이 사용되는 사이트로를 Docker Hub 사이트가 있다.Private Registry를 운영할 수도 있다. 간단한 서버를 하나 기동해서 Private Registry를 운영할 수도 있다.   Dockerfile      -p 3306:3306-p : 포트 포워딩을 하겠다앞 3306 : 호스트 pc에서 접근하고자 하는 포트번호뒤 3306 : 컨테이너에..
· 공부/MSA
💡 Zipkin 홈페이지 링크 분산 추적을 하기 위해서 추적 정보 즉 트레이싱 정보를 저장하기 위한 서비스가 Zipkin이다. - Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈소스) - Google Drapper에서 발전하였으며, 분산 환경에서의 시스템 병목 현상 파악 - collerctor, Query Service, databaem WebUI로 구성 Span - 하나의 요청에 사용되는 작업 단위 - 64 bit unique ID Trace - 트리 구조로 이루어진 Span set - 하나의 요청에 대한 같은 Trace ID 발급 💡 Spring Cloud Sleuth 홈페이지 링크 마이크로 서비스가 여녈되어 있는 상태 값을 추적해서 누가 누구를 호출했고 시간이 ..
· 공부/MSA
목록 CicuitBreaker Resilience4j Distributed Tracing Trace ID and Span ID Zipkin server 활용 MicroService간의 통신인식, 발생할 수 있는 대표적인 오류의 해결 방법 해결 방법 : CicuitBreaker 500번 에러를 보여주는 것이 아니라 200번(성공)을 보여주고 데이터가 없는 형태처럼 보여준다. 비록 OrderService를 통해 정상적인 주문 내역이 보이지는 않지만, User Service가 가지고 있었던 원래 사용자의 정보 목로을 보는 부분에서는 문제없이 정상적인 처리가 된다. 이렇게 문제가 생겼던 service나 fuction을 더 이상 사용하지 않도록 막고, 정상적으로 복구가 되면 이전처럼 정상적인 흐름으로 바꿔주는 장..
· 공부/MSA
👀 Connect와 Connector 차이 Apache Kafka에서는 Kafka Connect라는 이름으로 데이터 이동을 위한 도구를 제공합니다. 이 도구의 핵심 구성 요소는 Connectors(커넥터)입니다. 👀 Kafka 와 Kafka Connector 차이 Kafka 목적: 데이터를 안전하게 저장하고, 실시간으로 처리하며, 다양한 애플리케이션 간에 데이터를 전송하는 플랫폼입니다. 데이터의 Pub/Sub(발행/구독)을 중심으로 데이터를 관리합니다. 역할: 메시지 큐나 데이터 파이프라인의 역할을 수행하여 데이터를 안전하게 저장하고, 다양한 소비자에게 실시간으로 전달합니다. 사용 사례: 대규모 데이터 스트리밍, 로그 처리, 이벤트 기반 마이크로서비스 아키텍처, 데이터 수집 및 분석 등에 사용됩니다. 구..
· 공부/MSA
Orders Service에 요청된 주문 정보를 DB가 아니라 Kafka Topic으로 전송 Kafka Topic에 설정된 Kafka Sink Connect를 사용해 단일 DB에 저장 → 데이터 동기화 H2 DB → MariaDB 변경 step 1. Orders Service의 JPA데이터베이스 교체 (H2 DB → MariaDB) - MariaDB에서 table 생성 show databases; use mydb; //사용하고자 하는 database명 입력 show tables; orders 테이블 생성(mariaDB에서 테이블 생성해두기) 매번 실행할 때 생성하지 말고 그냥 하나 생성해둠.. create table orders ( id int auto_increment primary key, user_..
· 공부/MSA
Order-service 요청된 주문의 수량 정보를 Catalog-service에 반영 Order-service에서 kafka Topic으로 메시지 전송 → Producer Catalog-service에서 kafaka topic에 전송된 메시지 취득 → Consumer Concurrent kafkaListenerContainerFactory : 토픽에 변경 사항이 있는지 계속 리스닝하고 있고 이벤트가 발생했을 때 그걸 캐치할 수 있는 리스너 데이터를 지정해 줄 때 토픽에 저장되는 값이 어떤 형태로 저장될지 지정할 수 있다. 그 중 하나가 key-value값이다. 그래서 key-value값으로 저장되었을 때, 역으로 해석해서 사용해야 한다. 그때 Deserializer 라는 타입을 지정하게 된다. 데이터를..
· 공부/MSA
Kafka 자신들이 전송하는 데이터가 어떤 시스템에 저장되는지 관계하지 않고 무조건 Kafka 하나만 상대하면 된다. 카프카에 쌓였던 데이터 메시지들도 하둡이라던가 모니터링 시스템, 서치 엔진, 다른 어플리케이션, 이메일 쪽으로 데이터를 전달해줄 때도 카프카로부터 받아오면 되기 때문에 단일 포맷을 사용할 수 있다. 그럼 보내는 쪽과 받는 쪽이 누가 보냈고 누가 받았는지 전혀 신경쓰지 않는 상태에서 메시지를 주고 받는게 가능해진다. 메시지 보내는 쪽을 Producer 메시지 받는 쪽을 Concumer라고 한다. 특징 프로듀서, 컨슈머 분리해서 작업한다. 하나의 메시지에 여러 컨슈머 가능 다양한 형태의 여러 컨슈머에 전달할 수 있다. 높은 처리량을 위한 메시지 최적화 시켜서 내부적으로 보관하고 있다 카프카 ..
· 공부/MSA
동기화 문제 order-service를 2개 기동 후, 한 User로 5번의 주문을 해보았다. 2개의 order 서버에서 돌아가면서 각자의 DB에 저장된 것을 확인했다. 같은 order-service니까 하나의 DB를 사용하게 할 수는 없을까? 해결 1) 하나의 Database 사용 하나의 DB를 사용하기 위해서는 트랜잭션 관리 동시성 관리를 잘 해줘야 한다. 해결 2) Database간의 동기화 Kafka, RabbitMQ를 사용하여 해결 3) DB(해결방법 1) + Kafka Connector(해결방법 2) 하나의 DB + 큐잉메시지
sesam
'공부/MSA' 카테고리의 글 목록