제로카피, 멀티 플렉싱, 웹 플럭스

제로카피

기존의 불필요한 데이터 전송 과정을 줄인 것으로,
기존 웹 어플리케이션에서 정적파일을 복사 전송할때 불필요한 과정이 존재해 리소스낭비가 존재했다.

기존 과정
1 클라이언트가 서버에 요청을 보냄
2 서버가 요청을 받음
3 웹 어플리케이션이 디스크에서 파일 데이터를 읽기 위해 커널에 요청
4 파일을 다 읽은 후 커널이 다시 웹 어플리케이션으로 데이터 반환
5 웹 어플리케이션은 클라이언트에게 반환하기 위해 소켓에 파일 데이터를 넣어야 하므로 커널에 요청
6 커널은 소켓에 담아 데이터 전송

제로카피는 불필요한 4,5번을 실행하지 않고 커널에서 데이터를 읽은 후 바로 소켓에 담아 전송한다.

멀티 플렉싱

동시 입출력을 처리하기 위한 방식 중 하나로, 기존에는 멀티 프로세스, 멀티 스레드 방식을 사용했다.

멀티 프로세스는 안정적이지만, 프로세스가 데이터 공유가 안되고, 메모리를 많이 쓴다.

멀티스레드는 요청당 스레드를 생성해 처리해서, 데이터 공유가 되고, 프로세스에 비해 메모리도 적게 소비하지만, 요청이 많아지면 과부하 걸린다. 스레드 하나에서 오류가 나면 프로세스 전부에 영향을 준다.

멀티플렉싱은 기존의 블로킹으로 작동하던 입출력 함수를 논블로킹 방식으로 이용해 하나의 스레드가 여러 입출력을 처리할 수 있도록한 방식이다. 하나의 통신 채널로 여러 통신을 하므로 통신비용 절감한다. 기존 방식보다 더 많은 클라이언트 처리가 가능하다.
단, 많은 데이터를 처리할때는 불리하다.

웹 플럭스

비동기 논 블로킹을 이용한 데이터 처리 방식이다