2013-06-30 4 views
2

나는 XPath는이 및 저장 검색된 정보의 일부에를 조회 를 사용하여 HTML 요소를 찾고, 링크, 다운로드 페이지의 긴 목록을 통해 크롤 링 응용 프로그램을 쓰고 있어요 mysql 데이터베이스. 멀티 서버 솔루션을 사용하여 서버를 최대한 활용하고 대기 시간을 줄입니다.웹 크롤링 성능은

대부분의 응용 프로그램은 csharp 및 java를 사용하여 작성하고 웹 응용 프로그램은 asp.net/c#로 작성합니다.

Node.js가 성능 관점에서 고려해야 할 가치가 있는지 여부는 질문하고 싶습니다. 주어진 처리량이 가장 중요한 요소입니다. Node.js는 더 많은 이식성과 크로스 플랫폼을 제공하는 또 하나의 이유이기는하지만 성능이 중요합니다.

+0

나의 초기 생각은 예 - 노드가 이런 종류의 작업을 고려할 가치가 있다는 것입니다. 노드의 가장 큰 장점은 성능입니다. 그것은 정말로 동시성을 처리하도록 설계되었습니다 - 비록 단일 스레드 일지라도. 멀티 스레딩 C# 및 그 악몽을했습니다. –

+0

스레드 풀을 사용하여 구현 된 call_back을 사용합니다. 나는 그것이 단일 쓰레드인지 확신하지 못한다. 콜백이 스레드 풀에 의해 실행되기 때문에 다중 스레드라고 생각합니다. 여전히 명시 적으로 병행하지 않아도됩니다. –

답변

0

응용 프로그램의 병목 현상이 코드보다는 네트워크 (HTTP 또는 MySQL)에 있다고 생각합니다.

위쪽 또는 아래쪽으로 Node.js는 단일 스레드이며 메시지 대기열을 기반으로 모든 "메시지"가 완료되면 종료됩니다. 모든 I/O는 스레드 풀에서 대기합니다 (권장하지 않는 동기화 방법을 사용하지 않는 한). 귀하의 경우에

몇 가지 :

당신은 프로세서/스레드 간단하고 전체 컨트롤을 가지고 있지 않지만, 당신은 항상 동시 작업의 수를 제한 할 수 있습니다
  • 자신 당신은 걱정할 필요가 없습니다
  • 전혀 동시성이 없기 때문에 동시성에 대해
  • Node.js의 모든 API는 유선 I/O를 염두에두고 설계되었으므로 웹 크롤러 작성을 위해 코드의 20-50 % 만 줄 수 있습니다. C에서보다 #
  • Node.js에는 XML 라이브러리가 내장되어 있지 않습니다. n NPM
  • JavaScript는 인터프리터 언어이며 코드는 C#보다 느립니다. 당신의 더 I에 있기 때문에 그러나/O, 나는 너무 많은 당신을 진정되지해야한다고 생각
  • Node.js를에
  • 디버깅 자바 스크립트는 고통이지만, 웹 크롤링 중 하나

내가 가진 매우 복잡하지 않아야 Node.js에 몇 가지 간단한 웹 크롤러를 작성하고 시도해 볼 것을 권장합니다.