多层和/或分布式应用程序,它们是否具有相同的含义?
当我们谈论这些应用程序中的层时,是物理层(数据库、浏览器、Web 服务器……)还是逻辑层(数据访问层、业务层……)?
多层和/或分布式应用程序,它们是否具有相同的含义?
当我们谈论这些应用程序中的层时,是物理层(数据库、浏览器、Web 服务器……)还是逻辑层(数据访问层、业务层……)?
也许这两句话确实直观地传达了分布式和多层之间的区别:
在一种情况下,在多个节点上复制相同的处理。在另一种情况下,每一层都有不同的职责,并且在每一层上运行的处理不同。
这两个概念都不是排他性的:您可以拥有非分布式的多层应用程序(如果没有冗余/复制形式),不是多层的分布式应用程序,也可以是分布式的多层应用程序(如果它们有某种形式的冗余)。
关于区别还有很多话要说,但是(对我而言)区别本质上就在那里。
ewernli在这里有最正确的答案。原始问题中唯一缺少的部分涉及物理层和逻辑层。
从分布式和/或多层的角度来看,这些层是物理上独立的还是逻辑上独立的并不重要。意思是,没关系。您可以创建完全驻留在同一机器实例上的多层甚至分布式应用程序。
也就是说,更常见的做法是将这些层分成专门为该类型负载构建的不同机器。例如,Web 服务器和数据库服务器。甚至是一个 Web 服务器、几台 Web 服务机器以及一个或多个数据库服务器。
所有这些特性,分布式的、多层的和/或与逻辑和/或物理层进行负载平衡的只是应用程序设计的特性。
此外,在当今的虚拟机世界中,完全有可能(甚至可能)在单个真实机器的范围内设置多层、分布式和负载平衡的应用程序。虽然,我从不推荐这种做法,因为负载平衡和分布式服务的目的通常是提高可用性或吞吐量。
多层意味着您的应用程序将基于具有不同任务(数据库、Web 应用程序...)的多台机器。分布式意味着您的应用程序将同时在多台机器上运行,例如您的网站可以托管在 3 个不同的服务器上。
对于多层应用程序,我们通常谈论物理层。但是在每个应用程序中,您可以/应该有不同的逻辑层。