-
[JAVA] Reactive StreamsCS/개발 언어 (JAVA) 2021. 5. 16. 19:01
Reactive Streams
Reactive 프로그램을 위한 명세
Non-Blocking과 Back-Pressure를 이용하여 비동기 스트림 처리의 표준을 제공하는 것이 목적
Back-Pressure
컴포넌트가 대처할 수 없고 장애가 발생하면 안되기 때문에 컴포넌트는 상위 컴포넌트들에 자신이 과부하 상태라는 것을 알려 부하를 줄일 수 있도록 해야한다.
Subscriber가 Publisher에 Request()하는 과정
push하는 데이터의 흐름을 제어
Publisher
무한한 data를 제공하고, 제공되는 data는 Subscriber에 의해 구독되는 형태로 처리
subscribe() : subscriber를 받아들이는 메소드
Subscriber
onSubscrive() : Publisher가 생산하는 data를 받을 준비가 되었다.
onNext() : 데이터 수신
onError() : 데이터 전달에서 에러 발생
onComplete() : 데이터 전달 완료
Subscription을 등록하고 Subscription에서 오는 신호에 따라 동작
Subscription
Publisher와 Subscriber 사이에서 중계하는 역할을 수행
request(long n) : Subscriber가 Publisher에게 데이터를 요청하는 개수
cancle() : 구독을 취소하겠다는 의미
C10K?
만개의 클라이언트를 동시에 처리할 수 있는가?
socket은 동시에 수백만개를 열수 있지만, blocking 프로그램은 많아야 수천개만 동시에 처리 가능
'CS > 개발 언어 (JAVA)' 카테고리의 다른 글
[JAVA] Garbage Collection 모니터링 (1) 2021.06.21 [개발언어] @Controller vs @RestController (0) 2021.06.04 [JAVA] 자바 가상 머신 (Java Virtual Machine) (0) 2021.05.12 [JAVA] JVM Memory (0) 2021.04.22 [JAVA] Garbage Collection (0) 2021.04.21