- Netty는 비동기 네트워크 프레임워크이고, 이벤트 루프 스레드 모델을 채택하고 있다.

- Netty에서 말하는 이벤트란 [연결/연결종료, 데이터 읽기/쓰기] 등을 뜻하며, Channel에서 관리된다.
- 즉, Channel은 네트워크 소켓을 추상화한 객체로, 클라이언트와 서버 간의 커넥션을 뜻하며 데이터의 입출력을 관리한다.
- EventLoop는 무한루프를 돌며 큐(대기열)에 들어간 I/O 이벤트를 감지하고, 이를 비동기적으로 처리하는 스레드이다.
- 모든 EventLoop는 내부에 이벤트 큐를 ‘1개’만 가지고 있다.
- Java.Nio 패키지의 구현체인 NioEventLoop가 일반적으로 사용되며, 이는 SingleThreadEventExecutor 를 상속한다.
- 즉, Netty에서 하나의 채널을 통한 이벤트 처리는 항상 단일 스레드에서 관리된다. (의도적으로 다른 스레드를 사용하지 않는 한)
- Channel과 EventLoop는 1대1 관계이다.
- 즉, 하나의 채널에서 발생한 이벤트는 항상 동일한 이벤트 루프에서 처리되고, 처리 순서가 보장된다.
참고:
https://sungjk.github.io/2023/08/25/netty-channel.html