전체 글
728x90

전체 글

728x90

    [Spring Webflux] WebClient (HTTP 클라이언트)

    WebClientRestTemplate를 대체하는 HTTP 클라이언트기존의 동기 API를 제공할 뿐만 아니라, 논블로킹 및 비동기 접근 방식을 지원해서 효율적인 통신이 가능요청을 나타내고 전송하게 해주는 빌더 방식의 인터페이스를 사용외부 API로 요청을 할 때 리액티브 타입의 전송과 수신(Mono, Flux)싱글 스레드 방식을 사용 Non-Blocking & Synchronouse2024.06.13 - [Spring] - [Spring WebFlux] 3. Non-Blocking, WebClient, Mono, subscribe [Spring WebFlux] 3. Non-Blocking, WebClient, Mono, subscribe2024.06.10 - [CS/OS] - 동기 VS 비동기, 블로킹 V..

    [Spring WebFlux] 3. Non-Blocking, WebClient, Mono, subscribe

    2024.06.10 - [CS/OS] - 동기 VS 비동기, 블로킹 VS 논블로킹 동기 VS 비동기, 블로킹 VS 논블로킹동기(Synchronous) vs 비동기(Asynchronous)Synchronous작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함Thread1이 작업을 시작시키고, Task1이 끝날때까지 기다렸다 Task2를 시작작업 요청을karla.tistory.com  본사에서 클라이언트로부터 도서 정보 조회 요청을 받으면 지점으로 도서 정보 조회 API 요청 보내는 예시코드(클라이언트 ↔️ 본사 ↔️ 지점) Spring MVCBlocking 방식: 스레드가 차단됨다섯개의 책을 조회하는 API호출 지연시간 : 약 25초 정도(호출당 5초 지연)// 본사 API Server: R..

    [Spring WebFlux] 2. 리액티브 스트림즈(Reactive Streams)

    리액티브 스트림즈 (Reactive Streams)리액티브 라이브로리를 어떻게 구현할지 정의해 놓은 별도의 표준 사양데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하깊 위한 리액티브 라이브러리의 표준 사양RxJava, Reactor(Spring Framework와 가장 궁합이 잘맞음), Akka Streams, Java 9 Flow API 등 리액티브 스트림즈 구성요소컴포넌트설명Publisher 데이터를 생성하고 통지(발행, 게시, 방출)하는 역할Subscriber구독한 Publisher로부터 통지(발행, 게시, 방출)된 데이터를 전달받아서 처리하는 역할SubscriptionPublisher에 요청할 데이터의 개수를 지정하고, 데이터의 구독을 취소하는 역할ProcessorPublis..

    [Spring WebFlux] 1. 리액티브 프로그래밍

    리액티브 프로그래밍(Reactive Programming)리액티브 시스템을 구축하는데 필요한 프로그래밍 모델리액티브 시스템은 비동기 메시지 통신을 기반으로 한다리액티브 시스템에서의 비동기 메시지 통신은 Blocking I/O 방식이 아닌, Non-Blocking I/O  방식의 통신선언적 프로그래밍, 실행할 동작을 구체적으로 명시하지 않고 목표만 선언데이터 소스의 변경이 있을 때마다 데이터 전파리액티브 프로그래밍 코드는 코드의 간결함과 가독성에 유리한 메서드 체인의 형태로 표현리액티브 프로그래밍 코드에서 파라미터를 가지는 메서드는 함수형 프로그래밍 방식의 코드 형태의 파라미터를 가짐 명령형 프로그래밍 VS 선언형프로그래밍명령형 프로그래밍// 6보다 더 크고 홀수인 숫자들의 합계를 구하는 것public c..

    동기 VS 비동기, 블로킹 VS 논블로킹

    동기(Synchronous) vs 비동기(Asynchronous)Synchronous작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함Thread1이 작업을 시작시키고, Task1이 끝날때까지 기다렸다 Task2를 시작작업 요청을 했을 때 요청의 결과값(return)을 직접 받음요청의 결과값이 return값과 동일호출한 함수가 작업 완료를 신경 씀Asynchronous시작, 종료가 일치하지 않으며 끝나는 동시에 시작을 하지 않음Thread1이 작업을 시작 시키고, 완료를 기다리지 않고, Thread1은 다른 일을 처리할 수 있음작업 요청을 했을 때 요청의 결과값(return)을 간접적으로 받음요청의 결과값이 return값과 다를 수 있음해당 요청 작업은 별도의 스레드에서 실행하게 됨콜백을 ..

    클러스터 인덱스, 넌클러스터 인덱스 (Clustered Index)

    인덱스 인덱스는 DB의 테이블에 데이터가 많을 때, 검색 속도를 향상시켜주기위해 사용하는 객체 컬럼을 정렬한 후에 데이터를 빠르게 찾을 수 있도록 도와주는 역할 클러스터 인덱스 테이블에 클러스터 인덱스를 적용할 때마다 그 테이블에 정렬 작업이 수반됨 클러스터 인덱스는 Primary Key처럼 한 테이블에 한 개만 생성할 수 있음 클러스터 인덱스는 데이터를 가리키는 포인터가 아닌 데이터를 저장한 블록의 포인터를 저장 넌클러스터 인덱스 비 클러스터 인덱스는 책의 색인(Index)과 같은 역할 데이터와 인덱스는 각각 다른 장소에 저장되므로 한 테이블에 여러 개의 비 클러스터 인덱스를 생성할 수 있음 데이터를 가리키는 포인터를 저장 예시 id를 PK로 지정하여 id의 순서에 따라 정렬됨 email에 넌클러스트인..