2010-03-06 21 views
12

Chúng tôi đang phát triển một ứng dụng web với khoảng 50% yêu cầu viết, chúng tôi sẽ đẩy dữ liệu vào nhiều cửa hàng dữ liệu và chèn và cập nhật số lượng đáng kể các bản ghi trong các cửa hàng dữ liệu đó . Để cải thiện thời gian phản hồi, chúng tôi muốn xử lý các yêu cầu như vậy một cách không đồng bộ trong nền.Resque hoặc Gearman - chọn công cụ phù hợp cho công việc trong nền

Ứng dụng web của chúng tôi đang được viết bằng Ruby on Rails.

Hai giải pháp mà tôi đang hướng tới là Resque và Gearman.

Resque: Thông tin thêm tại đây: http://github.com/blog/542-introducing-resque Resque có vẻ rất phù hợp với Ruby và đặc biệt có nghĩa là xử lý công việc nền. "Các công việc nền có thể là bất kỳ lớp hoặc mô-đun Ruby nào đáp ứng để thực hiện. Các lớp hiện tại của bạn có thể dễ dàng được chuyển đổi thành công việc nền hoặc bạn có thể tạo các lớp mới đặc biệt để làm việc."

Gearman: Nó không có ý nghĩa đặc biệt chỉ dành cho các công việc nền để xử lý không đồng bộ, nhưng đó là một cái gì đó nó chắc chắn có thể làm. Rõ ràng là mạnh mẽ hơn, hoặc có vẻ như vậy. Một ưu điểm khác của Gearman là trong khi mã máy khách của bạn có thể ở trong Ruby, mã công nhân có thể ở trong đó, ví dụ, PHP. Mặc dù hiện tại chúng tôi hoàn toàn là ứng dụng Ruby on Rails, những người biết nếu trong tương lai chúng tôi có thể muốn sử dụng PHP hoặc một cái gì đó khác tùy thuộc vào công việc trong tầm tay.

Bạn sẽ đề xuất điều gì? Bạn có kinh nghiệm với một trong hai người không? Tôi nên nhớ những thách thức sản xuất thực tế trong cuộc sống khi lựa chọn giữa hai? Và tôi thậm chí so sánh táo với táo ở đây?

+2

Tôi không đồng ý với trạng thái đã đóng. Q được định dạng tốt và có đủ chi tiết để cung cấp câu trả lời đúng. Các cuộc tranh luận được hoan nghênh và sẽ cung cấp thêm một lượt xem cho giải pháp. – michaelbn

Trả lời

2

Tôi có một số kinh nghiệm với Gearman khi tôi đang tìm kiếm cơ chế phân phối phân phối có thể cung cấp phân phối tải công việc cho async. xử lý trong một môi trường nhóm.

Tôi có thể cho bạn biết rằng nó hoạt động trong trường hợp "mô phỏng" trong đó xử lý không đồng bộ được gửi đến 2 máy (2 công nhân trên mỗi máy = 4 công nhân). Không phải trong một kịch bản trường hợp thực tế (bất cứ điều gì mà nói với bạn). Kịch bản trường hợp thực tế sẽ được thực hiện khi "mô phỏng" cung cấp thông tin hữu ích. Cơ chế bạn chọn sẽ chỉ là một yếu tố trong phân phối khối lượng công việc, vì vậy hãy chắc chắn bạn sẽ không kết thúc với dữ liệu bị hỏng hoặc không hợp lệ khi phân phối "Công nhân" làm việc song song bắt đầu viết trên kho dữ liệu .

Tôi khuyên bạn nên sử dụng phương pháp "mô phỏng" mà tôi đã thực hiện và thực hiện các kiểm tra của bạn trước khi quyết định sử dụng loại nào.

liên quan,

+0

Cảm ơn Andreas. Tôi đồng ý, chúng tôi sẽ làm việc trong môi trường mô phỏng/dev trong một thời gian trước khi triển khai nó vào sản xuất. – Nishith

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