【问题标题】:Multi-tier vs Distibuted?多层与分布式?
【发布时间】:2010-08-22 16:07:38
【问题描述】:

多层和/或分布式应用程序,它们具有相同的含义吗?

当我们谈论这些应用程序中的层时,是物理层(数据库、浏览器、Web 服务器……)还是逻辑层(数据访问层、业务层……)?

【问题讨论】:

  • 是的,这真的取决于您如何构建应用程序。

标签: distributed layer multi-tier


【解决方案1】:

也许这两句话确实直观地传达了分布式多层之间的区别:

  • 分布式:您在节点之间复制处理
  • 多层:您在层之间拆分处理

在一种情况下,相同的处理会在多个节点上进行复制。在另一种情况下,每一层都有不同的职责,并且在每一层上运行的处理不同。

这两个概念都不是排他性的:您可以拥有非分布式的多层应用程序(如果没有冗余/复制形式),不是多层的分布式应用程序,也可以是分布式的多层应用程序(如果他们有某种形式的冗余)。

关于区别还有很多话要说,但区别(对我来说)本质上是存在的。

【讨论】:

  • 如此分布式就像负载均衡?
  • 不像 Eugene Mayevski 'Eldos 所说的和 wiki 中所说的“一个程序分为多个任务,每个任务都在不同的机器上运行?
  • @mohamida 我不确定我是否收到您的评论。什么不清楚?此外,这两个概念之间不会有硬性界限。但是层更常用于谈论企业应用程序,而分布式系统与搜索引擎、分布式数据库、容错等更相关。
  • 我认为您对分布式的定义听起来像是负载平衡的定义?不是吗?因为wiki中给出的定义说“分布式应用程序分为多个任务,每个任务在不同的机器上运行”,但您说“分布式应用程序在不同的机器上复制”
  • @mohamida 好的,所以我想说具有复制和负载平衡的水平可扩展性(通常在无状态架构中)是一种分布式系统。但分布式系统一词比这更笼统。清楚一点?
【解决方案2】:

ewernli 在这里有最正确的答案。原始问题中唯一缺少的部分涉及物理层和逻辑层。

从分布式和/或多层的角度来看,这些层是物理上独立的还是逻辑上独立的并不重要。意思是,没关系。您可以创建完全驻留在同一机器实例上的多层甚至分布式应用程序。

也就是说,更常见的做法是将各层分成专门为该类型负载构建的不同机器。例如,Web 服务器和数据库服务器。甚至是一个 Web 服务器、几台 Web 服务机器以及一个或多个数据库服务器。

所有这些功能,分布式、多层和/或通过逻辑和/或物理层进行负载平衡只是应用程序设计的功能。

此外,在当今的虚拟机世界中,完全有可能(甚至可能)在单个真实机器的范围内设置多层、分布式和负载平衡的应用程序。不过,我绝不会推荐这种做法,因为负载平衡和分布式服务的目的通常是提高可用性或吞吐量。

【讨论】:

  • 如果许多任务由同一台机器上的不同处理器运行,我们这里要谈分布式应用吗?
  • @mohamida:仅当它实际上是单独运行的相同进程时。如果单个进程使用多个线程来处理数据,那么它只是一个多线程应用程序。
【解决方案3】:

多层意味着您的应用程序将基于具有不同任务(数据库、Web 应用程序...)的多台机器。分布式意味着您的应用程序将同时在多台机器上运行,例如您的网站可以托管在 3 个不同的服务器上。

对于多层应用程序,我们通常谈论物理层。但在每个应用程序中,您可以/应该有不同的逻辑层。

【讨论】:

  • 但是您可以将所有应用程序放在同一台机器上,那么这里我们讨论的是逻辑层而不是物理层。而且您对分布式应用程序的定义与“重复”不同,因为您说同一个应用程序在不同的机器上运行?
  • 更准确地说,分布式应用程序将只是在多台机器上启动的一个应用程序。每台机器都将相互协作以实现平衡的应用程序。每当一台机器停机时,其他接力。或者以一个网站为例,如果有一百万个请求来了,每个服务器都会处理这些请求的一部分,以避免只有一台机器过载。
  • 我认为您在这里谈论的是“负载平衡”,而不是分布式应用程序。我认为分布式就是把一个应用分成很多小应用,这些应用分散在不同的机器上,每个小应用都在做一些特定的工作。
  • 我认为负载平衡是分布式应用程序的优势之一,但还有更多、更好的性能、共享内存……
  • @Colin:更好的性能不是分布式应用程序的特性。分布式应用程序可能会处理大量流量,但在每个事务上的性能仍然比非分布式应用程序差。
猜你喜欢
  • 2012-08-23
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2011-11-28
  • 1970-01-01
相关资源
最近更新 更多