NETTY

[NETTY] 개념 정리

집한구석 2021. 7. 11. 23:32
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를 제공함

이벤트 / 핸들러

  • 작업의 상태 변화를 알리기 위해 이벤트를 이용하며, 발생한 이벤트 기준으로 적절한 동작을 트리거 할 수 있음

네티 기본 컴포넌트 개념은 다른글에서 정리해야겠음