728x90 반응형 SMALL IT281 Netty(4) - encoder/decoder 기본 지난 포스팅에서 ByteArrayDecoder를 이용하여 전문통신 하는 방법에 대해서 정리 해 봤다. StringDecoder, ByteArrayDecoder... 등 encoder, decoder 가 무엇인지 netty 에서 codec 이란 무엇인지 정리해 보자. Message 란? 우선 네트워크 프로그램에서 message 라는 용어는 application에서 의미 있는 byte 시퀀스 구조를 말한다. 보통 프로토콜에 맞는 전문이라고 표현하기도 한다. encoder 는 이 message를 전송할 때 적합한 형식으로 변환하고, decoder는 network stream을 다시 program의 message 포맷으로 변환하는 것을 말한다. Codec 이란? 일반적으로 동영상 압축 알고리즘을 co.. 2021. 2. 9. Netty(3) - Byte array 로 받기 - ByteArrayDecoder is not a @Sharable handler 진행해야 하는 프로젝트 중에 TCP 로 전문을 받아 정해진 프로토콜에 의해 전문을 Parsing 하고 전문에 포함된 File 을 저장하여 분석해야 하는 작업이 필요했다. 이전까지는 Spring integration 을 이용하거나 간단한 경우 직접 native 한 code 를 작성해서 통신작업을 개발했다. netty를 이용하면 multithread 등 고민해야 할 부분들이 아주 많이 사라지고 실제로 처리해야 하는 business logic 에만 집중할 수 있기 때문에 적용해 보았다. childHandler 를 만들고 등록할 때 이 channel을 초기화 해 줘야 한다. 그리고 초기화 시 필요에 따라 encoder(outbound), decoder(inbound) 를 pipeline에 등록한다. .. 2021. 2. 5. Netty(2) - Bootstrap Bootstrap 이란 Application의 동작 및 설정을 지정해주는 helper class 이다. 사전적 의미를 찾아보면 "그 자체의 동작에 의해서 어떤 소정의 상태로 이행하도록 설정되어 있는 방법" 이다. 같은 맥락이라고 이해하면 된다. Bootstrap을 통해 Netty의 Socket mode 나 thread 등을 쉽게 설정할 수 있다. 그리고 EventHandler 또한 Bootstrap을통해 설정해야 한다. Bootstrap은 ServerBootstrap 과 그냥 Bootstrap으로 나뉜다. ServerBootstrap은 Server용, 그냥 Bootstrap은 Client 용이라고 이해하면 된다. Bootstrap 을 사용하는 예제 코드 @RequiredArgsConstruct.. 2021. 2. 4. Netty 란 Netty 란? Netty는 TCP, UDP 소켓 서버 개발과 같은 네트워크 프로그래밍을 매우 간단하고 능률적으로 만들어주는 비동기 이벤트 드리븐 자바 네트워크 프레임워크다. 왜 사용할까? 성능이 좋다. - Non-blocking Asynchronous 가 기본 - 적은 thread로 많은 요청 처리 - GC부하를 최소화하는 Zero-copy ByteBuf 지원 유연하고 쓰기 쉽다 - 각종 network protocol 기본 지원 - 필요한 부분을 쉽게 조립해 쓸 수 있는 구조 - multithread 처리 없이도 사용 가능 ChannelHandler의 메소드는 동시에 불리지 않는다. Channel은 한 스레드에 할당되며 그 스레드에서만 호출 등록된 ChannelFutureListner도 그 .. 2021. 2. 2. 이전 1 ··· 9 10 11 12 13 14 15 ··· 71 다음 728x90 반응형 LIST