netty 공부

sangeun·2022년 10월 4일
0

netty는 어떻게 동작하는가?

Bootstrap에서 bossGroup과 workerGroup을 받는다. 둘다 eventLoop이고 자체 selector를 가지고 있다. bossGroup은

BootStrap

네트워크 레이어를 구성하는 컨테이너. bossGroup과 workerGroup을 받는다.
생성자가 빌더패턴으로 되어있음

EventLoop

  • NioEventLoop = socketChannel + selector

작동순서

  • BossNioEventLoop에서
    accept event, client와 커넥션 맺기 -> socketChannel 생성 -> socketChannel이랑 selector를 nioEventLooop에다가 등록하기. -> runAllTask
  • worker NioEventLoop 스레드에서
    socketChannel에서 event를 poll해와서 selector에다가 등록 -> 커넥션이 맺어지면 read write 기능 처리 -> runAllTasks

등록 순서

channel -> selector -> eventLoop

질문

  • eventLoop는 왜 group별로 나누어져있는가?
    여러 개의 eventLoop를 묶은 이유?

  • nioEventLoop는 selector를 가지고 있고, selector에다가 socketChannel을 등록한다고 하는데 대체 socketChannel은 어디있는가?

selector

IO multiplexing에 사용

  • IO multiplexing이란?
    가장 자주 쓰이는 모델로, 싱글 스레드에서 listen과 블록을 여러 리소스들에 대해 동시에 진행한다 (polling -cpu 자원 낭비- 또는 멀티스레딩을 한다는 의미는 아님) 그리고 하나라도 자원이 준비되면 리턴한다.

  • netty에서는 selector도 선택 가능

    java 시스템변수로 지정 가능
    selector 커스텀을 고민해볼 수도 있을까?
    디폴트는 KQueueSelectorImpl ( for mac os)

코드 보고

NioEventLoopGroup

EventExecutor은 interface인데??

profile
꾸준히

0개의 댓글