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