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
        • ChannelHandlerChannelHandlerContext 를 통해
        • 다음 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)
          <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

            http://netty.io/4.1/api/index.html

            728x90
            반응형
            블로그 이미지

            nineDeveloper

            안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

            ,