Netty 2

Spring Reactive Stack/Netty 2024. 1. 21. 19:43

Netty Channel 의 pipline 으로 수행되는 ChannelHandler 가 제공하는 메서드를 하나씩 정리해보겠다. ChannelInboundHandler inbound I/O 이벤트를 처리하기 위한 ChannelHandler 이다. inbound I/O 이벤트가 발생되면 각 이벤트에 맞는 아래 메서드를 호출 해준다. void channelRegistered(ChannelHandlerContext ctx) throws Exception; Netty Channel 이 EventLoop 에 등록되는 경우 호출된다. - Netty ServerSocketChannel 의 경우 서버를 시작하며 EventLoop 에 최초 1회 등록할 것이므로 그 때 1회 호출 될 것이다. - Netty SocketCha..

Netty 1

Spring Reactive Stack/Netty 2024. 1. 17. 01:11

Spring reactive stack 에서 사용되는.. Spring webflux 는 reactor 와 netty 를 의존한다. 뿐만 아니라, Spring data redis 도 netty 를 의존한다. 이번 포스팅에서는 netty 를 알아보겠다. Netty 소개 Netty 공식 홈페이지에 따르면 "Netty is asynchronous event-driven network application framework" 라 소개한다. (Server & Client) Netty 는.. HTTP, SMTP, FTP 등의 protocol 뿐만 아니라 다양한 protocol 을 지원한다. 또한, 불필요한 memory copy 를 최소화 하며 Java IO, NIO, selector 기반으로 적은 리소스로 높은 성능..

Article Thumbnail
Proactor pattern

Spring Reactive Stack/Netty 2023. 11. 20. 01:27

Reactor pattern 에 이어서 Proactor pattern 을 알아보겠다. 두 패턴을 가르켜 Event handling pattern 이라 부르기도 한다. Proactor 패턴 Reactor 패턴에서는 단일 스레드로 IO 이벤트를 처리하였다. 단일 스레드가 커널에 epoll 을 활용하여 IO 작업의 준비 완료 상태를 주기적으로 확인하였는데.. (즉, Reactor, Selector 가 병목 지점인 것) Proactor 패턴에서는 AIO 로 동작하므로 커널이 AIO 로 IO 작업의 준비 완료 상태를 알려 주기 때문에 busy-wait 현상을 없앨 수 있다. 사용 기술 Proactor 패턴은 Java AIO를 사용한다. 특징 Java AIO 를 사용하기 때문에 비동기 non-blocking 으로 ..

Article Thumbnail
Reactor pattern

Spring Reactive Stack/Netty 2023. 11. 19. 03:36

이번 포스팅에서는 Reactor pattern 에 대해 알아보겠다. reactor pattern 의 목표 한정된 스레드로 동시에 들어오는 요청을 효율적으로 처리 가능 Reactor 패턴 대표 사용 기술 Java NIO, Selector, epoll 특징 Selector 기반의 Java NIO 를 사용하기 때문에 동기 non-blocking 으로 동작한다. (IO 관점) 작동 방식 accept, read, write 등의 이벤트(준비 완료)들을 한 곳(Selector)에 등록하여 모니터링 -> Selector 사용, Multiplexing 준비 완료 이벤트(처리될 준비가 됨)일 경우에는 request handler 에게 전달한다. -> Demultiplexing 대표 컴포넌트 Reactor 별도의 스레드에..

Article Thumbnail