分布式系统设计

时间:2010-12-16 20:54:06

标签: system distributed distributed-computing

在分布式系统中,某个节点在'N'个节点上平均分配'X'个工作单元(通过套接字消息传递)。

随着我们增加工作节点的数量,每个节点更快地完成他的工作,但我们必须建立更多的连接。

在实际情况中,它类似于在类似Hadoop的系统中更改10个节点,每个节点处理100GB节点1,000,000个节点,每个节点处理1MB。

  • 在这种情况下设置更多连接有什么影响?这是poll()函数的一大开销吗?
  • 什么是最好的方法?

3 个答案:

答案 0 :(得分:3)

听起来你需要咨询Amdahl's Law

至少我是如何计算出高速交换机上有多少台机器最适合我的并行计算。

答案 1 :(得分:1)

是否必须在Supervisor和Worker之间使用套接字和消息传递?

您可以使用某种类型的排队,以避免将负载加载到Supervisor上。或者类似于HDFS的分布式文件系统,用于分发任务并收集结果。

它还取决于您计划部署Workers的节点数。 1,000,000个节点是一个非常大的数字,因此在这种情况下,您必须将任务分配到多个队列中。

需要注意的是,如果所有节点同时完成任务,将会发生什么。当他们可以请求新任务时,值得考虑一些变化。 ZooKeeper(http://hadoop.apache.org/zookeeper/)可能也可用于同步作业。

答案 2 :(得分:0)

您可以衡量一下您的网络费用吗?在工作机器上工作所花费的时间应该只是消息传递和接收的一部分。

您还能描述将每个工人结果处理成主结果的O表示法吗?

您的主人是否有预期的回复?

btw - 如果您的工作节点更快完成但未充分利用CPU资源,您可能会错过设计权衡吗?

当然,你可以成为任何法律的规则或例外(论证/过时研究)。 ; - )