728x90
반응형
Netty 공부를 위해 hatemogi 님의 슬라이드 자료를 블로그에 정리 하였습니다
Netty의 특징
고성능
유연하고 쉬워서 쓰기 편하다
Netty가 고성능인 이유
- Non-blocking Asynchronous 처리가 기본
- 적은 스레드로 많은 요청을 처리
- GC부하를 최소화하는 Zero-copy ByteBuf 지원
Netty가 편한 이유
- 각종 네트워크 프로토콜(코덱) 기본 지원
- 필요한 부분을 쉽게 조립해 쓸 수 있는 구조
- 멀티스레딩 처리 없어도...
Netty 버전
- 이 자료와 실습은 4.1.11.Final을 기준으로 합니다
Netty의 핵심 인터페이스
- Channel
- ChannelFuture
- ChannelHandler
- ChannelHandlerContext
- ChannelPipeline
- EventLoop
Channel
- 읽기, 쓰기, 연결(connect), 바인드(bind)등의 I/O 작업을 할 수 있는 요소 또는 네트워크 연결
- 모든 I/O 작업은 비동기 -> ChannelFuture
핵심 메소드
1 2 3 4 5 6 | ChannelFuture write(Object obj) ChannelFuture flush(Object obj) ChannelFuture writeAndFlush(Object obj) ChannelFuture closeFuture() ChannelPipeline pipeline() SocketAddress remoteAddress() | cs |
ChannelFuture
- Channel 의 I/O 작업의 결과
- ChannelFutureListener 를 등록 결과에 따른 작업
핵심 메소드
1 2 3 4 5 6 | ChannelFuture addListener(GenericFutureListener listener); Channel channel(); boolean isSuccess(); Throwable cause(); ChannelFuture await() ChannelFuture sync() | cs |
ChannelHandler
- Netty의 핵심 요소!
- Netty의 I/O 이벤트를 처리하는 인터페이스
- ChannelInboundHandlerAdapter
- ChannelOutboundHandlerAdapter
전체 메소드
1 2 3 | void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) void handlerAdded(ChannelHandlerContext ctx) void handlerRemoved(ChannelHandlerContext ctx) | cs |
ChannelHandlerContext
- ChannelHandler 는 ChannelHandlerContext 를 통해
- 다음 ChannelHandler 에게 이벤트를 넘기거나,
- 동적으로 ChannelPipeline 를 변경할 수 있음-[실습4]
핵심 메소드
1 2 3 4 5 | Channel channel() ChannelPipeline pipeline() ChannelFuture write(Object msg) ChannelHandlerContext fireChannelActive(Object msg) ChannelHandlerContext fireChannelRead(Object msg) | cs |
ChannelPipeline
- Channel 에 드나드는 inbound / outbound 이벤트를 처리
- Intercepting Filter 패턴 처리, ChannelHandler 리스트
- 두번째 시간에 상세 설명
주요 메소드
1 2 3 4 | ChannelPipeline addLast(ChannelHandler... handlers) ChannelPipeline addLast(String name, ChannelHandler handler) ChannelHandler remove(String name) <T extends ChannelHandler> T remove(Class<T> handlerType) | cs |
EventLoop
- 등록된 Channel 들의 모든 I/O 작업을 처리
- 구현체 NioEventLoopGroup
주요 메소드
1 2 3 4 | boolean inEventLoop() <T> Future<T> submit(Callable<T> task) <V> Promise<V> newPromise() <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) | cs |
Channel 관련 인터페이스 전체 구조
참조
네티 시작하기 발표자료
http://hatemogi.github.io/netty-startup
네티 시작하기 발표자료 깃허브
https://github.com/hatemogi/netty-startup
Netty 4.1 JavaDoc
728x90
반응형
'JAVA > Netty' 카테고리의 다른 글
Netty 프레임워크 SOCKET 옵션 (0) | 2019.05.20 |
---|---|
[Netty]3.3.1 ServerBootStrap API (0) | 2016.03.15 |
[Netty]2.2 블로킹과 논블로킹 (0) | 2016.03.11 |
[Netty]네티 유저 가이드 4.x (Netty User guide for 4.x) 한글 번역 (0) | 2016.03.11 |
[Netty]2.1. 동기 와 비동기 (0) | 2016.03.11 |
▶ JAVA 20. 소켓 통신 (0) | 2016.03.04 |
[JAVA] java.util package_Properties Class_예제 (0) | 2016.03.04 |
[JAVA]자바 소켓통신 예제 (0) | 2016.03.04 |