2012-02-22 30 views
6

Tôi đang tìm cách xây dựng một cụm mã hóa video phân tán gồm vài chục máy. Ive chưa bao giờ làm việc với một hàng đợi tin nhắn trước đây, nhưng 2 mà tôi bắt đầu chơi xung quanh là Gearman và Beanstalkd.Mã hóa video phân tán - Gearman vs Beanstalkd

Cây đậu có vẻ đơn giản hơn nhiều và dễ sử dụng hơn Gearman, nhưng không phải là tính năng phong phú như.

Một điều tôi không hiểu là ... làm thế nào để bạn sinh ra công nhân mới trên tất cả các máy chủ? Tôi dự định sử dụng php. Nó đơn giản như chạy worker.php trong CLI với "&" và chỉ có nó ngồi đó chờ đợi cho công việc?

Tôi nhận thấy thiết bị không thực sự giết quá trình sau khi hoàn thành công việc, nhưng Beanstalk có, vì vậy tôi phải khởi động lại tập lệnh sau mỗi công việc, trên mọi máy chủ.

Hiện nay Im nghiêng hơn để sử dụng cây đậu, dòng chảy chung của những điều tôi dự kiến ​​là:

Chạy một tỉ mỉ cron trên mỗi máy chủ để kiểm tra nếu có được xác định trước số lượng người lao động chạy. Nếu nó ít hơn được cho là, sinh ra các quy trình công nhân mới. Mỗi quá trình sẽ mất khoảng 2-30 phút.

Có thể tôi có lỗi trong logic của mình ở đây? Hãy cho tôi biết những gì sẽ là một "tốt hơn" hoặc "thích hợp" cách làm điều này?

+0

Hãy chắc chắn để kiểm tra Pheanstalk: https://github.com/pda/pheanstalk –

+0

Xin lỗi về sự ngây thơ của tôi, nhưng với một trong hai khung tin nhắn đó, thì "máy chủ" được cài đặt ở đâu? Trên máy từ xa sẽ xử lý quá trình tải xuống, hoặc máy thông báo cho máy từ xa của một công việc mới? – ariestav

+0

Quá đắt để sử dụng bất kỳ dịch vụ nào trong số đó. –

Trả lời

0

Thuật ngữ tôi sẽ chỉ sử dụng để thử và rõ ràng ... Có khái niệm về nhà sản xuất và người tiêu dùng. Nhà sản xuất tạo ra các công việc được đưa vào hàng đợi (nghĩa là dịch vụ beanstalk) mà sau đó được đọc bởi một người tiêu dùng.

Có nhiều cách để viết người tiêu dùng. Bạn có thể hoặc mỗi khung thời gian x thông qua một công việc cron chạy nhiệm vụ hoặc chỉ có một người tiêu dùng chạy trong một vòng lặp while 1 thông qua php (hoặc những gì có bạn).

Nơi cài đặt dịch vụ thực sự phụ thuộc vào những gì bạn đang theo đuổi. Đối với tôi, tôi thường cài đặt dịch vụ hoặc trên một người tiêu dùng (s) hoặc trên hộp riêng của nó (với đôi khi sau này là quá mức cần thiết tùy thuộc vào nhu cầu của bạn).

Nếu bạn muốn độ bền ở hàng đợi thì bạn nên sử dụng thông số binlog của Beanstalk (-b). Nếu một cái gì đó xảy ra với dịch vụ beanstalk của bạn, điều này sẽ cho phép bạn khởi động lại với sự mất mát dữ liệu tối thiểu trong hàng đợi (nếu không có thông tin). Độ bền ở phía bên sản xuất có thể đến từ việc có nhiều hàng đợi để chống lại.

Các vấn đề liên quan