Các quy trình công nhân của các ứng dụng web nên được đặt trong các thùng chứa riêng biệt?


8

Thiết lập của tôi dựa trên ứng dụng Flask có cơ sở dữ liệu PostgreSQL và Redis. Ngoài ra, một quy trình worker được bắt đầu để xử lý các tác vụ không đồng bộ như gửi email. Tôi sử dụng Gunicorn để tạo nhiều quy trình ứng dụng. Việc chuyển các công việc từ các quy trình ứng dụng sang quy trình công nhân được thực hiện thông qua Redis.

Câu hỏi là, liệu quy trình worker có nên được bắt đầu trong một container riêng mặc dù dựa trên cùng một mã không? Hiện tại tôi sử dụng tập lệnh bắt đầu với bit có liên quan:

gunicorn --bind=0.0.0.0:8000 --workers=3 manage:app &
python -u manage.py run_worker

Ngoài ra nếu chúng được tách ra, làm thế nào tôi có thể đảm bảo rằng chúng sử dụng lại bộ chứa hệ thống tệp chung? Ngoài ra, khi nhân rộng Gunicorn với ứng dụng chính hoặc các quy trình worker, nên tạo các phiên bản bổ sung của container hoặc số lượng quy trình trong một container được tăng lên?

Liên quan: Những lợi thế của dockerizing nginx và php trong các container khác nhau là gì?

Câu trả lời:


6

Tôi chỉ có thể nghĩ về một trường hợp mà các công nhân đang chạy trong các container riêng biệt là hợp lý: nếu thiết lập của bạn sử dụng docker swarm để triển khai theo cụm. Bằng cách này bạn sẽ nhận được tất cả các lợi ích HA.

Mặt khác, tôi không thấy một lý do nào làm phức tạp các nhiệm vụ đó, đặc biệt là nếu chúng phải sử dụng hoàn toàn cùng một cơ sở mã (điều này khiến tôi tin rằng chúng có chung một miền quan tâm, có thể nói như vậy). Nó có vẻ thanh lịch, nhưng tôi không thấy đủ lợi ích

bất kỳ sự phân chia nào như vậy sẽ buộc bạn phải quản lý kết nối và thiết lập phức tạp để phát triển cục bộ


Tôi đoán sự phức tạp có thể được xử lý tốt trong trường hợp của tôi vì tôi đã sử dụng docker-compose. Tuy nhiên, quan điểm của bạn là hợp lệ vì hiện tại tải có thể được xử lý với một trường hợp duy nhất và không cần phải làm mọi thứ phức tạp hơn mức phải có
Moritz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.