2016-01-10 24 views
5


Gần đây tôi đã bắt đầu làm việc trên máy tính phân tán để tăng tốc độ tính toán. Sau khi tìm kiếm google nghiêm ngặt và nhiều diễn đàn SO, tôi đã chọn cần tây cho mục đích của mình, nhưng tôi đang đối mặt với một số vấn đề trong việc hiểu các khái niệm và thuật ngữ.
công nhân vs quá trình so sánh khách hàng và công việc vs nhiệm vụ trong mô-đun Celery Python

sự khác biệt chính giữa công nhân và quy trình .. là gì ?? chúng giống nhau hay được gọi khác nhau trong ngữ cảnh khác nhau .. ?? xin giải thích

từ các tài liệu cần tây nó nói:

Cần tây liên lạc qua tin nhắn, thường sử dụng một nhà môi giới làm trung gian giữa khách hàng và người lao động. Để bắt đầu một tác vụ, khách hàng thêm thông báo vào hàng đợi, mà nhà môi giới sau đó gửi cho một nhân viên.

nếu có, khách hàng ở đây là gì .. ?? (hiện tại tôi chỉ đang sử dụng một máy octacore đơn)

nếu thư được chuyển đến thông qua người môi giới .. ?? tại sao sử dụng hàng phụ trợ và hàng đợi thông báo cho liên lạc giữa các tiến trình ... ?? vui lòng giải thích

Ở đây tôi có một câu hỏi lớn (đối với tôi) mà tôi không thể làm cho nó ra .. !!! khi tôi thực hiện Cần tây console bởi:

nhiệm vụ cần tây nhân -A --loglevel = info --concurrency 5

này có nghĩa là, cần tây Các giao diện điều khiển là một quá trình lao động mà là phụ trách của 5 quy trình khác nhau và theo dõi hàng đợi công việc. Khi một nhiệm vụ mới được đẩy vào hàng đợi nhiệm vụ, nhân viên này gán nhiệm vụ/công việc cho bất kỳ của 5 quy trình .. ???

Câu hỏi này có thể rất cơ bản, nhưng vui lòng cung cấp một số liên kết hoặc tuts để hiểu rõ hơn. Cảm ơn trước

Tôi là một người mới bắt đầu để SO, Xin vui lòng cảm thấy tự do để chỉnh sửa câu hỏi của tôi cho sự hiểu biết tốt hơn cho những người khác (nó có thể giúp tôi nhiều hơn)

Trả lời

1

câu hỏi cuối đầu tiên:

celery worker -A tasks --loglevel=info --concurrency 5 

Bạn đang đúng - công nhân kiểm soát 5 quy trình. Công nhân phân phối nhiệm vụ trong số 5 quy trình.

Một "khách hàng" là bất kỳ mã nào chạy các tác vụ cần tây không đồng bộ.

Có 2 loại giao tiếp khác nhau - khi bạn chạy apply_async bạn gửi yêu cầu tác vụ tới người môi giới (thỏ thường) - đây là cơ bản là một bộ hàng đợi thư.

Khi công nhân kết thúc, họ đưa kết quả của họ vào phần phụ trợ kết quả.

Phần mở rộng của nhà môi giới và kết quả khá riêng biệt và yêu cầu các loại phần mềm khác nhau hoạt động tối ưu.

Bạn có thể sử dụng RabbitMQ cho cả hai, nhưng khi bạn đạt đến một tốc độ nhất định của tin nhắn, nó sẽ không hoạt động đúng. Sự kết hợp phổ biến nhất là RabbitMQ cho môi giới và Redis cho kết quả.

+0

cảm ơn thông tin ngắn gọn. bạn đang nói rằng RabbitMQ là nhà môi giới và Redis là quyền phụ trợ. 1.) nơi memcached này đi vào chơi. Tôi đã thấy nhiều diễn đàn bằng cách sử dụng này như hàng đợi tin nhắn. 2.) nếu tôi đã thực thi lệnh công nhân cần tây ở trên hai bảng điều khiển khác nhau và gửi một nhiệm vụ từ một python tương tác .. ?? Tôi có nghĩa là, làm thế nào để tôi chỉ định sử dụng giao diện điều khiển công nhân cụ thể này ... ?? – jeldikk

+0

memcached có thể được sử dụng thay cho Redis. Redis có lẽ là lựa chọn tốt hơn. câu hỏi thứ hai của bạn không có ý nghĩa gì cả. vui lòng đọc lại tài liệu về cần tây và sau đó hỏi một câu hỏi mới trong SO – scytale

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