Node.js 또는 서블릿? [닫은]


10

Javascript 서버 측 언어, 즉 Node.js에 대해 많이 들었고 Node를 선호하는 많은 비교를 보았습니다.

무엇이 더 빠르거나 빠른지, 또는 Java 서블릿과 같은 성숙한 것과 어떻게 관련되는지 이해하지 못합니다.

그러나 서블릿은 Node.js가 아닌 멀티 스레드 프로그래밍 언어 위에 구축됩니다. 그렇다면 node.js가 어떻게 더 빠를 수 있습니까?

1000K 사용자가 데이터베이스 레코드를 쿼리한다고 가정하면 Node.js가 서블릿보다 느리지 않아야합니다.

또한 서블릿이 Node.js에 비해 더 나은 보안을 제공하지 않습니까?


프로세스와 스레드는 모두 멀티 코어 활용을 위해 모든 응용 프로그램을 확장하는 데 사용할 수 있습니다. 둘 다 필요하지 않습니다.
— Raynos

@Raynos 바인딩 된 C 기능도 스레드 할 수 없습니까? 방금 비 블로킹 자동 큐 메신저로 JS의 역할을 맡아서 하위 수준의 물건에 물건을 넘겨 주었지만 여전히 노드에서 내 발을 얻지 못했습니다.
— Erik Reppen

답변:


12

당신은 사과와 오렌지를 섞고 있습니다.

서블릿 (또는 HttpServlet에서 상속)을 사용하면 HTTP 요청 매개 변수에 액세스하고 기존 HTTP 서버 구현을 통해 (또는 그 위에) 무언가로 응답 할 수 있습니다.

Javascript를 언어로 사용하지만 Node.js는 그보다 낮은 수준입니다. 실제로 HTTP 서버를 구현 하는 것부터 시작 합니다. 그럼에도 불구하고 웹 응용 프로그램과 같이 더 높은 수준의 작업을 계속할 수 있습니다.

멀티 스레딩에 대해서는 필요하지 않습니다. Node.js 서버는 멀티 스레딩으로 인해 빠르지 않고 IO 요청을 차단하지 않기 때문에 더 빠르므로 다른 작업을 수행하면서 대기열에서 계속 펌핑 할 수 있습니다. 그들은 할 일이있을 때만 작동합니다-기다리지 않습니다-결과적으로 심각한 성능 향상이 발생합니다.

데이터베이스 쿼리의 경우 클라이언트보다 데이터베이스 모델 및 API의 제약 조건에 더 가깝습니다.

보안에 관해서는-실제로는 다른 주제이며 궁극적으로는 라이브러리가 아닌 개발자의 손에 달려 있습니다.


3
서블릿 3은 Node와 같은 비동기 IO를 지원합니다.
— jiggy

3
jiggy- 무언가 를 지원하는 것과 처음부터 무언가를 위해 설계되는 것에 는 큰 차이가 있습니다. 노드 비동기는 후자입니다.
— Jack

1
@ Yam Marcovic 나는 여전히 "IO 요청을 차단하지 않습니다" 라는 의미를 이해 하지 못합니다 . JEE에서도 스레드가 독립적으로 실행되어 다른 요청이 중단되지 않습니다. 요청마다 새로운 스레드가 생성됩니다. 말이 되나요?
— Oliver
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.