상세 컨텐츠

본문 제목

Netty Basic Interface / ByteBuf

개발생활/Framework

by 한국인맛집 2017. 12. 14. 19:29

본문

반응형

Netty의 핵심 Interface


Interface Name

Explain 

 Channel

Read,Write,connect,bind 등의 I/O 작업을 할수있는 요소 또는 네트워크 연결관련 

모든 I/O 작업은 비동기(Asynchronous)->ChannelFuture

ChanelFuture 

Channel의 I/O작업의 결과를 나타냄

ChannelFutureListner를 등록, 결과에 따른 작업을 진행. 

 ChannelHandler

Netty의 핵심요소.

Netty의 I/O 이벤트를 처리해주는 Interface

ChannelInboundHandlerAdapter

ChannelOutboundHandlerAdapter 

 ChannelHandlerContext

ChannelHandler는 ChannelHandlerContext를 통한다.

다음 ChannelHandler에게 이벤트를 토스가능(Passing)

동적으로 ChannelPipeline을 변경할수있다. 

ChannelPipeline 

Channel에 드나드는 Inbound / Outbound 이벤트처리

Intercepting Filter패턴처리, ChannelHandler리스트 

EnvetLoop 

등록된 Channel들의 모든 I/O작업을 처리

구현된 NioEventLoopGroup을 주로 사용 

    


 




Netty의 메모리 모델


-ChannelPipeline을 활용한다.


-ChannelInboundHandler



ByteBuf

-Netty에서 사용되는 ByteBuf는 성능적인 측면에서 GC부담을 최소화해준다.

-NIO의 ByteBuffer와 비슷함.

-커스텀타입 개발이 가능합니다.

-복합(Composite)버퍼도입으로 버퍼의 중복복사를 최소화해준다.

-필요에 따라 버퍼의 용량이 유동적으로 증가함.


ReferenceCounted

-별도 메모리풀에서 할당해재

-최초의 참조수(refcnt())는 '1'

- 참조하는 객체가 생길시 retain()호출 ==> refcnt 는 1증가.

- 객체를 다사용할경우 release() 호출 하여 refcnt 는1 감소

- ReferenceCount가 0이될시 메모리 헤제.


Derived Buffer [파생버퍼]
- 파생될때 refcnt는 증가 하지않는다. 그러므로 다른메소드에 파생할땐 retain()이 필요.

”파생 : 사물이 어떤 근원으로부터갈려 나와생김 






반응형

관련글 더보기