【问题标题】:Two questions about Distributed systems: Scalability and Mutual exclusion关于分布式系统的两个问题:可扩展性和互斥性
【发布时间】:2016-01-10 22:08:47
【问题描述】:

第一个问题:可扩展性

在分布式系统的上下文中,究竟什么可以称为 可扩展性?我猜这是系统能够被尽可能多的分布式设备使用而无需更改代码的能力。我的这个想法对吗?

还有我可以在我的分布式应用程序上实施哪些技术来确保我具有这种可扩展性?


第二个问题:互斥

有人告诉我,当我们想要确保在单台机器或分布式系统上执行的进程之间相互排斥时存在差异,但是我不明白如何,谁能解释并说出有什么区别?

【问题讨论】:

  • 你想到的分布式系统是什么样的?现在有很多东西都在分发。我问的原因是因为您提到了分布式设备,并且根据分布式系统的类型,您可能会得到不同的答案。至于你的第二个问题,这些进程实际上是在不同端口上运行并相互通信的服务器吗?

标签: concurrency scalability distributed-system mutual-exclusion


【解决方案1】:

第一个问题:可扩展性:

在分布式系统的上下文中,究竟什么可以称为可伸缩性?我猜这是系统能够被尽可能多的分布式设备使用而无需更改代码的能力。我的这个想法对吗?

几乎,但我会定义它有点不同。如果您可以通过添加更多资源来提高系统的性能和能力,则系统是可扩展的。这意味着,如果系统是可扩展的,并且您的计算需求突然上升,您可以通过添加更多资源(通常是更多机器)进行扩展并满足这些需求。请注意,可扩展性和高性能是两件非常不同的事情。一个系统可以非常高效(非常快速地处理其当前负载)而没有可扩展性。

可扩展系统的最典型案例是计算负载在可用机器之间分配的系统,因此当您添加更多机器时,您也可以处理负载的成比例增加,这通常被称为作为“线性可扩展性”,这通常是最理想的可扩展性类型,但通常很难实现,因为当您添加更多资源(例如机器)时,您通常必须为机器之间的通信付出代价,这意味着缩放变为次线性。如果您对此感兴趣,我建议您阅读Amdahls Law (paper1, paper2)。

第二个问题:互斥

有人告诉我,当我们想要确保在单台机器或分布式系统上执行的进程之间相互排斥时存在差异,但是我不明白如何,谁能解释并说出有什么区别?

我会说分布式互斥和单机互斥的最终目标和问题本身是相同的,但实现的手段却大不相同。定义分布式系统的主要因素之一是您的进程之间没有任何共享内存(因为它们可能驻留在不同的机器上),您在单机系统中拥有(尽管您可以通过实现来模拟共享内存分布式共享内存抽象)。在单机互斥设置中,您通常通过使用共享内存和互斥锁来实现它,而在分布式设置中,您必须使用消息传递并处理诸如延迟、部分故障、故障检测等事情,这使得事情变得很多更难。

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2013-03-17
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多