TIL

TIL_20221130

번잔중 2022. 11. 30. 23:47

오늘 할 일

🔦 코드 스테이츠 70일차

[Spring Webflux] Project Reactor

  • Daily Coding
  • Project Reactor란?
  • 마블 다이어그램 & 스케쥴러
  • Operators 사용법

다른거

  • 1일 1커밋

오늘 배운 것

⚛️ [Spring Webflux] Project Reactor

Project Reactor란?

  • Reactor는 리액티브 스트림즈 표준 사양을 구현한 구현체 중 하나이다.
  • Reactor는 완전한 Non-Blocking 통신을 지원한다.
  • Reactor는 기본적으로 Mono[0|1]와 Flux[N]이라는 두 가지 Publisher 타입을 제공한다.
  • Non-Blocking 통신을 완벽하게 지원하는 Reactor는 MSA 구조에 적합한 라이브러리이다.
  • Backpressure란 Subscriber의 처리 속도가 Publihser의 emit 속도를 따라가지 못할 때 적절하게 제어하는 전략을 의미한다.

마블 다이어그램(Marble Diagram)

  • 마블 다이어그램(Marble Diagram)상에서 구슬 모양의 알록달록한 동그라미는 하나의 데이터를 의미하며, 시간의 흐름에 따라 변화하는 데이터의 흐름을 표현한다.
  • 마블 다이어그램은 Reactor에서 제공하는 수많은 Operator의 내부 동작을 조금 더 쉽게 이해하고, 해당 Operator를 적절하게 사용하는데 도움을 준다.
  • Mono는 0건 또는 1건의 데이터만 emit하는 Reactor 타입이다.
  • Flux는 여러 개(0 … N)의 데이터를 emit하는 Reactor 타입이다.

스케줄러란(Scheduler)?

  • Reactor에서의 Scheduler는 쓰레드를 관리하는 관리자 역할을 한다.
  • Scheduler는 한마디로 Reactor Sequence 상에서 처리되는 동작들을 하나 이상의 쓰레드에서 동작하도록 별도의 쓰레드를 제공해 준다.
  • Reactor에서는 Scheduler를 위한 별도의 Operator를 제공한다.
  • subscribeOn()은 주로 데이터 소스에서 데이터를 emit하는 원본 Publisher의 실행 쓰레드를 지정하는 역할을 한다.
  • publishOn()전달 받은 데이터를 가공 처리하는 Operator 앞에 추가해서 실행 쓰레드를 별도로 추가하는 역할을 한다.

Operators

  • 아직 진도를 다 못나갔습니다. ㅠㅠ

다른거

- 1일 1커밋

프로그래머스 Lv.2 튜플 문제를 풀었습니다. 내부 원소의 중복을 제거하고, 중복 전에 가장 많은 원소의 순서대로 출력하는 문제입니다. 튜플을 직접 만들면 되는 문제였네요. 문자열에서 중괄호를 제거해준 후에 String 배열에 콤마를 기준으로 잘라서 하나씩 숫자를 저장하고, Map에 숫자를 key로 만들어서 개수를 카운트해줍니다. 그 다음 keySet을 따로 저장한 후 Collections를 사용해서 내림차순으로 정렬해준 값을 정답 배열에 Integer 타입으로 저장합니다.

 

Programmers 튜플

 

GitHub - chaning49/algorithm: 코딩테스트를 위한 알고리즘 공부

코딩테스트를 위한 알고리즘 공부. Contribute to chaning49/algorithm development by creating an account on GitHub.

github.com

느낀점

  • Reactor를 사용하는 방법은 이제 조금 감이 온다. 그런데 이것으로 쓰레드를 어떻게 효율적인 방식을 사용해서 관리한다는 것인지는 아직도 미지수이다. 내일은 페어가 있어서 오늘 진도를 다 나가고 자야할 것 같다. 그래야 내일 페어때 뭐라도 할 것 같은 느낌!
  • 오늘 그룹 회고에서 아예 섹션 4를 멈추고 섹션 3에 있는 내용을 복습중이시라는 분을 만났다. 나도 그렇게 해야하는 것인지 많이 혼란스럽다. 나도 별반 다른 상황이 아닐 것이기 때문이다. ㅠㅠ 빨리 시작하는게 좋지 않을까...

내일 할 일

❄️ 코드 스테이츠 71일차

[Spring Webflux] Spring Webflux

  • Daily Coding
  • Spring Webflux란?
  • Spring Data R2DBC
  • Spring Webflux 실습

다른거

  • 1일 1커밋

'TIL' 카테고리의 다른 글

TIL_20221202  (2) 2022.12.02
TIL_20221201  (0) 2022.12.01
TIL_20221129  (0) 2022.11.29
TIL_20221128  (0) 2022.11.28
TIL_20221127  (2) 2022.11.27