전체 글 썸네일형 리스트형 api 동시 요청 수 제한하는 방법 스프링부트에 내장되어 있는 서블릿 컨테이너인 톰캣이 다중요청을 처리해줌 톰캣은 다중 요청을 처리하기 위해 부팅 시 스레드 컬렉션인 스레드풀을 생성함 유저 요청이 들어오면 스레드 풀에서 하니씩 스레드를 할당 해당 스레드에서 부트에서 작성한 디스패처서블릿을 거쳐 유저 요청을 처리함 작업을 수행하고 나면 스레드는 스레드 풀로 반환 됨 스프링부트에서는 서블릿 컨테이너인 내장 톰캣에서 웹 애플리케이션을 실행하면서 여러 api 요청을 처리할 때 기본적으로 api 요청이 들어올 때마다 새로운 스레드를 생성하여 다중 스레드를 사용하여 병렬적으로 요청을 처리함 내부적으로 스레드 풀을 사용하여 효율적으로 스레드를 관리함 각각의 스레드는 독립적으로 해당 요청을 처리하므로 여러 요청이 동시에 처리될 수 있음 -> api 요청.. 더보기 [Spring] WebClient와 RestTemplate WebClient: 리액티브 프로그래밍: WebClient은 리액티브 프로그래밍 원칙에 따라 설계되었으며, Spring WebFlux 모듈의 일부입니다. 비동기 및 리액티브 스트림을 지원합니다. 비동기 작업: WebClient은 비동기 작업을 수행할 수 있어, 대규모 동시 요청을 효율적으로 처리할 수 있습니다. 플루언트 API: WebClient은 요청을 생성하는 데 사용되는 플루언트 API를 제공하여 간결하고 표현력있게 코드를 작성할 수 있습니다. 엑스체인지 메서드: RestTemplate과 마찬가지로 WebClient도 exchange 메서드를 제공하여 다양한 HTTP 메서드를 지원합니다. RestTemplate: 전통적인 방식: RestTemplate은 전통적인 방식으로 동기적으로 동작하며, Spr.. 더보기 [Kafka] 카프카 - 스프링 부트 프로젝트 1. 의존성 추가 implementation 'org.springframework.kafka:spring-kafka' 2. application.properties 설정 # Kafka Bootstrap Servers spring.kafka.bootstrap-servers=localhost:9092 # Kafka Producer Configuration spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer # Kafka Consum.. 더보기 [Kafka] 메시지큐(Message Queue)와 메시지 브로커(Message Broker) Q. 메시지 큐와 메시지 브로커는 같은 말 일까?A. 비슷하지만 다른 말! 1. 메시지 큐(Message Queue)메시지를 순차적으로 저장하고 전달하는 큐 시스템메시지를 줄 세워 놓는 큐 구조송신자가 메시지를 넣고, 수신자가 순서대로 꺼내가는 구조FIFO(선입선출) 방식이 일반적단순히 메시지를 안전하게 전달하고 순서를 보장하는데 초점대표예시: RabbitMQ, Amazon SQS 👇🏻 자세한 설명더보기메시지 큐(Message Queue)는 분산 시스템에서 다양한 컴포넌트 간에 비동기적으로 데이터를 교환할 수 있게 해주는 중간 매개체입니다. 메시지 큐는 송신자(Sender)가 메시지를 생성하고, 이를 메시지 큐에 전송하며, 수신자(Receiver)가 메시지 큐에서 메시지를 받아 처리하는 형태로 동작합.. 더보기 [Kafka] docker, docker-compose로 카프카 실행하기 docker-compose로 kafka와 zookeeper를 한번에 실행하기로컬에서 테스트 목적이라면 Docker로 Kafka + Zookeeper를 한 번에 띄우는 게 훨씬 깔끔하고 안정적이기 때문에 선택 1. Homebrew 또는 바이너리 파일로 설정하는 방법과 Docker 설치 비교항목Homebrew or 바이너리Docker설치 간편성상대적으로 복잡docker-compose up 한 줄이면 끝환경 설정JAVA_HOME, PATH, 버전 충돌 등 번거로움컨테이너 내부에 다 들어 있음제거 & 초기화수동 삭제 필요docker rm, docker-compose down으로 깔끔하게버전 전환복잡이미지 태그만 바꾸면 됨고립성호스트 환경에 의존완전 격리된 실행 환경 2. docker-compose 파일 작성하.. 더보기 스프링부트/JDK/gradle 버전 낮추기 build.gradle 스프링부트 버전을 2.3.9. RELEASE 버전으로 의존성 매니저 버전을 1.0.11.RELEASE 버전으로 JDK 버전을 8 버전으로 변경 plugins { id 'java' id 'org.springframework.boot' version '2.3.9.RELEASE' id 'io.spring.dependency-management' version '1.0.11.RELEASE' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = JavaVersion.VERSION_1_8 } configurations { compileOnly { extendsFrom annotationProcessor .. 더보기 [Kafka] 맥북 m2 homebrew 카프카 설치 1. 설치하기아래 명령어 입력하면 끝!$ brew install kafka 2. 실행 1) 주키퍼(zookeeper) 실행주키퍼 실행 명령$./bin/zookeeper-server-start.sh ./config/zookeeper.properties 카프카 실행 하기 전 주키퍼 먼저 실행해야함(주키퍼 먼저 실행 안해서 아래와 같이 에러 발생)[2023-12-05 10:38:59,603] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$) [2023-12-05 10:38:59,731] INFO Setting -D jdk.tls.rejectClientInitiatedRenegotiati.. 더보기 [Kafka] 카프카(Kafka) - 컨슈머(consumer) 1. 컨슈머(consumer)카프카 토픽에서 데이터(이벤트 또는 메시지)를 읽어오는 주체예: 실시간 로그 수집기, 데이터 처리 서버, 분석 시스템 등특정 토픽에 대해 구독(subscribe)을 하여 새로운 이벤트가 발생할 때마다 해당 이벤트를 처리함(poll + logic)컨슈머는 컨슈머 그룹에 속함 2. 컨슈머의 주요 역할구독(Subscribe), 파티션 할당, 메시지 처리, 오프셋 관리, 멱등성 처리, 확장성 처리, 종료 및 예외 처리, 스레드 관리역할설명구독(Subscribe)특정 토픽을 구독하여 메시지 수신파티션 할당그룹 단위로 토픽의 파티션을 분배받음메시지 처리poll()로 받은 레코드를 실제로 처리오프셋 관리마지막으로 읽은 메시지 위치를 저장 (자동/수동)멱등성 처리재처리 시 중복 처리 방지를.. 더보기 이전 1 ··· 17 18 19 20 21 22 23 ··· 82 다음