2012-01-06 6 views
15

Tôi thấy dự án mới NGINX+ZeroMQ này trên github và giờ đây đã bị nhầm lẫn.Mongrel2 so với NGINX + ZeroMQ?

Sự khác biệt về tính năng và khả năng mở rộng giữa Mongrel2 và NGINX + ZeroMQ là gì.

(Lý do tại sao tôi hỏi là vì tôi có ấn tượng Mongrel2 được chỉ tạo ra kể từ Nginx không hỗ trợ ZeroMQ)

Trả lời

32

Tôi cũng đọc về nginx + zeromq mô-đun và tôi ngay lập tức phát hiện một sự khác biệt đáng kể.

Mô-đun nginx ZeroMQ sử dụng các ổ cắm REQ/REP để giao tiếp với các quy trình phụ trợ. Mặt khác, mongrel2 sử dụng hai ổ cắm. Một PUSH/PULL để gửi tin nhắn hạ lưu (đến các trình xử lý) và một PUB/SUB (để nhận các phản hồi từ các trình xử lý). Điều này làm cho nó hoàn toàn không đồng bộ. Khi mongrel2 gửi yêu cầu đến các trình xử lý phụ trợ, nó sẽ trả về ngay lập tức từ cuộc gọi zmq_send() và phản hồi sẽ được nhận trong một socket khác, bất cứ lúc nào sau đó.

Một điểm khác biệt là mongrel2 có khả năng gửi cùng một phản hồi cho nhiều hơn một máy khách. Trình xử lý của bạn có thể nói với mongrel2 một cái gì đó như thế này: "Cung cấp phản ứng này cho các kết nối 4, 5, 6 và 10, xin vui lòng". Mongrel2 gửi ID kết nối trong tin nhắn đến các trình xử lý.

Hy vọng điều này sẽ hữu ích! =)

1

NGINX + ZeroMQ có lỗi. 1. Nó không hoạt động với NGINX 1.5 lý do NGINX trước khi gửi đến máy chủ ZMQ (cho rằng nó gọi chuỗi gửi) móc ngược dòng, kiểm tra xem kết nối có hợp lệ hay không. Và nó sẽ thất bại bởi vì nó có ổ cắm ZMQ và không phải là TCP socket vì giao thức là khác nhau nên nó sẽ là kết nối không hợp lệ của nó.

  1. Có rất nhiều điều tương tự.

  2. Mô-đun này không hỗ trợ keepalive. Không chỉ thượng lưu mà thậm chí hạ lưu cũng không hoạt động. Tôi đang vật lộn với việc làm công việc trì trệ ở hạ lưu.

Đề xuất của tôi: Sẽ mất hai tháng để thực hiện ZMQ NGINX với sự giữ gìn.