2012-11-08 33 views
5

Trang web của chúng tôi đã phát triển nhu cầu cập nhật theo thời gian thực và chúng tôi đang xem xét các giải pháp sao chổi/dài hạn khác nhau. Sau khi nghiên cứu, chúng tôi đã giải quyết trên nginx như một proxy ngược với 4 trường hợp lốc xoáy (được lưu trữ trên Amazon EC2). Chúng tôi hiện đang sử dụng ngăn xếp LAMP truyền thống và đã viết một số lượng đáng kể mã trong PHP. Chúng tôi sẵn sàng chuyển đổi mã PHP của chúng tôi sang Python để hỗ trợ tốt hơn cho giải pháp này. Dưới đây là những câu hỏi của tôi:Apache/PHP tới Nginx/Tornado/Python

  1. Giả sử một bộ xử lý quad-core, là nó ok cho nginx để được chạy trên máy chủ giống như 4 trường hợp cơn lốc xoáy, hoặc là nó khuyến khích để chạy hai máy chủ riêng biệt: một cho nginx và một cho 4 quá trình lốc xoáy?

  2. Có lợi ích khi sử dụng HAProxy trước Nginx không? Không Nginx xử lý cân bằng tải rất tốt bởi chính nó?

  3. Từ nghiên cứu của tôi, Nginx dường như không có mô-đun chuyển hướng URL tuyệt vời. Có thích sử dụng Redis cho chuyển hướng không? Nếu vậy, Redis có nên ở trước Nginx hay không?

  4. Một phần lớn mã ứng dụng của chúng tôi sẽ không được tham gia vào các bản cập nhật trong thời gian thực. Mã này chứa một số truy vấn cơ sở dữ liệu và hệ thống tập tin đọc, do đó, nó rõ ràng là không thích hợp cho một máy chủ ứng dụng không chặn. Từ nghiên cứu của tôi, tôi đã đọc rằng vấn đề chặn được giảm thiểu đơn giản bằng cách có nhiều trường hợp Tornado, trong khi những người khác đề nghị sử dụng một máy chủ ứng dụng riêng biệt (ví dụ Gunicorn/Django/Flask) để chặn cuộc gọi. Cách tốt nhất để xử lý các cuộc gọi chặn khi sử dụng máy chủ không chặn là gì?

  5. Chuyển đổi mã của chúng tôi từ PHP sang Python sẽ là một quá trình dài. Có thể chấp nhận đồng thời chạy Apache/PHP và Tornado phía sau Nginx hay chúng ta nên chỉ dựa vào ngôn ngữ (hoặc lốc xoáy với gunicorn/django/flask hoặc lốc xoáy của chính nó)?

Trả lời

6

tôi sẽ đi từng điểm:

  1. Yes. It's ok để chạy lốc xoáy và nginx trên một máy chủ. Bạn có thể dùng nginx làm proxy ngược cho lốc xoáy.

  2. Haproxy sẽ cung cấp cho bạn lợi ích, nếu bạn có nhiều phiên bản máy chủ. Ngoài ra nó sẽ cho phép bạn proxy websockets trực tiếp đến lốc xoáy.

  3. Thực ra, nginx có thể được sử dụng để chuyển hướng, không có vấn đề gì. Tôi đã không nghe nói về việc sử dụng redis cho chuyển hướng - đó là chìa khóa/giá trị lưu trữ ... có thể bạn có nghĩa là cái gì khác?

  4. Một lần nữa, bạn có thể viết phần chặn trong phần django và không chặn trong lốc xoáy. Ngoài ra cơn lốc xoáy có một số lib không chặn cho các truy vấn db. Không chắc chắn rằng bạn cần quyền hạn của django ở đây.

  5. Vâng, bạn có thể chạy apache sau nginx. Rất nhiều dự án sử dụng nginx trước apache để phục vụ các tệp tĩnh.

Câu hỏi thực sự cũng rất cơ bản - cũng trả lời. Tôi có thể chi tiết hơn về bất kỳ điểm nào nếu bạn muốn.

+0

Cảm ơn bạn đã phản hồi nhanh! – xxjbmxx

+1

1.) chúng tôi đang thực sự lên kế hoạch sử dụng nginx như một proxy ngược. Tôi đã chỉ tò mò nếu nó có thể cho quá trình nginx để tiêu thụ đủ nguồn lực để hạn chế một trong những trường hợp tornodo nếu chạy trên cùng một máy chủ. 4.) mà khung python bạn sẽ giới thiệu cho các cuộc gọi chặn (nếu django là không cần thiết)? – xxjbmxx

+1

Đó là hoàn toàn ok - bạn sẽ không nhận được bất kỳ rắc rối với nginx + lốc xoáy trên một máy chủ. Đối với các tác vụ đơn giản với chặn cuộc gọi - hãy xem Flask. Hãy django nếu bạn cần quản trị tốt và các công cụ thao tác giản đồ cơ sở dữ liệu đơn giản. –