【问题标题】:Understanding each component of a web application architecture了解 Web 应用程序架构的每个组件
【发布时间】:2019-07-01 02:34:23
【问题描述】:

这是我试图了解什么是什么的系统场景:

我是乔,一个新手程序员,我破产了。我有一个 Flask 应用程序和一台物理机。由于我破产了,我无法为我的系统的每一部分买另一台机器,因此网络服务器、应用程序和数据库都在我的一台机器上。

我以前从未部署过应用,但我知道服务器可以指代机器或软件。从这里开始,我们将物理机称为Rack。我已经在我的机器上加载了一个 MongoDB 实例,我知道那是 数据库服务器。为了处理 API 请求,我需要在机架上处理 HTTP/S 请求的东西,所以我在其上安装并运行了一个 NGINX 实例,我知道这是 Web 服务器。但是,我的 Web 服务器不知道如何运行该应用程序,所以我做了一些研究并了解了 WSGI,然后发现我需要另一个组件。所以我安装并运行了一个 Gunicorn 实例,我知道这是 WSGI 服务器

此时我有一个机架,它是 Web 服务器的所在地,用于处理 API 调用(实际上只是充当反向代理并将请求推送到 WSGI 服务器),一个从我的应用程序提供动态内容的 WSGI 服务器和存储应用使用的客户端信息的数据库服务器。

我想我的思路是正确的,然后我的朋友问“你的应用程序服务器在哪里?”

有没有应用服务器是这样配置的?我需要一个吗?

【问题讨论】:

  • 您是否了解过应用服务器是什么/做什么?您是否似乎需要其他东西来做您想做的事情?您当前的配置是否足以满足您的使用需求?
  • @wwii 我有,但这似乎是一个非常模棱两可的术语。我显然不能在 Web 服务器上托管应用程序,因为它的工作是处理入站/出站请求。因此,我认为应用程序的公开方式是应用程序服务器。正如 Suraj 所提到的,在这种情况下,Gunicorn + Flask 构成了应用程序服务器。
  • @wwii 因此,简而言之,一个更精致的问题是:每个 Web 应用程序都需要应用程序服务器吗?

标签: python web-applications webserver terminology application-server


【解决方案1】:

任何基本的服务器架构都有三层。一端是网络服务器,它满足来自客户端的请求。另一端是数据所在的数据库服务器

在这两者之间是应用服务器。它由与 Web 服务器交互以接收请求,然后与数据库服务器执行操作所需的业务逻辑组成。

在您的配置中,WSGI serve/Flask 应用是应用服务器

大多数应用程序服务器都可以兼作 Web 服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2010-12-23
    • 1970-01-01
    • 2011-09-27
    • 2018-08-27
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多