2012-05-25 6 views
5

php를 사용하여 사이트를 구축하는 것을 고려하고 있지만 node.js.에서 만든 경우 훨씬 성능이 우수한 몇 가지 측면이 있습니다. 동시에 사이트의 많은 부분을 PHP로 유지해야합니다. 이것은 PHP에서 많은 기능이 이미 개발되어 있고 재개발, 테스트 등이 너무 큰 사업 일 것이므로 솔직히 말해서 사이트의 일부는 PHP에서 완벽하게 실행됩니다.php + gearman + node.js 사용

node.js에서 가장 많이 실행되는 이점을 얻을 node.js 섹션을 다시 작성한 다음 PHP에서 Gearman을 사용하여 node.js에 요청을 전달하도록 고려하고 있습니다. 이렇게하면, 더 많은 근로자를 발사하여 스케일 아웃 (scale out)을 스캔하고 장치가 부하 분산을 처리하게하십시오.

우리 사이트는 많은 교통량을 가지며 기어 맨이이 부하를 처리 할 수 ​​있는지 걱정됩니다. 내가 생산이 질문을 유지하는 wan't, 그래서 크게 다음 주소 점에 초점을 보자

  • 우리가 기억이 가정 우리의 예상 부하를 모두 처리 할 Gearman을 수 (잠재적으로 약 3000 시간에서의 작업, 대기 초당 수천 개가 처리됨)?
  • CURL을 사용하여 node.js에 요청을 전달한 경우이 방법이 더 좋을까요? 그렇다면 node.js가 주어진 스크립트의 여러 인스턴스에 걸쳐로드를 분산시키는 방법을 제공합니까?
  • 단일 실패 지점이 없도록 기어를 구성 할 수 있습니까?
  • 개발 및 확장 측면에서 여러분이 볼 수있는 몇 가지 문제점이 있습니까?

나는이 게시물을 보는 모든 사람이 서로에게 큰 영향을 미치는 문제에 대해 한 곳에서 다양한 정보를 수집 할 수 있도록 이러한 광범위한 범위를 다루고 있습니다.

물론이 모든 것을 테스트 하겠지만 가능한 한 많은 정보를 수집하여 잠재적으로 이와 같은 것을 수행하기를 원합니다.

편집 : 기어맨을 사용하고있는 큰 이유는 비 차단 구조이기 때문이 아니라 엄청난 속도이기 때문입니다. 난 단지 Gearman을 귀하의 질문에 말할 수

+0

예상되는 부하를 모두 처리 할 수 ​​있습니까? _ 문자열 문항의 질문입니다. 사용 가능한 작업자 서버의 수, 대기열의 채우기 속도 및 방법에 따라 달라집니다. 각 항목을 처리하는 데 많은 노력이 필요합니다. 한 서버에서 초당 수천 회를 수행 할 수 있고 더 높은 일정 속도로 대기열에 대기열을 두지 않으면 괜찮을 것이라고 생각해야합니다. Gearman은 차단 및 비 차단 모드 btw에서 사용할 수 있으며 확실히 가치가 있습니다. – halfer

답변

4

:

우리가 기억이 가정 우리의 예상 부하를 모두 처리 할 Gearman을 할 수는 (잠재적으로 약 3000은 수천이 당 처리되면서, 시간에 작업을 대기 둘째)? 짧은

: 예

: 모든 것은 한계가있다. 작업 페이로드가 지나치게 크면 문제가 발생할 수 있습니다. Gearman은 메모리에 큐를 저장합니다. 따라서 페이로드가 Gearman에서 사용할 수있는 메모리 양을 초과하면 문제가 발생합니다.

단일 실패 지점이 없도록 기어를 구성 할 수 있습니까?

Gearman에는 MySQL을 지속성 저장소로 사용할 수있는 플러그인/확장/구성 요소가 있습니다. 그런 식으로 Gearman이나 기계 자체가 고장 나면 바로 돌려 놓을 수 있습니다. 여러 작업자 서버는 다른 작업자가 다운되면 계속 진행될 수 있습니다.

+0

감사합니다. 이것은 내가 기어맨에 관해 가지고 있었던 중요한 점의 일부에 대한 답입니다. 우리의 구현을 위해 제대로 작동하는지 확인하기 위해 이러한 것들을 테스트 할 것입니다. – user396404

1

노드에는 n 프로세스에 대한 기본로드 균형 조정을 수행 할 수있는 cluster module이 있습니다. 유용 할 수도 있습니다.

nodejs-land의 일반적인 아키텍처는 노드가 http를 말한 다음 http proxy 또는 service registry과 같은로드 균형 조정을 사용하는 것입니다. 나는 그것이 다른 곳에서도 거의 같다고 확신한다. 기어맨이 "충분하다"고 말하면 나는 충분히 알지 못하지만 이것이 일반적인 생각이라면 괜찮을 것이라고 상상할 것이다. 최소한, 다른 사람들은 그것이 어떻게되었는지 듣는 것에 관심을 가질 것입니다!

편집 : number-crunching은 노드의 이벤트 루프를 차단합니다. 이것은 당신이 그것에 대해 생각한다면 다소 명백하지만, 명심해야 할 것은 분명합니다.

+0

감사합니다. 이것은 node.js에 대한 실행 가능한로드 균형 조정 옵션처럼 보입니다. 로드를 분산하는 방법과 사용할 수있는 중복성 및 지속성 유형을 조사해야합니다. – user396404

+0

또한, 저의 게시물에서 node.js를 주로 사용하기 때문에 이벤트 차단이 내 관심사가 아니라는 것을 분명히해야합니다. 내가 더 명확하게 원래 게시물을 업데이 트했습니다. – user396404

+0

이것은 사이트의 초기 단계 일 가능성이 높지만 PHP에 대한이 노드에 관심이 있습니다. http://nodephp.org –