728x90
반응형
Netty
비동기 네트워크 프레임워크입니다.
Channel에서 발생하는 이벤트들을 EventLoop가 처리하는 구조를 가집니다.
- Channel
- 기본 입출력 작업은 네트워크 전송에서 제공하는 기본형을 이용합니다.
- 자바 기반 네트워크 기본 구조는 Socket 클래스입니다.
- Netty의 Channel 인터페이스는 Socket으로 직접 작업할 때 복잡성을 완화하는 API를 제공합니다.
- EventLoop
- 이벤트를 실행하기 위한 무한루프 쓰레드입니다.
- Channel에서 발생한 이벤트는 이벤트 큐에 입력됩니다.
- 이벤트 큐에 입력된 이벤트가 있을 때 해당 이벤트를 꺼내서 이벤트를 실행합니다.
- 지원하는 스레드 종류에 따라 단일 스레드 이벤트 루프와 다중 스레드 이벤트 루프로 나뉩니다.
- 이벤트 루프가 처리한 이벤트의 결과를 돌려주는 방식에 따라 콜백 패턴과 퓨처 패턴으로 나뉩니다.
- EventLoopGroup
- TCP 클라이언트는 이벤트 루프 그룹을 사용합니다.
- 워커 스레드는 초기화 시점에 런타임에 사용할 수 있는 프로세서 수로 세팅을 합니다.
- 다른 설정이 필요하다면 LoopResource create() 메서드 중 하나를 사용합니다.
- 여러개의 EventLoop를 가지고 있는 풀이라고 생각하면 됩니다.
- Selector
- 요청에 대한 이벤트를 선택하게 해줍니다.
- ChannelHandler
- 입출력 이벤트나 Operation을 제어하는 핸들러
- 실제 요청에 대한 제어를 하기 위한 인터페이스 입니다.
- ChannelPipline
- 입력으로 출력을 전달할 수 있도록 파이프라이닝을 한 형태입니다.
- 이벤트 핸들러를 단일 처리기로 계속 연결하는 대신, 입력으로 출력을 전달할 수 있도록 파이프라인 개념을 통해 전체 처리에 대한 Sequence를 연결합니다.
- BootStrap
- 프로세스를 지정된 포트로 바인딩하거나 지정된 호스트와 포트에서 실행 중인 다른 호스트로 연결하는 등의 일을 하는 Application의 네트워크 레이어를 구성하는 컨테이너를 제공합니다.
- Netty Resources
- Channel에 대한 Context 정보를 가진 Connection을 관리하는 Contract
- EventLoop Resource
- Disposable
- 람다 기반 subscribe() 메서드는 모드 Disposable 타입을 리턴합니다.
- Disposable 인터페이스는 dispose() 메서드 호출을 통해 구독을 취소할 수 있습니다.
- Flux, Mono 관점에서 취소는 소스가 데이터 생산을 중단해야하는 신호입니다.
[참고]
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] Netty 서버 데이터 끊기는 문제 해결 (0) | 2022.08.16 |
---|---|
[Spring] Netty 서버 구현과 문제 발생 (0) | 2022.08.16 |
[Spring] 관습적인 추상화 (2) | 2022.08.09 |
[Spring] 객체 지향 설계의 다섯 가지 기본 원칙 - SOLID (0) | 2022.07.15 |
[Spring] @ComponentScan @Autowired 의존관계 자동 주입 (0) | 2022.07.12 |