일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링 공부
- 스프링
- JPA 공부
- 코테준비
- DDD
- JPA공부
- Kafka
- Axon framework
- Flutter
- querydsl
- 기술공부
- 기술면접공부
- 플러터 공부
- JPA스터디
- 스프링부트
- 스프링부트공부
- K8S
- 자료구조공부
- 카프카
- JPA예제
- nestjs
- 플러터 개발
- 스프링공부
- JPA
- 코테공부
- nestjs스터디
- 자바공부
- 알고리즘공부
- nestjs공부
- 프로그래머스
- Today
- Total
목록Develop/[WebFlux] (5)
DevBoi
가끔 깜빡깜빡하다가 아차차..하던것들 Spring Mvc Spring Mvc는 Thread per Request이다. 쓰레드풀의 하나의 쓰레드를 리퀘스트에 쓰는 것이다. 쓰레드 하나가 모든일을 사용하고, 중간에 이 과정은 block된다. 시스템 부하가 크다면, 단순히 외부 network IO를 처리하는 것 자체에 서버 속도 처리 spec이 달라진다는 것이 문제이다. Webflux는 netty 기반이고, nginx와 동일하게, 이벤트 루프를 사용하여, 쓰레드를 사용한다. 단적인 예는 위의 그림과 같다. 하나의 쓰레드에서 외부 Api를 호출하고, 이 과정이 끝나면 다음 테스크에서는 이벤트 루프의 응답을 받은 쓰레드에서 이어서 처리를 한다. 높은 처리가 가능한 이유는, 각 쓰레드당 free한 쓰레드가 많아진다..
컴포넌트 탐색, 스프링 애플리케이션이 실행되면, 모든 빈은 애플리케이션 컨텍스트에 등록이 된다. 실제로 이제 코딩을 시작해보자 1.ServerController 해당 컨트롤러에서는 서비스에 대한 주입과, 다량의 특정 객체를 반환하는 메서드, 그리고 그 메서드는 서비스의 getDish를 통해서 반환한다. 그리고 produces에서 텍스트 이벤트 스르팀 벨류라는 미디어 타입이있는데, 해당 은 서버에서 주는 스트림을 쉽게 소비한다. 미디어 타입에 대한건 다른 포스팅에서 다뤄보자 2. kitchenService @Service는 해당 서비스를 스프링 빈에등록하기 위함이다. 아까 컨트롤러에서 사용한 getDishes() 메소드는, randomDish를 통해 랜덤으로 호출된 것을 return 한다. generate..
1. Start.spring.io 접속, 몇몇 필요한 의존성들을 추가해주고, 해당 추가 사항을 바탕으로 프로젝트를 생성, 이클립스에서 해당 프로젝트를 오픈해준다. parent에서는 그룹아이디나 버전에 대한 정보가 들어가있다. 그리고 해당하위에는 java 버전, 또한 프로젝트 속성값들에 대한 내용들이 있다.
리액티브 프로그래밍을 써야할 정도의 대규모 서비스가 많지 않았다. 작은 서비스의 서버에서, 대규모에 대한 걸 처리하려면 단순히 서버를 더 투입하면 되지 라는 생각이지만 사실 요새는 그렇지 않다. 작은 스타트업도 대규모의 데이터를 처리해야한다. "기존 자원을 더 효율적이고 일관성 있게 사용하는 방법?" -> 리액티브 스트림이다.(수요 조절에 기반한다.) 논블로킹, 비동기 프로그래밍 모델 함수형 프로그래밍 스타일 스레드를 신경 쓸 필요 없는 동시성 또한 메소드 처리 이후에, doOnNext,doOnError,DoOnComplete 등을 사용해서, 해당 이벤트 이후를 핸들링 할수 있다. 리액티브 프로그래밍에서 가장 중요한 두개의 개념을 알아야한다. publisher - 서비스를 발급해주는 사람 subscrib..
최근에 많이 나온 지식중에 하나인 , webflux가 있다. 이게 뭘까...? 언뜻보기에는 프론트엔드 사용기술같기도하다... 스프링의 주요기능, IOC : 제어의 역전, 개발자가 프로그램 코드를 제어하고, 객체 생성 부터 생명주기를 관리했다면, 스필은 컨테이너가 이걸 제어한다. DI : 객체 내부가 아닌, 외부에서 값을 set해서 세팅해주는 것이다. 그러면 webflux 는? 이건 스프링 5에서 쓰는 것이다. Spring framework 5에서는 다음과 같은 특징들을 가진다. -JDK 8부터 지원 -Kotlin 지원 -호환 라이브러리 변경, -Reactive Progamming Reactive Programming??이건 뭥미? 프론트 리액트랑관련이 있는건가?? => 응 전혀 아니얌 1. Webflux..