2012-02-22 4 views
6

수십 대의 컴퓨터로 구성된 분산 비디오 인코딩 클러스터를 만들려고합니다. 전에는 메시징 대기열로 작업 한 적이 없었지만 Gearman과 Beanstalkd와 함께 놀았던 2 개는 시작되었습니다.분산 비디오 인코딩 - Gearman vs Beanstalkd

Beanstalk은 Gearman보다 훨씬 간단하고 사용하기 쉽지만 기능이 풍부하지는 않습니다.

내가 이해할 수없는 한 가지 방법은 ... 모든 서버에 새 직원을 어떻게 태어나나요? 나는 PHP를 사용할 계획이다. CLI에서 "&"을 사용하여 worker.php를 실행하는 것만 큼 간단하며 작업을 기다리는 중입니까?

나는 gearman이 작업이 끝난 후에 실제로 프로세스를 죽이지 않지만 Beanstalk은 모든 서버가 작동 할 때마다 스크립트를 다시 시작해야한다는 것을 알아 냈습니다. 콩 줄기, 내가 계획 한 일의 일반적인 흐름을 사용하기

현재 임 경사가 있었다 :

실행이 미세이 있는지 확인 각 서버에서 cron을 실행 노동자의 양을 미리 정의 된. 그것보다 작 으면, 새로운 작업자 프로세스를 생성하십시오. 각 프로세스는 약 2 ~ 30 분 정도 소요됩니다.

아마 여기 논리에 결함이 있습니까? 이 일을하는 "더 좋은"또는 "적절한"방법이 무엇인지 알려주십시오.

+0

Pheanstalk (https://github.com/pda/pheanstalk –

+0

)를 확인하십시오. 내 두 가지 메시징 프레임 워크 중 하나를 사용하면 "서버"가 어디에 설치됩니까? 오프로드 된 프로세스를 처리 할 원격 시스템 또는 원격 시스템에 새로운 작업을 알리는 시스템? – ariestav

+0

해당 서비스를 사용하기에는 너무 비쌉니다. –

답변

0

전문 용어 나는 단지 시도하고 명확하게하기 위해 사용할 것이다 ... 생산자와 소비자의 개념이있다. 생산자는 소비자에 의해 읽혀지는 대기열 (즉, 콩기름 서비스)에 놓인 작업을 생성합니다.

소비자를 작성하는 데는 여러 가지 방법이 있습니다. cron 작업을 통해 매 x 시간 프레임을 실행하거나 PHP를 통해 while 루프를 실행하는 소비자를 가질 수 있습니다 (또는 무엇이 있습니까).

서비스를 설치하는 위치는 실제로 수행중인 작업에 따라 다릅니다. 나에게 나는 보통 소비자 나 별도의 상자에 서비스를 설치한다.

대기열 측면에서 내구성을 원하면 Beanstalk의 binlog 매개 변수 (-b)를 사용해야합니다. beanstalk 서비스에 문제가 발생하면 대기열에있는 데이터 손실을 최소화하면서 재시작 할 수 있습니다 (정보가 없어도). 제작자 측의 내구성은 여러 대기열을 사용하여 발생할 수 있습니다.