Netty - 3. Netty 컴포넌트와 설계

roon-replica·2022년 6월 25일
0

server

목록 보기
4/4
  • 네티는 기술, 아키텍처 2가지 관심 영역의 문제를 모두 해결
    • 기술 : java NIO 기반의 비동기식 이벤트 구현을 이용해 애플리케이션의 성능, 확장성 보장
    • 아키텍처 : 네트워크 레이어와 애플리케이션 레이어를 분리하는 여러 설계 패턴 이용..

네티의 컴포넌트들

네트워킹 추상화 관련 클래스

  • Channel 인터페이스

    • 기본 IO는 java.net.Socket을 이용한다고 함
  • EventLoop 인터페이스

    • 이벤트를 처리하는 네티의 핵심 추상화를 정의한다고 함..
    • 한 Channel의 IO가 동일한 Thread에서 처리되서 동기화가 필요없다는게 무슨말인지?
  • ChannelFuture 인터페이스

    • 네티의 모든 IO가 비동기적이라 작업 결과가 즉시 계산되지 않음.
      그래서 나중에 결과를 확인하는 방법이 필요한데, 네티에서는 ChannelFuture를 제공

데이터 흐름, 애플리케이션 처리 논리를 실행하는 컴포넌트?

  • ChannelHandler 인터페이스
    inBound, outBound 데이터 수신, 응답

  • ChannelPipeline 인터페이스

    • ChannelHandler 체인을 위한 컨테이너를 제공..?
  • Encoder, Decoder

    • Netty는 바이트 스트림으로 전송해서 인코딩(객체 -> 바이트) 또는 디코딩(바이트 -> 객체)이 필요함
    • 다양한 인코더, 디코더 클래스가 제공된다고 함

bootstrap 클래스

  • 서버 부트스크랩
    프로세스를 지정된 포트로 바인딩
  • 클라이언트 부트스트랩
    프로세스를 특정 (호스트, 포트)에서 띄우고 실행 중인 다른 호스트로 연결

생각들

  • 동일한 Channel에 속하는 작업은 호출된 순서와 동일한 순서로 실행되는 이유 모름

  • Netty에서 메세지를 보낼 때 Channel에 직접 기록하거나 ChannelHandlerContext 객체에 기록하는 2가지 방법이 있다는데 후자는 어떻게 하는지 모름

  • 인코딩, 디코딩 과정 정확히 모름

  • 서버는 왜 EventLoopGroup이 2개 필요한지 이해 안 됨....

profile
집중 ➝ 프로세서↑ 시간 투자 ➝ 디스크↑

0개의 댓글