2012-02-22 24 views
6

Birkaç düzine makineden oluşan bir dağınık video kodlama kümesi oluşturmaya çalışıyorum. Daha önce hiç mesajlaşma kuyruğu ile çalışmadım, ama etrafta oynamaya başladığım 2 kişi Gearman ve Beanstalkd idi.Dağıtılmış video kodlaması - Gearman vs Beanstalkd

Beanstalk, Gearman'dan çok daha basit ve kullanımı daha kolay gibi görünüyor, ancak onun özelliği kadar zengin değil.

Anlamadığım bir şey ... tüm sunucularda yeni işçiler nasıl doğar? Php kullanmayı planlıyorum. Bu "&" ile CLI çalışan worker.php çalışan ve sadece iş için bekleyen orada oturmak kadar basit mi?

Bir iş bittikten sonra, dişli çarkının aslında işlemi durdurmadığını fark ettim, ancak Beanstalk, her sunucuda her işten sonra komut dosyasını yeniden başlatmam gerekiyor. Sihirli Fasulye, planladığım şeylerin genel akışını kullanmak

Şu Im daha eğilimli olduğunu:

çalıştırın inceden varsa denetler her sunucuda cron çalışan işçilerin miktarını önceden tanımlanmış. Olması gerekenden daha az olsaydı, yeni işçi süreçleri doğurdu. Her işlem kabaca 2-30 dakika sürecektir.

Belki mantığımdaki bir kusurum var mı? Bunu yapmanın "daha iyi" veya "uygun" bir yolu olacağını bana bildirin.

+0

Pheanstalk'a göz attığınızdan emin olun: https://github.com/pda/pheanstalk –

+0

Pardon my naivete'miz, ancak bu iki mesajlaşma çerçevesinden herhangi biri ile "sunucu" nereye yüklenir? Yüklenmemiş işlemi veya uzaktaki makineyi yeni bir iş hakkında bilgilendiren makineyi çalıştıran uzak makinede mi? – ariestav

+0

Bu hizmetlerden herhangi birini kullanmak için çok pahalı. –

cevap

0

Terminoloji Sadece denemek ve açık olmak için kullanacağım ... Bir üretici ve tüketici kavramı var. Üretici, daha sonra bir tüketici tarafından okunan kuyruğa (yani fasülye servisi) konan işler üretir.

Tüketici yazmanın birçok yolu vardır. Her x zaman karesini bir cron işi ile çalıştırabilir ya da sadece bir müşterinin bir döngüde 1 döngüsünde çalışmasını sağlayabilirsiniz (ya da neyiniz var).

Hizmetin nereye yükleneceği, gerçekten neyin peşinde olduğunuza bağlıdır. Benim için normalde hizmeti bir tüketici (ler) ya da ayrı bir kutuya (bazen de ihtiyaçlarınız doğrultusunda aşırıya kaçmadan) kurarım.

Kuyruk tarafındaki dayanıklılığı istiyorsanız, Beanstalk'in binlog parametresini (-b) kullanmalısınız. Fasulye servisinize bir şey olursa, bu, sıralarda minimum veri kaybıyla yeniden başlatmanızı sağlar (bilgi yoksa). Üretici tarafında dayanıklılık, denenmesi gereken birden fazla kuyruğa sahip olabilir.