从传统意义上讲,N 层意味着将应用程序分成“层”,并将每个“层”放在不同的服务器上。这样做至少有 3 个原因:
-
维护:
a) 代码维护:更容易进行错误修复和功能添加。
b) 硬件维护:关闭一台服务器不会中断其他层的服务。
性能:一台服务器的速度通常不够快,无法同时处理 Web 请求、业务逻辑计算和数据库/文件访问。
-
可扩展性:特别是水平可扩展性
a) 容错能力:每层能够拥有超过 1 台物理服务器,这意味着当 1 台服务器出现故障时,应用程序仍然可以作为一个整体运行。
b) 负载平衡:拥有层的多个实例有助于服务大量请求。
如今,硬件和网络的速度足以在单个服务器上每秒处理数千个请求。此外,现在 IT 的流行词是“整合”。因此,即使应用程序被分成几层,它们最终也可能会托管在单个服务器上的虚拟机上。
我认为现在当人们谈论 N 层架构时,他们谈论的是应用程序内的关注点分离。它更多的是一种逻辑分离,而不是物理分离。我认为只要我们实现良好的关注点分离和松散耦合,应用程序就不必是N层的。只是似乎许多程序员认为 N 层架构是每个 Web 应用程序都必须遵守的黄金标准。
那么,现在的 N 层架构对您来说是什么?
从维基百科文章我读到:
通常,术语层用于描述物理分布
独立服务器、计算机或网络上的系统组件
(处理节点)。三层架构将具有三个
处理节点。层是指组件的逻辑分组
它可能物理上位于也可能不位于一个处理节点上。
我确实认为“层”的概念和“层”的概念随着时间的推移而混淆了。
我个人喜欢只谈论层而不是层,因为我更喜欢 PAAS 解决方案,我只关心软件,而且行业正在慢慢朝这个方向发展。
另外,当您计划一个可以极大扩展的应用程序时,我仍然认为您不应该考虑 n 层的可扩展性。
事实上,非常受欢迎、流量很大的网站只将自己分为三个部分:
数据库服务器、Web 服务器(包括缓存服务器)和一些 CDN(内容分发网络)。
这种分离可以在任何应用中实现。
但总而言之,我认为程序员应该只考虑应用程序中的层和关注点分离,以实现最重要(也是最困难)的任务:从长远来看可维护性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)