它是N-Tier Architecture的一种形式。最初,大多数站点将作为 2 层架构开始,具有 Web 服务器和数据库。网络服务器将提供用户看到的页面,而数据库由这些动态页面访问。
当一个架构被分成多层时,通常,你会在前面有一个 Web 应用程序,以及 Web 应用程序将调用的某种应用程序服务器。此应用程序服务器包含业务逻辑并使应用程序正常运行。应用程序的“面孔”只是让事物看起来很漂亮,并对其进行格式化以显示给用户。
应用程序服务器或“中间件”只是 Web 服务器可以调用的函数的集合。对于像 twitter 这样的网站来说,中间件必须是强大的,其中大部分活动都在发送消息,访问该网站的人没有那么多活动。
层之间的互连可能是一种标准的 Web 服务技术,但它可能是一种自定义的东西,可能是 REST 或其他类型的 Web 服务,Web 应用程序(Ruby on Rails)可以在其中访问应用程序数据。
在这种类型的架构中,Rails 无疑将所有 ORM 和数据管理都交给了中间件。
中间件也是一个模糊的术语,可以由许多层组成,因此他们称之为 N 层。我敢打赌,Twitter 的中间件有一个不同的部分专门用于消息传递,而另一部分则用于管理帐户、获取消息等。
这个想法是能够通过添加硬件来向上扩展,你可以让一个服务器集群提供网页服务,另一个集群处理消息传递,然后是一个支持所有这些的数据库服务器集群。这不是一门精确的科学,每种架构都是不同的,但总的来说,这是可以想到的。