Tại sao sử dụng Mongrel2?


76

Tôi nhầm lẫn mục đích Mongrel2 phục vụ / cung cấp mà nginx chưa làm.

(Có, tôi đã đọc hướng dẫn sử dụng nhưng tôi phải là một người quá quen thuộc để hiểu nó về cơ bản khác với nginx như thế nào)

Ngăn xếp ứng dụng web hiện tại của tôi là:
- nginx : máy chủ web
- Lua : ngôn ngữ lập trình
- FastCGI + LuaJIT : để kết nối nginx với Lua
- Postgres : cơ sở dữ liệu


1
giống nhau, chỉ khác. chọn một trong những bạn thích
Javier

Câu trả lời:


116

Nếu bạn chỉ có thể đặt tên cho một điều thì đó là Mongrel2 được xây dựng xung quanh ZeroMQ , có nghĩa là việc mở rộng máy chủ web của bạn chưa bao giờ dễ dàng hơn thế.

Nếu một yêu cầu đến, Mongrel2 sẽ nhận được nó (không có gì bất thường ở đây, giống như đối với NginX và bất kỳ httpd nào khác). Điều tiếp theo xảy ra là Mongrel2 phân phối nhiệm vụ biên dịch phản hồi cho n (được kích hoạt ZeroMQ), đợi chúng thực hiện công việc, nhận kết quả, biên dịch phản hồi và gửi nó đến máy khách.

Bây giờ, điều kỳ diệu là với thực tế rằng n có thể là bất kỳ số nào và mỗi n có thể được viết bằng bất kỳ ngôn ngữ nào được hỗ trợ bởi ZeroMQ (20 hoặc hơn), tất cả đều đi qua mạng để mỗi n có thể là một hộp riêng , có thể trong một trung tâm dữ liệu khác.

Nói cách khác: với NginX và tất cả phần còn lại bạn phải thực hiện khả năng mở rộng trong tầng logic của mình, Mongrel2 cho phép bạn bắt đầu (từ quan điểm chu kỳ yêu cầu / phản hồi) ngay tại nơi yêu cầu truy cập vào cơ sở hạ tầng của bạn, tại httpd thay vì để độ phức tạp thâm nhập xuống tầng logic của bạn, điều này sẽ thổi độ phức tạp lên trên ít nhất một bậc imo.


@MarkusGattol Mục đích của fastcgi là gì? Tôi có thể làm điều đó với nó. Bằng bất kỳ ngôn ngữ nào, không?
Abdala Cerqueira

13

Bạn nên xem xét điểm mạnh của từng loại và quyết định sử dụng một trong hai hoặc cả hai tùy thuộc vào trường hợp sử dụng của bạn ..

Trong khi, có vẻ như nginx thực hiện mọi thứ mà mongrel2 cung cấp trên bề mặt, bạn sẽ thấy có sự khác biệt lớn về tiêu điểm giữa hai điều này.

Nginx tỏa sáng như một máy chủ web front-end, có thể ủy quyền các yêu cầu tới máy chủ web / máy chủ ứng dụng phụ trợ của bạn và cũng phục vụ nội dung tĩnh.

Mongrel2 là một thay đổi nhỏ trong ngăn xếp. Như đã đề cập, sức mạnh của nó đến từ việc nó sử dụng zeromq làm lớp truyền tải giữa nó và các máy chủ ứng dụng phụ trợ. Nó có thể cung cấp các url yêu cầu động (yêu cầu ứng dụng) và hướng phần tính toán của nhiệm vụ ra các phần phụ trợ khác nhau bằng cách sử dụng zeromq .. mongrel2 cho phép bạn phân phối không chỉ http, websockets, v.v. ) tất cả từ cùng một máy chủ. người dùng sẽ không bao giờ biết rằng các phần của ứng dụng đang được phân phát từ các phần phụ trợ khác nhau.

Nếu yêu cầu của bạn đối với chức năng của ứng dụng web của bạn liên tục thay đổi hoặc bạn muốn thêm những thứ như phát trực tuyến, khả năng viết mã bằng các ngôn ngữ khác nhau trong back end, v.v., thì tôi chắc chắn sẽ xem xét mongrel2. Hoặc thậm chí có một kết hợp trong đó bạn sử dụng nginx / haproxy / varnish cho các tệp tĩnh và bộ nhớ đệm, và mọi thứ khác đều được chuyển hướng đến mongrel2.

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.