Netty
netty 는 Non-blocking I/O Client-Server Framework for the development of java network applications
*Frame Work 란?
컴퓨터 과학에서 프레임워크는 추상적인 의미 입니다. 소프트웨어의 기본적인 기능들을 제공해준다고한다. 사용자가 필요로하는
기능을 추가하고 변경하게 도움을주는 하나의 뼈대라 생각하면 편하다.
출처 : WIkI
Netty 의 장점
- 사용이 편리하고, 성능이 좋다.
- 각종 네트워크 프로토콜을 기본적으로 지공해준다.
- 필요로 하는부분을 조립해서 사용가능 ( Framework 니까 가능한점 !)
- 멀티 쓰레딩처리 를 안해줘도됨.
Netty 가 성능이 좋은 이유?
- Non-blocking Asynchronous 처리가 기본적이다. ( 비동기식 처리 방식을 활용한다.)
- 적은 Thread 사용으로 많은 데이터 처리가 가능.
- GC부하를 최소화 하는 Zero-copy를 사용.
비동기 식 과 동기식 의 차이.
동기식 (Synchronous) |
비동기식 (Asynchronous) |
상대방의 일정한 신호에 의해 다음동작을 진행
|
상대방의 신호상태와 관계없이 일반적으로 동작 |
예를들자면.
동기식 : 상대방이 받을준비가 됬다는 신호를 받은후 상대방에게 신호를 보내고 상대방측에서 신호를 받은후 신호를 받아도 된다는 신호를 또 보내면 나의 측에서 신호를 확인한후 보내는 것이 동기식.
비동기식 : 동작을 시작하면 상대방측과 신호 관련없이 계속 동작하는 방식이 비동기식.
Software에서의 동기식 과 비동기식
동기식 : 어떤 루틴을 완전히 끝나고 제어권을 반납하면 동기식
비동기식 : 동작이 마무리 안됬어도 제어권을 받납하고 다른 일을 하는것 이 비동기식
근본적으로 DOS와 같은 단일 운영체제에선 근본적으로 불가능하다. Window 와 같은 multi-task 환경에서만 가능하다.
출처 : http://itzone.tistory.com/360
-Zero-copy
예) 파일을 읽은 다음 네트워크를 통해 데이터를 전송하려는경우 읽기 / 쓰기 주기당 두개의 데이터 복사본과 두개의 컨텍스트 스위치가 필요로 하다 이러한 데이터중 복사본 중 하나는 CPU를 사용한다 제로복사를 통해 동일한 파일을 전송하면 컨텍스트 스위치가 2로 줄어들고 모든 CPU의 데이터 사본을 제거한다고한다.
zero-copy 프로토콜은 네트워크 링크의 용량이 CPU의 처리 용량에 근접하거나 초과할 경우 고속 네트워에서 특히나 중요하다.
이러한 경우 CPU는 전송된 데이터를 복사하는데 거의 모든시간을 들인다. 그래서 통신속도를 링크용량이하로 제한하는 병목현상이 발생한다 업계에선 어림짐작 1bit 의 데이터를 처리하기 위해 하나의 CPU 클럭 사이클이 필요로하다고 하다.
출처 : Wiki
Event-Driven-Programming [EDP]
Event-Driven-Programming 이란 사용자의 동작, 센서출력 또는 다른 프로그램/쓰레드의 메세지와 같은 이벤트에의해 프로그램의 흐름이 결정되는 프로그래밍 패러다임이다.
출처: Wiki
The embedded browser failed to load. error . JCEF is not supported in this env or failed to initialize (0) | 2024.01.16 |
---|---|
Netty Basic Interface / ByteBuf (0) | 2017.12.14 |
Netty Basic 네티 사용하기 (0) | 2017.12.13 |
Maven Basic (0) | 2017.12.02 |