【问题标题】:What does N-tier Architecture mean nowadays?如今,N 层架构意味着什么?
【发布时间】:2011-11-08 10:15:49
【问题描述】:

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

  1. 维护:

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

    b) 硬件维护:关闭一台服务器不会中断其他层的服务。

  2. 性能:一台服务器通常不够快,无法同时处理 Web 请求、业务逻辑计算和数据库/文件访问。

  3. 可扩展性:特别是水平可扩展性

    a) 容错:每层能够拥有超过 1 台物理服务器意味着当 1 台服务器停机时,应用程序仍然可以作为一个整体运行。

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

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

我认为现在人们谈论 N 层架构时,他们谈论的是应用程序内的关注点分离。它更像是一种逻辑分离而不是物理分离。我认为只要我们实现了良好的关注点分离和松耦合,应用程序就不必是 N 层的。似乎许多程序员认为 N 层架构是每个 Web 应用程序都必须遵守的黄金标准。

那么,现在对您而言,N 层架构是什么?

【问题讨论】:

    标签: web-applications architecture n-tier-architecture separation-of-concerns


    【解决方案1】:

    一个人的安全?我宁愿你访问我的网络服务器而不是我的应用服务器!

    【讨论】:

      【解决方案2】:

      我认为这是并且一直是人为的区别。我同意您的前提,即如今它主要指的是组件的逻辑分离。但是,仍然有很多应用程序太大(使用明智或数据方面)无法在单台机器上安装,因此出于可扩展性原因将应用程序分成离散组件的想法绝对不会死。

      【讨论】:

      • 同意。出于可扩展性的原因分离成独立的组件还没有结束,但更快的硬件、网络和服务器整合肯定会减少需要这样做的应用程序的数量。
      • 它可能还没有死,但例如在网站的情况下,有更有效的方法来处理更多的页面浏览量。
      【解决方案3】:

      来自我阅读的维基百科文章:

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

      我确实认为“层”的概念和“层”的概念与时间混淆了。 我个人更喜欢只讨论层而不是层,因为我更喜欢 PAAS 解决方案,我只关心软件,并且行业正在朝着这个方向缓慢发展。

      此外,当您计划一个可以大大扩展的应用程序时,我仍然认为您不应该考虑 n 层的可扩展性。 事实上,非常受欢迎且流量很大的网站仅将自身分为 3 个组件: 数据库服务器、Web 服务器(包括缓存服务器)和一些 CDN(内容交付网络)。 这种分离可以在任何应用中实现。

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

      【讨论】:

      • 同意。我猜经理/高层管理人员/面试官喜欢使用“N-tier”这个词,因为事实证明,如果操作正确,N-tier 可以提供可维护性、性能和可扩展性。但应该反过来看。另外,每次谈到可扩展性时,我都会想到this article
      • +1 - 层是逻辑层,层是物理层。这两个概念仍然非常相关,不应混淆。
      猜你喜欢
      • 2010-10-02
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2012-12-11
      • 2010-09-23
      • 1970-01-01
      相关资源
      最近更新 更多