首页 > 解决方案 > 水平扩展和分布式系统有什么区别?

问题描述

我现在正在学习系统设计。我试图对此进行研究,但我唯一能找到的是 Quora 上一个解释不清的答案。

1)水平扩展和分布式系统有什么区别?

2) 水平扩展是否意味着分布式系统?为什么?

3)垂直扩展也可以被认为是分布式系统,为什么?

标签: architecturesystemcomputer-sciencedistributed-computingscaling

解决方案


我来这里是为了寻找类似的答案。经过几次阅读并获得了理解,我将我的想法写在下面:

  1. 我将尝试用一个例子来解释这一点:假设我们有一个应用程序,它在后台由不同的微服务(比如有 3 个微服务 m1、m2、m3)组成。特别是针对特定的微服务进行水平扩展。所以如果微服务m2需要扩展(可能bcoz对它所满足的需求增加了很多),我们可以添加更多的服务器来支持m2。这样我们就完成了 m2 的水平缩放。

    现在,每当部署在不同服务器上的 2 个微服务需要在网络上进行交互时,分布式系统就会发挥作用。从上面的示例中,m2 与 m1 交互或 m3 与 m2 交互将通过网络完成,因此将被视为分布式系统。

    负载均衡器用于支持水平扩展,API 调用用于支持分布式系统。

    所以不可否认,水平扩展和分布式系统大多是结合在一起的。

  2. 虽然严格来说是不正确的。假设我们只有一项服务部署在 5 台不同的服务器上,这些服务器使用负载均衡器进行控制。也没有涉及数据库,即,我们不需要存储数据,但只进行少量计算并返回结果。

    在这种情况下,尽管存在水平扩展,但不同服务器上的不同微服务之间不涉及交互。(5 台机器支持这项服务)。

    所以在这种情况下,水平缩放是存在的,但它不能称为分布式系统。

  3. 在垂直缩放中,所有组件仅在单台机器上运行。不涉及内部通信。所以垂直扩展不应该被认为是分布式系统。

我想提的资源很少: https ://medium.com/system-design-blog/key-characteristics-of-distributed-systems-781c4d92cce3

https://medium.com/@abhinavkorpal/scaling-horizo​​ntally-and-vertically-for-databases-a2aef778610c


推荐阅读