2014. 11. 26. 11:05ㆍStudy/netty
Netty
네티란?
Netty는 프로토콜 서버 및 클라이언트와 같은 네트워크 어플리케이션을 빠르고 쉽게 개발하는 것을 가능하게 해주는 NIO 클라이언트 서버 프레임워크이다. Netty는 TCP, UDP 소켓 서버 개발과 같은 네트워크 프로그래밍을 매우 간단하고 능률적으로 만들어준다.
네티는 유지하기 쉬운 높은 성능의 프로토콜 서버 및 클라이언트를 신속한 개발을 위한 비동기 이벤트 드리븐 네트워크 어플리케이션 프레임워크 입니다.
네티는 프로토클 서버 및 클라이언트 같은 네트워크 어플리케이션의 빠르고 쉬운 개발을 가능하게 하는 NIO 클라이언트 서버 프레임워크 입니다. 이는 TCP 또는 UDP 소켓 서버와 같은 네트워크 프로그래밍을 간단하게 할 수 있습니다.
자바 네트워크 어플리케이션 프레임워크
비동기이면서 이벤트 기반
> tomcat < 10,000 (connection) VS netty < 100,000 ~ 1,000,000 (connection)
I/O 처리를 위한 추상화 API 제공
> NIO, OIO, AIO ... 처리에 대해 쉽게 쉽게 바꿀수 있게 Netty I/O API 단에서 제공
잘 정의된 이벤트 모델과 스레드 모델 제공
> 접속을 맺고, 데이터를 보내고 받고, 접속을 끊을 때 어떤 이벤트가 발생할지 Netty 가 잘 정의하여 제공
> 사용자의 코드가 어느 스레드에서 언제 실행 될 지, 불필요한 동기화 방지.. 등등 Netty 가 잘 정의하여 제공
유연한 이벤트 처리 위한 bi-directional chain of responsibility pattern
직접 구현한 버퍼풀을 이용한 성능 이점 제공
> Buffer Zero-file-copy, Buffer Automatic Capacity Extession...
구성요소
I/O 레이어 (Netty), 프로토콜 코덱 (Netty or User), 비지니스로직 (User)
핵심컴포넌트 (eventloop)
eventloop (Windows event dispatcher, Swing event loop, Reactor)
핵심컴포넌트 (pipeline)
pipeline (이벤트루프에서 이벤트를 받아 핸들러에 전달하는 역할)
inbound event
- 이벤트 루프가 발생 시킨 이벤트 (소켓연결, 데이터수신 등)를 작성한 inbound event handler에게 전달
outbound event
- 사용자가 요청한 동작(쓰기, 읽기 일시중단 등)을 작성한 outbound event handler에게 전달
- 최종적으로 이벤트 루프에 전달되어 I/O가 수행되도록 함.
핵심플로우
[참고]
1. 네티 공식 사이트
5. netty 란?
6. Netty 사용법
8. [Java] Network framework ( Netty, Apache MINA )
9. Netty 시작하기
12. [Netty]네티 유저 가이드 4.x (Netty User guide for 4.x) 한글 번역
13. [발번역] Netty 4.0 New & Noteworthy
15. Netty, TCP, JSON을 이용한 싱글 서버용 채팅 서버
16. Nettyjava-nio-통신-프레임워크-대략적인-흐름
17. Netty API Reference ( 4.0.42.Final)
19. 네티로 만들어진 오픈소스들
20. Netty Study Book