2013-08-02 1 views
10

I/O 무거운 작업과 CPU 무거운 작업 모두에 적합한 웹 기술을 선택하려고합니다. NodeJs는 큰 하중을 처리하기에 적합하며 스케일 아웃 될 수 있습니다. 그러나, 나는 CPU 무거운 부분으로 붙어있다. 노드에 다른 기술 (예 : Java)을 통합 할 수 있으므로 다른 알고리즘에서 알고리즘을 실행 한 다음 노드에서 결과를 다시 사용할 수 있습니다. 기존 솔루션이 있습니까? 다른 모든 제안은 매우 좋습니다.CPU가 많은 작업을 처리하기 위해 nodejs와 Java를 통합하는 방법은 무엇입니까?

+2

가장 쉬운 방법은 테스트하여 다양한 기술이 요구 사항에 어떻게 부합하는지 확인하는 것입니다. 또한 인프라가 10 년 전보다 비싸지는 않다는 점도 명심하십시오. 로드를 지원하기 위해 새로운 서버 인스턴스를 생성하는 것이 요즘은 쉽지 않습니다. –

+1

CPU가 많은 JS 코드를 다른 스레드에 아웃소싱 할 수있는 이유는 무엇입니까? threads-a-gogo https://github.com/xk/node-threads-a-gogo 및 기타 nodej 스레딩 도구를 확인하십시오 :) – randunel

+0

고마워요. 많은 사람들, nodejs 스레딩 도구가 내가 찾고있는 것 같습니다. 나는 그것을 확실히 시도 할 것이다. :) –

답변

11

node-java을 사용하여 NodeJS와 Java를 통합 할 수 있습니다.

+0

고마워, 나는 또한 그것을 시도 할 것이다. –

2

이전 답변에서 언급했듯이 Java와 통신하는 npm 모듈 인 node-java를 사용할 수 있습니다. Node.js를 Java 라이브러리로 랩핑하고 Java에서 Node.js API를 제공하는 J2V8을 사용할 수도 있습니다.

+1

답변 해 주셔서 감사합니다. 질문은 3 년 전에 제기되었습니다. 현재 결론 : 토끼 mq 또는 kafka (분산 솔루션)와 같은 메시지 브로커는 이러한 통합을 피하는 데 실제로 도움이 될 수 있습니다. 또한 계산이 많이 필요한 작업을 apache spark와 같은 특수 모듈에 위임 할 수 있습니다. 일반적으로이 단계에서 람다 아키텍처는 내가 믿는 질문에 대한 해답이다. –

0

대답은 lambda architecture입니다.

NodeJs는 그 자체만으로 멋집니다. 빠른 쿼리를 가볍게 처리하고 데이터에 대한 추가 계산을하지 않아도됩니다.

CPU 무거운 작업은 JVM을 기반으로하는 특수 구성 요소 (물론 가장 유명한 것들은 JVM에 있음)에 쉽게 위임 할 수 있습니다. 이는 메시지 브로커 및 마이크로 서비스를 사용하여 올바르게 구현됩니다.

nodejs를 Cassandra 나 Mongodb와 같은 데이터베이스와 Apache Spark와 같은 클러스터 컴퓨팅 프레임 워크에 연결할 수있는 이벤트 기반 아키텍처 (문제는 아니지만 반드시 필요하지는 않음)는 체계. 가벼운 컨테이너는 각 구성 요소가 살기 좋은 격리 런타임 환경을 제공하여 케이크에 장식을 추가합니다.

이것이 지금까지이 질문과 관련하여 내 결론입니다. 위의 제안 사항은 CPU 또는 HP JVM 기반의 CPU 기반 프로젝트에서 노드를 래핑 할 필요가 없다고 생각합니다.

관련 문제