2012-04-26 27 views

Trả lời

29

Phụ thuộc vào ngữ cảnh.

Nhân viên thường là quy trình chạy bên ngoài chu kỳ yêu cầu ứng dụng của bạn. Các thư viện Ruby như resquedelayed_job thường được sử dụng để quản lý hàng đợi công nhân.

Mặt khác, nếu chúng ta đang nói về các máy chủ web, từ "công nhân" đôi khi được sử dụng thay thế lẫn nhau với các chủ đề hoặc quy trình (ví dụ: nginx hoặc apache "công nhân").

+0

trong các máy chủ web, là các luồng hoặc quy trình riêng biệt của 'công nhân' không? – Kamilski81

+0

@ Kamilski81 trong các máy chủ web và sử dụng các giải pháp được nêu ở đây, đây sẽ là các quy trình riêng biệt. Với ví dụ delay_job, bạn có thể chạy nhiều quy trình công nhân khác nhau mà tất cả có thể bật ra nhiệm vụ ưu tiên cao nhất tiếp theo từ cơ sở dữ liệu. Do kiến ​​trúc này nhiều người chạy một quá trình giám sát bổ sung bằng cách sử dụng một cái gì đó như Thiên Chúa, hoặc BluePill. Xem tại đây để biết thêm: https://www.ruby-toolbox.com/categories/server_monitoring – salernost

3

Máy chủ chạy ứng dụng đường ray của bạn sử dụng công nhân để thực hiện tất cả những thứ mà ứng dụng cần. Nó gửi email, chạy các yêu cầu, thực hiện các phép tính vv Số lượng công nhân bạn cần phụ thuộc vào lưu lượng truy cập và tính toán mà ứng dụng web của bạn cần làm.

7

Thường trong 'thế giới Rails', một nhân viên đang đề cập đến một hệ thống loại hàng đợi ưu tiên có các quy trình riêng biệt bật ra các nhiệm vụ để thực thi bên ngoài chu kỳ ứng dụng. Một trong những hệ thống phổ biến nhất trong số này là DelayedJobs. Điều này sử dụng di chuyển cơ sở dữ liệu để thêm một bảng để giữ các tác vụ sẽ được thực hiện bởi một quy trình công nhân. Sau đó bạn có thể cấu hình bất kỳ số lượng các quy trình công nhân nào sẽ kiểm tra bảng xếp hàng DelayedJobs và thực hiện tác vụ tuần tự hóa. Với DelayedJobs, bạn không chỉ có khả năng thiết lập mức độ ưu tiên của các tác vụ khác nhau, mà còn là một khung thời gian để thực thi tác vụ, ví dụ. gửi một email cụ thể 1 giờ kể từ bây giờ.

Hope this helps, /Salernost