![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/caj2NG/btsD1akc4us/i6ERD9bbokg2uv3Nk8klqk/img.jpg)
각각의 스레드에서 상태 값을 저장하여 사용할 수 있는 스레드로컬과 유사하게 리액터에서는 컨텍스트를 사용해서 리액터 시퀀스상에 상태 값을 저장하고, 저장된 상태 값을 사용할 수 있다. 먼저 리액터에서의 컨텍스트가 무엇인지 살펴보고, 컨텍스트의 특징과 자주 사용되는 API를 살펴보자 컨텍스트란 Reactor Sequence상에서 상태를 저장할 수 있고, 저장된 상태 값을 Operator 체인에서 공유해서 사용할 수 있는 인터페이스이다. Context에 값을 저장하기 위해서는 contextWrite()를 사용하고, 저장된 상태 값은 key, value 형태로 저장된다. Context에 저장된 값을 읽어오기 위해서는 읽기 전용 뷰인 ContextView를 사용한다. ContextView는 Reactor Sequ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cs6sN3/btsDItqtheU/azXpxuja6WYnyuGQ61NZQ0/img.jpg)
리액터에서 스케줄러는 쓰레드를 관리하는 쓰레드 관리자 역할을 하는데, 구독시점에 데이터가 emit되는 영역과 emit된 데이터를 operator로 가공 처리하는 영역을 분리해서 손쉽게 멀티스레딩을 가능하게 한다. 또한, 리액터에서의 스케줄러는 크게 operator chain에서 스케줄러를 전환하는 역할을 하는 전용 operator와 스케줄러를 통해 생성되는 쓰레드 실행 모델을 지정하는 부분으로 구성이 되어 있다. 이 두가지 구성요소 중, 스케줄러를 전환해주는 operator에 대해 자세히 살펴보자. 스케줄러를 전환해주는 operator 리엑터에서 지원하는 스케줄러를 위한 전용 operator는 크게 세가지가 있다. publishOn(): operator chain에서 Downstream Operator의..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/IUhpf/btsDqTXwRQV/esISAg1rxcHbdPHaXpuOE1/img.jpg)
백프레셔는 Publisher로부터 Subscriber에게 끊임없이 전달되는 데이터를 안정적으로 처리하기 위한 처리 방식이다. 이러한 백프레셔를 좀 더 쉽게 이해하기 위해서는 Publisher와 Subscriber가 어떤 방식으로 데이터를 주고 받는지 이해하는 것이 좋다. Publisher와 Subscriber간의 프로세스 리액티브 프로그래밍은 Publisher와 Subscriber간의 Interaction이라고 볼 수 있다. 가장 먼저 Subscriber에서 subscribe() 메서드를 호출하면서 구독을 시작한다. Publisher에서는 구독이 정상적으로 이루어졌음을 onSubscribe signal로 subscriber에게 알려준다. Subscriber에서 데이터를 전달받기 위해 request sig..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/d9H4W1/btsC7oWLmEN/RpnnVWcgzgyPatMBSXKmXK/img.jpg)
리액티브 프로그래밍에서 퍼블리셔가 만들어내는 데이터의 흐름은 Cold와 Hot 두가지로 나뉜다. 참고로 리액터에서는 퍼블리셔가 만들어내는 데이터의 흐름에 대해서 시퀀스라는 용어를 사용한다. 여기서 Cold Publisher와 Hot Publisher 그리고 Cold Sequence와 Hot Sequence는 거의 같은 의미라고 할 수 있다. 그렇다면 Cold Sequence와 Hot Sequence는 대체 무슨 차이가 있는지 아래에서 알아보자. Cold Sequence Cold Publisher는 Cold Sequence라는 데이터의 흐름을 만들어내는 퍼블리셔이다. 먼저 맨 위의 첫 번째 Subscriber의 구독이 발생하고, 그 뒤 Cold publusher는 1, 3, 5, 7이라는 데이터를 차례대로..
- Total
- Today
- Yesterday
- Real MySQL
- 구현
- Spring
- webflux
- 노마드
- 인프런
- 북클럽
- 스프링부트
- 알고리즘
- 데이터베이스
- 노마드코더
- 릿코드
- 그리디
- kotlin
- 리팩토링
- mysql 8.0
- 문자열
- 코테
- leetcode
- 스프링 부트
- 정렬
- 파이썬
- 스프링
- 코틀린
- 김영한
- 자료구조
- Algorithm
- MySQL
- spring boot
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |