Netty 주요 특징

동기와 비동기

함수 또는 서비스의 호출 방식

동기

  • 특정 서비스를 호출하면 처리가 완료될 때까지 기다렸다가 결과를 받는 방식
  • 쉬운 디버깅, 직관적인 흐름 추적 가능

비동기

  • 서비스를 호출하여 즉시 응답을 받고, 다른 작업을 하다가 처리가 완료되었는지 확인하여 결과를 받는 방식
  • 컴퓨팅 자원의 효율적 활용 가능
  • Future 패턴, Observer 패턴, Callback, Reactor 패턴 등
  • Nettry는 Reactor 패턴 사용

Blocking 소켓

  • 연결, 데이터 입출력 과정에서 블로킹 발생
  • 다중 클라이언트 처리를 위해서는 각 연결마다 스레드를 하나씩 만들어줘야함
    • 병목이 발생함
    • OOM 발생 가능
    • 빈번한 컨텍스트 스위칭으로 인한 자원 낭비

Nonblocking 소켓

  • 하나의 스레드로 여러 클라이언트 대응 가능

이벤트 기반 프로그래밍

  • 주로 GUI 기반 프로그램에 많이 사용
  • 추상화 수준
    • 이벤트를 나누는 단위
    • 저수준으로 추상화할수록 더 많은 이벤트가 발생하여 성능 이슈
    • 고수준으로 추상화할수록 세부적인 제어 불가능
    • ex) mouse click vs mouse key down, mouse key up

이벤트 기반 네트워크 프로그래밍

  • 네트워크 이벤트의 주체는 소켓
  • 데이터를 소켓에 전달하기 위해 데이터 핸들러 이용
  • 로직 분리, 코드 재사용성 증가, 에러 처리 부담 완화

results matching ""

    No results matching ""