在传统意义上,N层意味着将应用程序分成“层”,并将每个“层”放置在不同的服务器上。这样做至少有以下三个原因:


保养:

a)代码维护:更容易进行错误修复和功能添加。

b)硬件维护:关闭一台服务器不会中断来自另一层的服务。
性能:一台服务器通常不够快,无法同时处理Web请求,业务逻辑计算和数据库/文件访问。
可扩展性:特别是水平可扩展性

a)容错能力:每层可以拥有多于1台物理服务器的能力意味着当1台服务器停机时,应用程序仍可以整体运行。

b)负载平衡:拥有一个层的多个实例有助于服务大量请求。


如今,硬件和网络已经足够快,可以在一台服务器上每秒处理数千个请求。另外,IT的流行词是“整合”。因此,即使将应用程序划分为多个层,它们也可能最终将托管在单个服务器上的虚拟机上。

我认为,如今当人们谈论N层体系结构时,他们正在谈论应用程序内关注点的分离。它更多的是逻辑上的分离,而不是物理上的分离。我认为,只要我们能够很好地实现关注点分离和松散耦合,应用程序就不必是N层的。似乎许多程序员认为N层体系结构是每个Web应用程序都必须遵守的黄金标准。

那么,如今的N层架构是什么?

最佳答案

从维基百科的文章中,我读到:


通常,术语“层”用于描述产品的物理分布。
单独的服务器,计算机或网络上的系统组件
(处理节点)。那么三层架构将具有三个
处理节点。层是指组件的逻辑分组
它可能或可能不在物理上位于一个处理节点上。


我确实认为“层”和“层”的概念随着时间的流逝而混杂在一起。
我个人只喜欢谈论层而不是层,因为我更喜欢PAAS解决方案,因为我的关注点仅在软件上,并且行业正在朝这个方向缓慢发展。

同样,当您计划一个可能会大大扩展的应用程序时,我仍然不认为您应该考虑使用n层来实现可伸缩性。
实际上,非常流行的网站拥有大量的流量,只能将自己分为三个部分:
数据库服务器,Web服务器(包括缓存服务器)和一些CDN(内容交付网络)。
这种分离可以在任何应用中实现。

但总而言之,我认为程序员应该只考虑在应用程序内部进行分层和关注点分离,以实现最重要(也是最困难)的任务:长期的可维护性。

07-24 09:36