什么才是真正的分布式计算,它与并行/并发计算有什么不同?
在试图同步访问资源的多个并行线程中使用互斥和信号量是否构成分布式计算领域的问题?
发布于 2011-10-19 08:40:02
什么才是真正的分布式计算?
分布式计算本质上是一个处理元素的并行集合,它们相互通信以解决一个或多个问题。这些处理元素彼此之间有充分的分离,因此在它们之间建立可靠和及时的消息传递结构是不实际的,因此不可能对系统的状态有一个全局的了解。分布式系统中消息传递的特殊特性是消息丢失、混淆、延迟--这个空间中的解决方案必须考虑到这一点。因此,分布式编程就是处理网络和消息、并行性和缺乏全局信息。
解决这些问题的最简单方法是使单个处理元素具有特殊性,即对某一特定信息具有权威性。然后其他元素可以每次引用它,或者缓存信息并希望它不会过时(因为它们不能指望被告知更改)。这是典型的客户机/服务器架构。
Internet计算是分布式计算,但没有能力控制大多数分布式节点的实际工作。
试图同步访问资源的多个并行线程是否构成分布式计算领域的问题?
它们构成了一个可能的解决方案,在构建客户机/服务器模型时非常有用,但代价是资源争用可能急剧增加。对于读,这不是一个很大的问题(如果有足够的硬件),但对写作来说,这确实是一个大问题。
但是,您试图避免的是分布式锁。缺乏可靠的、及时的消息绝对会扼杀分布式决策协议,除非您使用像Paxos协议Paxos协议这样的工具,但这需要很多警告。分布式计算的根本问题是“消息会发生错误的事情”。相对较低的协议,如TCP,可以减少问题,但仍然可能会严重失败。
发布于 2011-10-19 03:22:32
试图同步访问资源的多个并行线程是否构成分布式计算领域的问题?
如果这些线程可能在不同的机器上运行,或者即使它们在同一台机器上运行,但在不同的进程中运行,它们也会这样做。
发布于 2011-10-19 07:02:44
分布式计算是一种在不同的计算机(即分布式系统)上进行处理的计算系统。各个程序通过一系列通信渠道相互通信。这些通道通常是网络连接(例如TCP套接字),但经常使用其他通信协议和设备(如DeviceNET、BACNet、SECS-2、Modbus等)。甚至是为特定设备定制的协议。
分布式系统通常比设计在一台计算机上运行的系统复杂得多。除了多线程应用程序需要解决的并发和资源锁定问题外,分布式系统还需要处理通信故障和处理节点故障。需要多个处理器来执行的事务(和回滚)也可能很棘手。
分布式系统具有多种形式,目前在许多应用程序中得到了应用。Web应用程序是分布式系统。一个N层系统通常至少有N个不同的处理器(具有不同的应用程序).分布式系统也在许多工厂自动化系统中使用。
在维基百科上编写分布式计算值得一读。
在回答关于多线程应用程序是否构成分布式应用程序的问题时--如果线程在一台计算机上运行,系统就不是分布式的。它确实必须解决分布式系统中固有的一些问题,但不是所有这些问题。
https://softwareengineering.stackexchange.com/questions/115034
复制相似问题