-
[세미나][Netty] 네트워크 프로그래밍 2.세미나 2023. 2. 9. 23:56
부트스트랩
ServerBootstrap - 서버 / Bootstrap - 클라이언트
네티가 작동할 때 기본적으로 설정해야 하는 클래스이며, 프로그램이 시작될 때 가장 먼저 수행된다.
부트스트랩 클래스에 어플리케이션이 수행할 동작을 설정하고, 프로그램에 대한 각종 설정을 한다.
부트스트랩 설정은 크게 이벤트 루프, 채널의 전송 모드, 채널 파이프라인으로 나뉜다.
이벤트 루프
- 소켓 채널에서 발생한 이벤트를 처리하는 스레드 모델에 대한 구현이 담겨있다.
- 소켓 모드에 따라 이벤트 루프의 구현체가 달라지기도 한다.
전송모드
- 블로킹, 논블로킹, epoll로 지정 가능하다.
채널 파이프라인
- 소켓 채널로 수신된 데이터를 처리할 핸들러를 지정한다.
부트스트랩의 논리적 구조
부트스트랩에서 위와 같은 설정이 가능하다. 사실상 네트워크 애플리케이션에 필요한 모든 내용을 담고 있다.
네트워크 애플리케이션 구성
=> 소켓모드/옵션, 데이터처리 스레드, 프로토콜
부트스트랩의 프로토콜은 채널 파이프라인에 등록되는 인코더, 디코더에서 처리한다.
ServerBootstrap 클래스
group() - 이벤트 루프 설정
- ServerBootstrap(서버)은 연결수락 이벤트 루프와 데이터 송수신 처리 이벤트 루프 2가지가 필요하다.
- Bootstrap(클라이언트)은 데이터 송수신 처리 이벤트 루프가 필요하다.
channel() / channelFactory() - 소켓 입출력 모드 설정
- 부트스크랩 클래스를 통해 생성된 채널의 입출력 모드를 설정한다.
handler() - 서버 소켓 채널의 이벤트 핸들러 설정
- 여기서 등록된 핸들러는 서버 소켓 채널에서 발생한 이벤트만을 처리한다.
childHandler() - 클라이언트 소켓 채널의 데이터 가공 핸들러 설정
- 클라이언트 소켓 채널에서 발생하는 이벤트를 수신하여 처리한다.
- 서버 소켓 채널로 연결된 클라이언트 채널에 파이프라인을 설정하는 역할을 수행할 수 있다.
option() - 서버 소켓 채널의 소켓 옵션 설정
- 소켓의 동작 방식을 지정한다.
- 기본적으로 부트스트랩의 소켓 옵션은 커널에서 사용하는 소켓 관련 설정값들을 변경하는 것이다.
childOption() - 클라이언트 소켓 채널의 소켓 옵션 설정
- 서버에 접속한 클라이언트 소켓 채널에 대한 옵션 설정
Bootstrap 클래스
ServerBootstrap 클래스와 같지만 클라이언트에서 사용하는 단일 소켓 채널에 대한 설정이므로 부모 자식이라는 관계에 해당하는 childHandler, childOption 같은 API들은 제공하지 않는다.
참고
Netty - bootstrap
정의 네티로 작성한 애플리케이션이 시작할 때 가장 처음 수행되는 부분, 수행할 동작과 각종 설정을 지정함 부트스트랩 설정은 크게 이벤트루프, 채널의 전송모드, 채널 파이프라인으로 나뉜
velog.io
자바 네트워크 소녀 Netty 정리
1장에서는 본격적으로 네티의 개념에 대해 알아보기 전, 간단한 echo 서버, 클라이언트를 구현해본다.그냥 자바의 소켓 프로그래밍을 통해 구현하는 것에 비해 네티의 추상화로 인해 얼마나 편하
velog.io
'세미나' 카테고리의 다른 글
[세미나][Netty] 네트워크 프로그래밍 3. (0) 2023.04.23 [세미나][Netty] 네트워크 프로그래밍 1 (0) 2023.01.25