[Spring WebFlux] 2. 리액티브 스트림즈(Reactive Streams)
·
Spring
리액티브 스트림즈 (Reactive Streams)리액티브 라이브로리를 어떻게 구현할지 정의해 놓은 별도의 표준 사양데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하깊 위한 리액티브 라이브러리의 표준 사양RxJava, Reactor(Spring Framework와 가장 궁합이 잘맞음), Akka Streams, Java 9 Flow API 등 리액티브 스트림즈 구성요소컴포넌트설명Publisher 데이터를 생성하고 통지(발행, 게시, 방출)하는 역할Subscriber구독한 Publisher로부터 통지(발행, 게시, 방출)된 데이터를 전달받아서 처리하는 역할SubscriptionPublisher에 요청할 데이터의 개수를 지정하고, 데이터의 구독을 취소하는 역할ProcessorPublis..
[Spring WebFlux] 1. 리액티브 프로그래밍
·
Spring
리액티브 프로그래밍(Reactive Programming)리액티브 시스템을 구축하는데 필요한 프로그래밍 모델리액티브 시스템은 비동기 메시지 통신을 기반으로 한다리액티브 시스템에서의 비동기 메시지 통신은 Blocking I/O 방식이 아닌, Non-Blocking I/O  방식의 통신선언적 프로그래밍, 실행할 동작을 구체적으로 명시하지 않고 목표만 선언데이터 소스의 변경이 있을 때마다 데이터 전파리액티브 프로그래밍 코드는 코드의 간결함과 가독성에 유리한 메서드 체인의 형태로 표현리액티브 프로그래밍 코드에서 파라미터를 가지는 메서드는 함수형 프로그래밍 방식의 코드 형태의 파라미터를 가짐 명령형 프로그래밍 VS 선언형프로그래밍명령형 프로그래밍// 6보다 더 크고 홀수인 숫자들의 합계를 구하는 것public c..
[Spring WebFlux] 3. Non-Blocking, WebClient, Mono, subscribe
·
Spring
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..
JVM (Java Virtual Machine) 개념, JDK, JRE
·
Java
1. 정의 및 특징자바코드로 작성된 프로그램이 CPU나 운영체제 등의 환경에 상관없이 독립적으로 동일하게 동작될 수 있게 만들어진 프로그램자바코드로 작성된 프로그램은 컴파일될 때, 컴파일러(javac)에 의해 바이너리 코드로 변환된 .class 파일로 변환되는 것을 볼 수 있는데 이 파일을 JVM으로 실행시키기 때문에 동일하게 동작될 수 있음때문에 JVM이 구동될 수 있는 환경이라면 모두 실행이 가능하기 때문에 높은 이식성을 보인다. 2. JVM의 실행과정JVM은 Class Loader, Execution Engine, Runtime Data Area, Garbage Collector 4가지의 구성으로 나눌 수 있다.정리부터 하자면 컴파일된 소스코드(.class)를 Class Loader를 통해 Runt..
[Spring Webflux] WebClient (HTTP 클라이언트)
·
Spring
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..
동기 VS 비동기, 블로킹 VS 논블로킹
·
CS/OS
동기(Synchronous) vs 비동기(Asynchronous)Synchronous작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함Thread1이 작업을 시작시키고, Task1이 끝날때까지 기다렸다 Task2를 시작작업 요청을 했을 때 요청의 결과값(return)을 직접 받음요청의 결과값이 return값과 동일호출한 함수가 작업 완료를 신경 씀Asynchronous시작, 종료가 일치하지 않으며 끝나는 동시에 시작을 하지 않음Thread1이 작업을 시작 시키고, 완료를 기다리지 않고, Thread1은 다른 일을 처리할 수 있음작업 요청을 했을 때 요청의 결과값(return)을 간접적으로 받음요청의 결과값이 return값과 다를 수 있음해당 요청 작업은 별도의 스레드에서 실행하게 됨콜백을 ..