네티서버에 필요한 요소- ChannelHandler :이 컴포넌트는 클라이언트로부터 받은 데이터를 서버측에서 처리하는 비지니스 논리를 구현. - Bootstrap : 서버를 구성하는 시동코드를 의미한다. 최소한 서버가 연결요청을 수신하는 포트에 서버와 바인당하는 코드가 있어야함. Netty networking 대표적인 추상화 클래스 1. Channel : 소켓(Socket)- Channel 인터페이스는 Socket으로 직접 작업할 때의 복잡성을 완화하는 API를 제공하고 미리정의된 클래스 계층의 루트임1-1. 종류- EmbeddedChannel- LocalServerChannel- NioDatagramChannel- NioSctpChannel- NioSocketChannel 2. EventLoop :흐름..
Back-End/Netty
1. 네티 : 비동기식 이벤트 기반 네트워크 프레임 워크 Netty : 유지 관리가 용이한 고성능 프로토콜 서버와 클라이언트를 신속하게 개발하기 위한 비동기식 이벤트 기반 네트워크 애플리케이션 프레임워크 IF 최대 15만 동시 사용자가 성능 저하 없이 지원하려면? (1) 블로킹 입출력 다중연결- 각각 새로운 클라이언트 소켓마다 새로운 스레드를 할당해야함- 여러 스레드가 입출력 데이터가 들어오기를 기다리며 무한정 대기 상태로 유지될 수 있다.(리소스낭비)- 스레드가 스택 메모리를 할당해야 하는데, 운영체제마다 다르지만 스텍의 기본 크기는 64KB에서 1MB 까지 차지할 수 있다.- JVM이 물리적으로 많은 수의 스레드를 지원할 수 있지만, 동시 접속이 한계에 이르기 훨씬 전부터 컨텍스트 전환에 따른 오버헤..
0. 공통사항- Object 타입 객체를 하나 만들었다.작업환경 : 스프링 4.2.5, netty 4.1.0final 로함/* 패키지와 임포트는 생략. (1) User.java 123456789101112131415161718192021222324252627282930public class User implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String id; private int age; public String getId() { return id; } public void setId(String id) { this.id = id; } public int getAge() { retur..
1. 네티의 ServerBootstrap 소켓모드 - ServerBootstrap은 논 블로킹 소켓, 블로킹 소켓, Epoll 소켓 이 있다. 1. Non Blocking Socket Mode EventLoopGroup에서 새로운 객체를 생성할 때 NioEventLoopGroup 객체를 생성한다. EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); 그리고 채널에서 NioServerSocketChannel.class을 설정해주면 끝. bootstrap.channel(NioServerSocketChannel.class); 123456789101112131415161718..