Netty 주요 특징
동기와 비동기
함수 또는 서비스의 호출 방식
동기
특정 서비스를 호출하면 처리가 완료될 때까지 기다렸다가 결과를 받는 방식
쉬운 디버깅, 직관적인 흐름 추적 가능
비동기
서비스를 호출하여 즉시 응답을 받고, 다른 작업을 하다가 처리가 완료되었는지 확인하여 결과를 받는 방식
컴퓨팅 자원의 효율적 활용 가능
Future 패턴, Observer 패턴, Callback, Reactor 패턴 등
Nettry는 Reactor 패턴 사용
Blocking 소켓
연결, 데이터 입출력 과정에서 블로킹 발생
다중 클라이언트 처리를 위해서는 각 연결마다 스레드를 하나씩 만들어줘야함
병목이 발생함
OOM 발생 가능
빈번한 컨텍스트 스위칭으로 인한 자원 낭비
Nonblocking 소켓
하나의 스레드로 여러 클라이언트 대응 가능
이벤트 기반 프로그래밍
주로 GUI 기반 프로그램에 많이 사용
추상화 수준
이벤트를 나누는 단위
저수준으로 추상화할수록 더 많은 이벤트가 발생하여 성능 이슈
고수준으로 추상화할수록 세부적인 제어 불가능
ex) mouse click vs mouse key down, mouse key up
이벤트 기반 네트워크 프로그래밍
네트워크 이벤트의 주체는 소켓
데이터를 소켓에 전달하기 위해 데이터 핸들러 이용
로직 분리, 코드 재사용성 증가, 에러 처리 부담 완화
Last updated