NETTY] 00 요약

념념개발자·2022년 11월 7일
0

JAVA

목록 보기
1/4

Java로 서버개발은 어렵지만 Netty라면 쉽게 개발이 가능하다.
유지보수를 고려한 고성능 프로토콜 서버와 클라이언트를 빠르게 개발할 수 있다.
정리

Netty란

  • 비동기 논블로킹 이벤트기반 프로그래밍 프레임워크.
  • Node.js동작방식과 동일하다
  • 자바환경에서 대규모 트래픽을 효율적으로 처리하는 서버개발에 적합.
  • 안정적이다.
  • 간결하다.
  • 빠르다. [커넥션처리. 100,000~1,000,000건 처리 *톰캣 10,000건 처리 기준]
    -- 속도에서 빠르다. (더 높은 순위의 프레임워크도 Netty위에서 개발된 경우도 있다.)

이벤트 모델

- 이벤트 기반 네트워크 프로그래밍

이벤트를 발생시키는 객체와 발생될 이벤트 종류 정의.
서버에서 이벤트 발생주체: 소켓
이벤트 종류: 소켓연결, 데이터 송수신

  • Inbound Events(데이터 수신)
  • Outbound Events(데이터 송신)

클라이언트 ------------------------------------------------ 서버
Outbound ------------------ REQUEST ------------------> Inbound "몇시예요?"
Inbound <------------------ RESPONSE -----------------> Outbound "출근시간"


Netty 중요개념, 논블로킹

이부분은 내가 많이 헤매던 부분이다.
비동기와 논블로킹은 비슷하나 동일한 개념이 아니라고 한다.
비동기와 논블로킹이 어떻게 다른지 설명을 찾아봐도 이해가 쉽지 않아서 정리해봤다.

<참고>소켓방식 비교
스레드 --- (읽기/쓰기) --- 클라이언트

  • 블로킹 소켓: 1:1 스레드 배정.
  • 논블로킹 소켓: 하나의 스레드 SELECTOR. 다수의 클라이언트

논블로킹

"제어권은 항상 A한테만!" == B로 요청해도 내 코드는 멈추지 않는다.

======================================
A --------------------------------- B
======================================
B로 요청    ----------------------> 실행
"계속실행"  ----------------------- 완료
계속실행

블로킹

"제어권은 부메랑처럼" == B로 요청 시 같이 넘어갔다가 완료 시 A로 돌아온다.

======================================
A -------------------------------- B
======================================
B로 요청	  ----------------------> 실행
중지상태   ----------------------- 완료
이어서 실행

동기

A ---> B
A는 B의 리턴 값이 필요. (B의 리턴값을 계속 확인.)

비동기

A ---> B
B로 콜백함수를 함께 전달, B완료시 콜백함수 실행
profile
념바리뚜

0개의 댓글