NodeJs 0 Intro.

욱2·2023년 4월 4일
0

NodeJs

목록 보기
2/13

Introduction to Node.js

FF= FunFact

Not a Server, Not a language. Its a runtime environment where we can run JS

  • Highly SCALABLE, Data Intensive, and Real Time Apps
  1. Non-Blocking / Asynchronous Nature of Node

저번 시간에 서버와 스레드에 대한 내용을 정리했을때 Non-Blocking I/O에 대해서 알아봤다.

모든 것을 NB-I/O 방식으로 바로 처리하는것을 Busy-Waiting이라고 한다. 이것은 데이터가 없어도 계속 돌아간다는 것이다.

회전초밥에 초밥없이 접시만 계속 돌아가는것이다.

그걸 돌리는 CPU는 엄청난 과부화가 걸린다.

  1. Event Demultiplexer ( Event Notification Interface )

Busy-Waiting을 잡아줄 친구다. 새로운 이벤트가 올때까지 멈춰서 CPU 과부화를 예방한다.

아주 미친 인터페이스다.

이것은 많이 들어봤을 Event-Loop Architect 의 일부다.

밑에 그림을 보면 초록색 그림에 동그라미가 있다. 이벤트 마다 어떻게 처리( Callback ) 될건지 Round Loading 을 해준다. Event-Loop - where callbacks are assigned and used

  1. Reactor Pattern

책에서 처음 등장하는 패턴이다.

Handler 가 투입되며 완성되는 패턴이다.

이 논블로킹과 패턴을 구현하기 위해서는 libuv 라는 라이브러리가 었어야한다. 노드에서 가장 중요하다고 할수있다. 루프 생성 이벤트 큐 관리 비동기I/O… 대충 필수템이라고 보면된다.

그렇게 노드의 구성은 :

  • LIBUV - EventLoop 와 비동기 처리하는 system을 연결하는 Interface
  • BINDING - LIBUV 와 다른 저수준 기능들을 랩핑하고 표출시키기 위한 세트
  • V8 - 크롬 브라우저를 위해 구글이 개발한 JS 엔진으로 NODEJS가 매우 빠르고 효율적인 이유다.
       - 혁신적인 설계와 속도 효율적인 메모리 관리로 높은 평가를 받고 있다.
    • 자바스크립트라는 차에 엔진을 달아줬다고 생각하면된다.

      FF : 자바스크립트는 느리고 사용량이 적은 친구였다.

      구글에서 새로운 자바스크립트 엔지 V( 8 ) 을 장착한 크롬이 나오며 이 친구를 빠르게 해주었다.

      V ( 8 ) 로 인해 노드가 시작됬다고 할수있다.

  • 고수준 NODEJS API를 구현하고 있는 코어 JS 라이브러리.

참고 자료
https://tusharf5.com/posts/node-design-patterns-reactor-pattern/
https://www.geeksforgeeks.org/what-is-reactor-pattern-in-node-js/

profile
성장하는 날 위한 기록

0개의 댓글