2012-02-22 10 views
6

Zamierzam zbudować rozproszone kode kowanie wideo kilkudziesięciu maszyn. Nigdy wcześniej nie pracowałem z kolejką wiadomości, ale 2, z którymi zacząłem grać, to Gearman i Beanstalkd.Rozproszone kodowanie wideo - Gearman kontra Beanstalkd

Beanstalk wydaje się być dużo prostszy i łatwiejszy w użyciu niż Gearman, ale nie jest tak bogaty w funkcje jak.

Jedna rzecz, której nie rozumiem, to ... w jaki sposób odradza się nowych pracowników na wszystkich serwerach? Planuję korzystać z php. Czy jest to tak proste, jak uruchomienie pliku worker.php w interfejsie CLI z "&" i czy po prostu czeka na pracę?

Zauważyłem, że gearman tak naprawdę nie zabija procesu po wykonaniu zadania, ale Beanstalk robi to, więc muszę restartować skrypt po każdym zadaniu, na każdym serwerze.

Obecnie Im bardziej skłonni do korzystania beanstalk, ogólny przepływ rzeczy zaplanowano:

Uruchom drobiazgowo cron na każdym serwerze, który sprawdza, czy są wstępnie zdefiniowane ilość pracowników uruchomiony. Jeśli jest to mniej niż powinno, należy odradzić nowe procesy robocze. Każdy proces trwa około 2-30 minut.

Może mam tu wadę w mojej logice? Daj mi znać, jaki byłby "lepszy" lub "właściwy" sposób robienia tego?

+0

Pamiętaj, aby sprawdzić Pheanstalk: https://github.com/pda/pheanstalk –

+0

Wybacz moją naiwność, ale z jednym z tych dwóch frameworków komunikacyjnych, gdzie jest zainstalowany "serwer"? Na zdalnej maszynie, która obsłuży odciążony proces lub urządzenie, które informuje zdalny komputer o nowej pracy? – ariestav

+0

Zbyt kosztowne korzystanie z którejkolwiek z tych usług. –

Odpowiedz

0

Terminologia Wykorzystam tylko po to, aby spróbować i wyjaśnić ... Istnieje koncepcja producenta i konsumenta. Producent generuje zadania, które są umieszczane w kolejce (to jest usługa beanstalk), które są następnie odczytywane przez konsumenta.

Istnieje wiele sposobów na zapisanie konsumenta. Możesz albo co x ramka czasowa za pośrednictwem zadania cron uruchomić zadanie lub po prostu mieć konsumenta działającego przez jakiś czas 1 pętlę za pośrednictwem php (lub co masz).

Miejsce instalacji zależy od tego, do czego dążysz. Dla mnie zwykle instaluję usługę u konsumenta (ów) lub w osobnym pudełku (czasami ten ostatni jest nadmierny w zależności od twoich potrzeb).

Jeśli chcesz zachować wytrzymałość po stronie kolejki, powinieneś użyć parametru binlog Beanstalk (-b). Jeśli coś się stanie z twoją usługą beanstalk, umożliwi to ponowne uruchomienie z minimalną utratą danych w kolejkach (jeśli nie, nie ma informacji). Trwałość po stronie producenta może wynikać z posiadania wielu kolejek do wypróbowania.