Reactive Stream은 비동기 데이터 스트림 처리를 위한 일종의 표준화된 스펙을 말한다.
이런 스택을 구현한 것이 Project Reactor고 플럭스에서 전반적으로 리액터를 활용함으로서 웹 요청에 대한 비동기 처리를 진행하게 된다.
Reactive Stream은 비동기 실행 데이터 처리와 논블로킹 백프레셔에 대한 표준을 제공하고 있다.

Reactive Stream에 대한 구성 요소는 크게 4가지로 나뉜다.

subscriber는 publisher에게 구독(subscribe)을 진행하고, 이 과정에서 subscription 객체를 통해 publisher와 연결되게 된다.(구독 관계)
//publisher는 subscribe 메서드를 구현
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}
//subscriber는 다음 메서드들 구현
public interface Subscriber<T> {
public void onSubscribe(Subscription s);
public void onNext(T t);
public void onError(Throwable t);
public void onComplete();
}
//Subscription
public interface Subscription {
public void request(long n); // Subscriber가 처리 가능한 수준을 조절
public void cancel(); //구독 관계 취소
}
//Processor
public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {}

Reactive Stream은 비동기 처리가 가능하다는 특징도 갖고 있다.
데이터 처리 단계에서 같은 스레드나 별도의 스레드로 동작시킬 수 있고, 병렬 처리도 가능하다.