2014-07-04 3 views
0

나는 gearman을 웹 프로젝트의 큐 시스템으로 사용하고 싶다. 그래서 나는 위대한 작품 gearman 및 gearmanManager를 시도했다. 그러나 저는 근로자, 직무 또는 서버가 사라진 경우 (예를 들어 PHP 오류 또는 그 이유가 무엇이든) 일어난 일을 스스로에게 묻습니다.Gearman and lost workers

  • 클라이언트 (브라우저) 이 콜백을 기다리고 작업자/서버가 충돌하는 동기화 작업을 실행하면 어떻게됩니까?
  • 작동 중일 때 비동기 작업이 발생하면 어떻게됩니까? 기어맨이 다시 시도 할 것인가? (mysql에 대기열에 저장되어 있기 때문에) 아니면 gearman이 무시 하겠는가? 그리고 그것이 무시 당하지 않고 노동자가 계속해서 충돌한다면 그것은 어떻게됩니까?

시스템이 ist scalabel (예 : NFS)인지 확인하고 싶습니다. 나에게 모범이되거나 내가 얻을 수있는 경험이 있습니까?

는 서버가 충돌 한 경우, 클라이언트가 연결 아무것도하지 않습니다

답변

2
  1. ... 여러분 모두 감사하고 아주 좋은 주말을 가지고있다. 어떻게 처리 할 것인지는 응용 프로그램에 달려 있습니다. 작업자가 충돌하여 동기 작업을 실행하려고 시도하면 클라이언트는 시간 초과 값을 제공하지 않으면 작업자가 사용 가능할 때까지 대기합니다.

  2. 비동기 작업이 수행되고 작업자 인 경우 gearman이 작업을 즉시 재실행합니다. 그것을 잡는 각 노동자를 부수는 경우에, 당신은 활동적인 노동자없이 남겨 둘지도 모르다.

    -j [--job-retries] arg (= 0) 작업 서버가 작업을 제거하기 전에 작업을 실행하려고 시도한 횟수입니다 ( ). 이 은 잘못된 작업을 수행하는 데 유용합니다. 가능한 모든 작업자가 중단됩니다. 기본값은 이며 제한이 없습니다.

손상되거나 깨지기 쉬운 코드를 배포하면 사용중인 시스템에 관계없이 문제가 발생합니다. 잘못된 코드로 인해 응용 프로그램이 중단됩니다. :-)

Gearman 설정은 확장 가능하지만 영구 대기열 지원을 사용하는 경우 각 서버 에는 자체 백엔드가 있어야이 필요합니다. 영구적 인 대기열은 gearmand가 사망하고 다시 시작해야하는 경우에만 백업으로 유지되므로 서버 인스턴스간에 동일한 데이터베이스와 테이블을 공유 할 수 없습니다. 필요한 경우 응용 프로그램이 쉽게 태스크를 다시 대기시킬 수있게하는 것이 더 유용 할 수 있습니다.

+0

안녕하세요 fiskfisk, 내 질문에 답변 해 주셔서 감사합니다. 이것은 내 붙어 빠져 나를 도왔습니다 :) :). 좋은 월요일에 친절한 사람이 있으니 – TheTom

+0

@ user3804760 문제가 해결되면 대답을 수락하십시오. – MatsLindh