Netty
-
cccNetty 2019. 1. 13. 17:08
- 메모리 모델과 바이트 버퍼netty에서 사용하는 bytebuf를 별도로 관리, 성능측면에서 GC부담 최소화, NIO bytebuffer와 같은 역할(좀더 성능 최적화)커스텀 타입 개발 가능, composite buffer 도입으로 버퍼 복사 최소화, 필요에 따라 버퍼 용량 자동 증가flip() 호출 필요 없음, 참조수 관리로 메모리 수동 해제, - ReferenceCounted 별도 메모리 풀에 할당/해제, 최초 참조수는 1, 참조수 0이되면 해제더 참조하는 객체가 생기면 retaion() -> +1, 다썼으면 release() -> -1 - byteBuf - 파이프라인 활용Channel은 connect, bind, read, write 등 네크워트 작업을 할수 있는 요소. 모든 I/O작업은 비동기 ..
-
Netty BootstrapNetty 2019. 1. 9. 14:13
지난번에 대충 인터페이스를 봤지만, 자세히 어떻게 돌아가는지 아직 잘 그림이 안그려진다. 1. EventLoopGrouop boss, worker 생성2.1 ServerBootstrap으로 boss, worker 설정2.2 채널을 생성할 때 사용할 클래스(NioServerSocketChannel.class)를 등록, 이걸로 안쪽에서 채널팩도리를 만들어 등록한다.2.3 로깅할 핸들러 생성 후 설정(이건 뜬금없이 왜 등록 하는지 모르겠다)2.4 자식 핸들러로 DiscardServerHandler를 생성해서 등록3. ServerBootstrap으로 8010포트 bind() 후 sync()4. sync()에러 리턴받은 ChanenlFuture의 channel(), closeFuture(), sync() 순서대로..
-
Netty Core InterfaceNetty 2019. 1. 7. 20:54
Channel, ChannelFuture, ChannelHandler, ChannelHandlerContext, ChannelPipeline, EventLoop순서대로 보자 - Channel대충 중요해보이는게 eventLoop(), pipeline(), read() 정도 보인다. ChannelOutboundInvoker는 뭐하는 녀석일까 대충 이런게 있다치고 넘어가자. - ChannelFuture줄줄이 설명이 잘 되있다; channelFuture는 비동기 I/O 동작의 결과물이라고 한다.netty는 모든 동작이 비동기이며, 그것은 모든 I/O call이 즉시 이녀석을 리턴한다고 볼 수 있다.(물론 요청의 완료 여부는 보장하지 않는다)이녀석은 요청이 어떻게 동작하는지 그 상태정보와 결과를 갖고있다. 자세한..