Netty 부트스트랩
애플리케이션의 각종 동작, 설정 지정 헬퍼
구조
전송 계층 (소켓 모드 및 IO 종류)
이벤트 루프 (싱글 쓰레드, 멀티 쓰레드)
채널 파이프라인 설정
소켓 주소와 포트
소켓 옵션
ServerBootstrap
예제
부트스트랩에 쓰레드 등록. 첫번째는 부모고 두번째는 자식. 부모는 외부에서 들어오는 클라이언트 연결을 받고 자식은 연결된 클라이언트 소켓을 바탕으로 데이터 입출력 및 이벤트 처리를 담당
부모 쓰레드가 사용할 네트워크 입출력 모드 설정
자식 쓰레드의 초기화 방법 설정. ChannelInitializer은 연결된 채널이 초기화될 때 호출되는 기본 동작
입출력 모드 변경
Nonblocking :
NIOEventLoopGroup
,NioServerSocketChannel
Blocking :
OioEventLoopGroup
,OioServerSocketChannel
Epoll :
EpollEventLoopGroup
,EpollServerSocketChannel
epoll 모드는 리눅스에서만 사용 가능
API
group: 이벤트 루프 설정
클라이언트와 달리 이벤트 루프가 2개 필요
channel: 소켓 입출력 모드 설정
LocalServerChannel: 로컬 가상 통신을 위한 소켓 채널
OioServerSocketChannel: Blocking 소켓 채널
NioServerSocketChannel: Nonblocking 소켓 채널
EpollServerSocketChannel: epoll 소켓 채널
OioSctpServerChannel: Blocking sctp 소켓 채널
NioSctpServerChannel: Nonblocking sctp 소켓 채널
SCTP(Stream Control Transmission Protocol): Layer 4 protocol
NioUdtByteAcceptiorChannel: Nonblocking udt 소켓 채널
NioUdtMessageAcceptorChannel: blocking udt 소켓 채널
UDT(UDP-Based Data Transfer): Layer 7 protocol
channelFactory: 소켓 입출력 모드 설정
Netty에서 기본 제공하는 channel class보다 더 복잡한 로직이 필요할 때 사용
channel class의 constructor에 패러미터가 없다면 그냥 channel() 쓰는걸 추천
handler: 서버 소켓 채널의 이벤트 핸들러 설정
부모 쓰레드에서 발생한 이벤트만 처리
childHandler: 클라이언트 소켓 채널의 이벤트 핸들러 설정
자식 쓰레드에서 발생한 이벤트만 처리
option - 서버 소켓 채널의 소켓 옵션 설정
기본적으로 자바에서 설정할 수 있는 모든 소켓 옵션 설정 가능
TCP_NODELAY: Nagle 알고리즘 비활성화 여부 설정
SO_KEEPALIVE: 정해진 시간마다 keepalive packet 전송
SO_SNDBUF: 커널 송신 버퍼 크기
SO_RCVBUF: 커널 수신 버퍼 크기
SO_REUSEADDR: TIME_WAIT 상태의 포트에도 bind 가능해짐
SO_LINGER: 소켓을 닫을 때 송신 버퍼에 남은 데이터 전송 대기 시간
SO_BACKLOG: 동시에 수용 가능한 소켓 연결 요청 수
childOption: 클라이언트 소켓 채널의 소켓 옵션 설정
Bootstrap
클라이언트 어플리케이션 설정
기본적으로 ServerBootstrap와 대동소이
API
group: 이벤트 루프 설정
ServerBootstrap이랑 달리 패러미터를 1개만 받음
channel: 클라이언트 소켓 입출력 모드 설정
클라이언트 소켓 채널만 설정 가능
channelFactory: 소켓 입출력 모드 설정
마찬가지로 클라이언트 소켓 채널만 설정 가능
handler: 클라이언트 소켓 채널의 이벤트 핸들러 설정
ChannelInitializer class로 등록됨
ServerBootstrap의 childHandler이랑 같음
option: 클라이언트 소켓 채널의 소켓 옵션 설정
Last updated