728x90
Netty 정의
- 유지관리가 용이한 고성능 프로토콜 서버와 클라이언트를 신속하게 개발하기위한 비동기식 이벤트기반 네트워크 애플리케이션 프레임워크
Netty 특징
범주 | 특징 |
설계 | 단일 API로 블로킹과 논블로킹 방식의 여러 전송 유형을 지원, 단순하지만 강력한 스레딩 모델, 비연결 데이터그램 소켓 지원, 재사용 지원을 위한 논리 컴포넌트 연결 |
이용 편이성 | JDK 1.6을 제외한 추가 의존성이 없음 |
성능 | 코어 자바 API보다 높은 처리량과 짧은 지연시간, 풀링과 재사용을 통한 리소스 소비 감소, 메모리 복사 최소화 |
견고성 | 저속, 고속 또는 과부하연결로 인한 OutOfMemoryError가 발생하지 않음, 고속 네트워크 상의 NIO에서 일반적인 읽기/쓰기 비율 불균형이 발생하지 않음 |
보안 | 완벽한 SSL / TLS 지원 |
Netty 컴포넌트 구성
- Channel
- Callback
- Future
- 이벤트 / 핸들러
Channel
- 자바 NIO의 기본구조
- 인바운드 데이터와 아웃바인드 데이터를 위한 운송수단
- Channel은 열거나 닫고, 연결하거나 연결을 끊을수 있음
Callback
- 네티는 이벤트를 처리할때 내부적으로 Callback을 이용
- Callback이 트리거되면 ChannelHandler 인터페이스 구현을 통하여 이벤트를 처리함
Future
- 작업이 완료되면 애플리케이션에 알리는 방법
- 비동기 작업의 결과를 담는 자리표시자 역할을 하며, 작업이 완료되면 해당 결과에 접근 할 수 있게 함
- Netty는 Java 기본 future 인터페이스 대신 자체구현한 ChannelFuture를 제공함
이벤트 / 핸들러
- 작업의 상태 변화를 알리기 위해 이벤트를 이용하며, 발생한 이벤트 기준으로 적절한 동작을 트리거 할 수 있음
네티 기본 컴포넌트 개념은 다른글에서 정리해야겠음