본문 바로가기
프로그래밍/Netty 기초

01. Netty란

by Flow.X 2022. 1. 6.
728x90

 

netty란 무엇인가
 
netty.io 에서는 'Netty is an asynchronous event-driven network application framework
for rapid development of maintainable high performance protocol servers & clients'
라고 소개하고 있다

주요컨셉

non-blocking framework이며, blocking IO보다 높은처리력을 보여준다고 한다.
Blocking은 요청후 응답이 올때까지 멍~ 때리면서 기달리는 것이고, non-blocking은 요청하면 '응 요청완료됬어. 완료되면 알려줄께'
라는 개념으로 이래를 하면 되지 않을까 싶다

어떤 이점이 있을까

예를들어 버거킹에 주문하러 갔는데 주문을받고 결제를 하고 음식을 만들고 음식을 내주는 사람이 한명이라고 할땐 일하는사람도, 주문하는사람도
속이 터질것이다. ( 골목식당에서 자주보듯이 )

만약 이걸 주문받는사람, 결제하는사람, 음식만드는 사람, 내주는 사람이 각각 있다고 생각해보자. 뭐 생각 안해봐도 알겠지만 빨라질것이다.
물론 결제 하는데 카드가 거부나서 당황해하는 손님이 있으면 또 문제가 생기겠지만..

그럼 편의점에서 봤었을도 있겠지만, 전 손님 주문내역 남겨두고 뒷손님껄 먼저 처리하는 경우도 있듯이 개별 스텝에서 생기는 지연에 대한 부분도
프로그램적으로 처리할 수 있는 방법을 손쉽게 강조할수 있을것이다.

Netty 는 어떻게 흘러갈까?

1) Bootstrap : 스레드를 생성하고, 소캣을 오픈
 - 음 이건 위설명에서 봤던 가계라고 생각해보면 어떨까?

2) EventLoopGroup
 - multithreaded event loop that handles I/O operation
 - 이건 계산대라고 생각해보자
 
3) EventLoop
 - 새로운 이벤트가 발생하는지 안하는지 확인하는 루프이다.

 - 이건 사장인가 ?
 
4) SocketChannel or Channel
 - 데이터의 전달 통로?

5) ChannelPipeline
 - 각각의 Channel에서 데이터가 들어왔을대 흘러가는 순서정의라고 보면 될듯하다, Channel 은 ChannelPipline을 가지고 있다

6) ChannelHandler
 - Channel에 담겨있는 데이터를 처리하는 곳, Channel의 데이터를 읽어서 처리하거나, 다시 Channel로 넘길수 있다.

 

728x90

'프로그래밍 > Netty 기초' 카테고리의 다른 글

06. Discard Client 만들기  (0) 2022.01.07
04. ChannelHandler 란  (0) 2022.01.06
05. channeInboundAdapter 이벤트 순서  (0) 2022.01.06
03. Discard 서버로 기초를 만들어보자  (0) 2022.01.06
02. Discard 서버  (0) 2022.01.06