【问题标题】:Communication between PHP web app server layers on Amazon Web ServicesAmazon Web Services 上 PHP Web 应用服务器层之间的通信
【发布时间】:2011-08-02 11:21:03
【问题描述】:

我正在研究开发托管在 Amazon Web Services 上的 Web 应用程序,但我对它的架构有疑问。

从亚马逊看下图,他们有 3 层;一个通过 HTTP 为用户服务的 Web 服务器、一个处理业务逻辑的应用程序服务器和一个数据库服务器。这非常适合我们的使用,Web 和应用程序逻辑的分离很好,但是我对层之间的通信有疑问。

应用程序的代码将用 PHP 编写。应用服务器和数据库服务器之间的通信可以通过 PHP 的 mysqli 扩展来完成(默认通过端口 3306 与主机 db 服务器通信)。这很好,但是我不确定在用户的 HTTP 请求期间如何在 Web 服务器和应用程序服务器之间进行通信,以及最好的方式是什么。

我已经阅读了有关 XML/RPC 或 JSON/RPC 的信息,但这是我正在寻找的正确的东西吗?还是不同 PHP 服务器层之间的通信通常以另一种方式进行?

任何建议将不胜感激。

【问题讨论】:

  • 只要确保您意识到该图显示了概念架构 - 没有什么强迫您使用它。 EC2 只是基础架构,原则上您可以将应用程序层和 Web 层结合起来。

标签: php web-applications architecture amazon-ec2


【解决方案1】:

您必须为应用层开发的接口很可能会因多个应用而不同。为此采用通用方法的一种方法是构建更多抽象。

它可以通过多种方式实现,用 PHP 或其他一些技术。您可以阅读有关 Web 服务(WSDL、SOAP、WSO2.org 特定于 PHP)、REST、RPC 样式(您曾提到过)、RMI(Java)、CorbaJAXB,以及来自的几个项目Apache 基金会,谷歌的protocol buffers,或者实现你自己的协议;在某些情况下,暂存数据库也可以提供帮助。

我认为您的问题过于笼统,无法真正“回答”它。在设置这样的架构时,这是您必须首先回答的问题之一。

【讨论】:

    【解决方案2】:

    如果您使用 PHP 作为支持,那么您很可能会将您的网络服务器和“应用程序”服务器放在同一台机器上(Apache + php),因此亚马逊的图表在这种情况下并不真正适用。您可能想要研究的一件事是将一台机器放在您的网络服务器(nginx 等)前面,以将请求反向代理回您的网络服务器,或者从亚马逊查看 ELB。

    【讨论】:

      【解决方案3】:

      您还可以考虑使用 http 在 Web 层和应用层之间进行通信的 REST。

      【讨论】:

      • Amazon EC2 是否支持 REST?
      • ec2 上的应用毕竟是 Web 服务器可以支持 REST
      • 一个体面的 REST 服务器会接受、理解和评估所有 HTTP 方法,包括 PUT、DELETE、TRACE 等。并非所有网络服务器都这样做。亚马逊的实力。我不会感到惊讶。
      • EC2 本身只是一台 linux/window 机器。用户必须为他的应用程序安装和配置任何必要的东西,包括网络服务器/应用服务器、库等。
      • 您可以自己设置服务器吗?不知道EC2。也许与 SE3 或 FE4 或其他东西混在一起。 (他们这样命名所有服务。)我的错。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 2012-05-10
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      相关资源
      最近更新 更多