Skip to Content
Suffering builds character
아카이브23.스프링 웹플럭스Java NIO, 네티네티7.부트스트랩 옵션

7.부트스트랩 옵션

부트스트랩을 통해 구성할 수 있는 설정 옵션은 크게 다음과 같음

  1. 채널의 전송 모드
  2. 이벤트 루프
  3. 채널 파이프라인

1. 채널의 전송 모드

사용할 소켓 채널 모드에 따라 블로킹, 논블로킹 그리고 epoll로 지정할 수 있음

epoll 모드는 입출력 다중화 기법으로 입출력 방식들 중에서 빠른 편에 속하지만, 리눅스에서만 동 작하며, 커널 2.6버전 이후부터 사용 가능

Sample.java
ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) // 전송 모드를 논블로킹 모드로 설정 // ...

2. 이벤트 루프

이벤트 루프는 소켓 채널에서 발생한 이벤트를 처리하는 스레드 구현체(뒤에서 설명)

Sample.java
EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.group(bossGroup, workerGroup) // 이벤트 루프를 master, worker로 구분하여 생성

3. 채널 파이프라인

소켓 채널로 수신된 데이터를 처리할 데이터 핸들러들을 지정하는 곳, 채널 파이프라인은 연결된 채널에서 사용할 데이터 핸들러에 대한 내용을 포함함

Sample.java
ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) { ChannelPipeline p = ch.pipeline(); // 채널 파이프라인 생성 p.addLast(new EchoServerHandler()); // 파이프라인에 데이터 핸들러 등록 } });

정리하면, 부트스트랩이란 네티의 유틸 클래스로 네티로 작성한 네트워크 애플리케이션의 동작 방식과 환경 설정을 도와주는 헬퍼 클래스

네트워크 애플리케이션 설정에 필요한 모든 내용들을 담고 있음

💡
Tip

부트스트랩 관련 네티의 실제 API 참고

AbstractBootstrap.java, 빌더 패턴으로 구현되어 있음
ServerBootstrap, 서버 구성용 부트스트랩 클래스
Bootstrap, 클라이언트 프로그램 구현용 부트스트랩 클래스

Last updated on