我对我的网络应用程序的实现有点困惑,并希望得到一些澄清。我已阅读并了解N层架构的基本概念。但是我还没有遇到一个提到应用程序的哪个部分在哪里。
我的应用程序结构如下。
前端< - 包含视图和控制器。该控制器执行次要功能,例如处理表单和从后端检索数据。
Backend< - 包含Controller和Model。该Controller接收来自前端和模型的数据并从中发送数据。 Controller在这里也做了一些数据处理。模型与数据库通信并从Controller接收输入。
前端通过REST与我的后端通信。这是指在Web服务器,应用程序服务器,数据库服务器设置中,我的前端应用程序是否位于Web服务器上,我的后端将位于应用程序服务器上,而我的数据库服务器是通过ip从我的后端连接的?
这是对的吗?如果是这样,那些没有像我一样被拆分的应用程序如何适应这种架构?
此外,我见过一种架构,其中有一台Application Server为两台具有相同前端的Web服务器提供服务。这是负载均衡器的用武之地吗?
感谢您阅读本文。
答案 0 :(得分:1)
我认为你问的是两个相关但独立的事情:N层架构和每层的水平扩展。
N层架构:这基本上将整个应用程序拆分为不同的层,并让每个层单独执行专用操作。这些不同的层将通过网络调用或RPC相互通信。例如,像亚马逊这样的移动应用程序可能具有数据库层,缓存层,后端层(与数据库和缓存层通信),消息传递层(可以解除层),前端层。
层级可以通过不同的方式相互通信。你所描述的只是其中一种方式。其他方式可能是前端层将消息推送到消息队列,后端层通过从队列中提取消息并进行处理而异步工作。它取决于应用程序以及应用程序的端到端延迟和实时需求。
层级的扩展:每个层都可以通过添加多台计算机进行扩展,并由负载均衡器进行扩展,该负载均衡器将流量拆分为层中的计算机。因此,现在在您的示例中,前端层顶部将有一个负载均衡器,来自客户端的所有流量将通过负载均衡器并最终进入2个节点之一。