IT TIP

왜 Mongrel2를 사용합니까?

itqueen 2020. 10. 16. 19:19
반응형

왜 Mongrel2를 사용합니까?


나는 Mongrel2nginx 가 아직 수행하지 않는 역할을 제공 / 제공하는 목적이 무엇인지 혼란 스럽습니다 .

(예, 설명서를 읽었 지만 nginx와 근본적으로 다른 점을 이해하기에는 너무 멍청해야합니다)

내 현재 웹 애플리케이션 스택은 다음과 같습니다
- 의 nginx : 웹 서버
- 루아 : 프로그래밍 언어
- FastCGI를 + LuaJIT : 루아에 nginx를 연결하는
- 포스트 그레스 : 데이터베이스


한 가지만 말할 수 있다면 Mongrel2는 ZeroMQ중심으로 구축되어 웹 서버를 확장하는 것이 결코 쉬운 일이 아닙니다.

요청이 들어 오면 Mongrel2는이를 수신합니다 (여기서는 NginX 및 다른 httpd와 동일 함). 다음으로 발생하는 일은 Mongrel2 가 응답을 컴파일 하는 작업 을 n (ZeroMQ 사용 가능) 백엔드에 배포하고, 작업 을 수행 할 때까지 기다린 후 결과를 수신하고, 응답을 컴파일하여 클라이언트로 보냅니다.

이제 마법은 n이 임의의 숫자가 될 수 있고, 각각의 n이 ZeroMQ (20 정도)에서 지원하는 모든 언어로 작성 될 수 있다는 사실과 함께 모두 네트워크를 통해 이동하여 각 n이 전용 상자가 될 수 있다는 것입니다. , 다른 데이터 센터에있을 수 있습니다.

즉, NginX 및 나머지 로직 계층에서 확장 성을 수행해야하는 모든 기능을 사용하면 Mongrel2를 사용하면 요청이 인프라에 도달하는 지점에서 시작 (요청 / 응답주기 관점에서) 할 수 있습니다. 복잡성이 로직 계층에 침투하여 복잡성이 최소 1 배 이상 증가합니다.


각각의 장점을 살펴보고 사용 사례에 따라 둘 중 하나 또는 둘 다를 사용하기로 결정해야합니다.

nginx는 mongrel2가 표면에서 제공하는 모든 것을 수행하는 것처럼 보이지만 둘 사이에 초점에 큰 차이가 있음을 알 수 있습니다.

Nginx는 백엔드 웹 서버 / 앱 서버에 대한 요청을 프록시하고 정적 콘텐츠를 제공 할 수있는 프런트 엔드 웹 서버로 빛을 발합니다.

Mongrel2는 스택의 약간의 변경입니다. 앞서 언급했듯이, 백엔드 애플리케이션 서버 사이의 전송 계층으로 zeromq를 사용하면 그 힘이 나옵니다. 동적 요청 URL (앱 요청)을 제공하고 zeromq를 사용하여 작업의 컴퓨팅 부분을 다른 백엔드로 보낼 수 있습니다. mongrel2를 사용하면 http, 웹 소켓 등뿐만 아니라 다른 프로토콜을 제공 할 수 있습니다. ) 모두 동일한 서버에서. 사용자는 앱의 일부가 다른 백엔드에서 제공되고 있다는 사실을 결코 알 수 없습니다.

웹 앱 기능에 대한 요구 사항이 계속 변경되거나 스트리밍, 백엔드에서 다른 언어로 코딩하는 기능 등을 추가하려는 경우 mongrel2를 확실히 살펴볼 것입니다. 또는 정적 파일 및 캐싱에 nginx / haproxy / varnish를 사용하고 다른 모든 것이 mongrel2로 전달되는 하이브리드를 보유하고 있습니다.

참고 URL : https://stackoverflow.com/questions/6089091/why-use-mongrel2

반응형