Questions tagged «distributed-systems»

有关通过多个合作但独立的代理商解决问题的挑战的问题。

4
MapReduce的新颖之处是什么?
几年前,MapReduce被誉为分布式编程的革命。也有批评家但总的来说是热心的炒作。它甚至获得了专利![1] 这个名字让人联想到的map和reduce函数式编程,但是当我阅读(维基百科) 映射步骤:主节点获取输入,将其分为较小的子问题,然后将其分配给工作节点。辅助节点可以依次再次执行此操作,从而导致多层树结构。工作节点处理较小的问题,并将答案传递回其主节点。 减少步骤:主节点然后收集所有子问题的答案,并以某种方式将它们组合起来以形成输出-最初试图解决的问题的答案。 或[2] MAP的内部原理: MAP将输入值分割为多个单词。MAP旨在将输入的每个给定键/值对与潜在的许多中间键/值对相关联。 REDUCE的内部要素: [REDUCE]执行命令式聚合(例如,减少):采用许多值,并将其减少为单个值。 我忍不住想:这是分而治之(在Mergesort的意义上),简单明了!那么,MapReduce中是否存在(概念上的)新颖性,还是只是在某些情况下有用的旧思想的新实现? 美国专利7,650,331:“有效进行大规模数据处理的系统和方法”(2010) Google的MapReduce编程模型 -R.Lämmel(2007)重新审视

6
分布式与并行计算
我经常听到人们谈论并行计算和分布式计算,但是我给人的印象是两者之间没有明确的界限,人们往往很容易混淆这一点,尽管我相信这是非常不同的: 并行计算与多线程或如何充分利用单个CPU紧密结合。 分布式计算是指分而治之的概念,即在不同的计算机上执行子任务,然后合并结果。 但是,自从我们迈入大数据时代以来,这种区别似乎确实正在消失,并且当今大多数系统都使用并行计算和分布式计算的组合。 我在日常工作中使用的示例是具有Map / Reduce范式的Hadoop,它是一个分布清晰的系统,其工作人员在不同的计算机上执行任务,但也充分利用了每台计算机的并行计算优势。 我想征询一些建议,以了解如何在当今世界中真正实现区分,以及我们是否仍然可以谈论并行计算还是不再存在明显的区分。在我看来,分布式计算在过去几年中增长了很多,而并行计算似乎停滞了,这可能可以解释为什么我听到了更多关于分布式计算而不是并行化的讨论。

6
具有非对称延迟的网络中的时钟同步
假定计算机具有未初始化的精确时钟。也就是说,计算机时钟上的时间是实时时间加上一些恒定的偏移量。计算机有一个网络连接,并且我们要使用连接,以确定常数的偏移量。BBB 简单的方法是计算机将查询发送到时间服务器,记录本地时间。时间服务器在时间接收查询,并将包含的回复发送回客户端,客户端在时间接收它。然后是,即。B+C1B+C1B + C_1TTTTTTB+C2B+C2B + C_2B+C1≤T≤B+C2B+C1≤T≤B+C2B + C_1 \le T \le B + C_2T−C2≤B≤T−C1T−C2≤B≤T−C1T - C_2 \le B \le T - C_1 如果网络传输时间和服务器处理时间是对称的,则。据我所知,在野外使用的时间同步协议NTP在此假设下运行。B=T−C1+C22B=T−C1+C22B = T - \dfrac{C_1 + C_2}{2} 如果延迟不是对称的,如何提高精度?有没有一种方法可以测量典型的Internet基础结构中的这种不对称性?

2
功能反应式编程和Actor模型如何相互关联?
FRP是关于通过纯函数流式传输事件和行为。Actor模型-至少在Akka中实现-是关于通过可能不纯的对象(称为actor)流式传输不可变消息(可以认为是离散事件)。 因此从表面上看,它们似乎相关。 关于它们之间的关系,我们还能说些什么?另外,对于其中哪一个可能更适合于不同的应用程序域又能说些什么呢?


1
填充糕点的路由表如何工作?
此问题是从软件工程堆栈交换迁移的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 我正在尝试实现Pastry Distributed Hash Table,但是有些事情使我无法理解。我希望有人能澄清一下。 免责声明:我不是计算机科学专业的学生。我一生中刚上过两门计算机科学课程,但都没有涉及任何远程复杂的问题。我从事软件工作已经有多年了,所以如果我能将想法付诸实践,我觉得我已经完成了实现任务。因此,我可能只是缺少一些明显的东西。 我已经阅读了作者发表的论文[1],并且取得了一些不错的进步,但是我一直对路由表的工作原理这一点感到困惑: 该文件声称 一个节点的路由表中,RRR,被组织成⌈log2bN⌉⌈log2b⁡N⌉\lceil \log_{2^b} N\rceil 与行2b−12b−12^b - 1每个条目。路由表第n行的2b−12b−12^b - 1条目均引用一个节点,该节点的nodeId在前n位共享当前节点的nodeId,但其n + 1位具有2 b − 1可能值之一,而不是所述ñ + 1个数位在本节点的id。nnnn+1n+1n + 12b−12b−12^b - 1n+1n+1n + 1 的bbb代表一个应用程序特定的变量,通常是444。为了简单起见,让我们使用b=4b=4b=4。所以上面是 一个节点的路由表中,RRR,被组织成 ⌈log16N⌉⌈log16⁡N⌉\lceil \log_{16} N\rceil与行151515的每个条目。路由表第n行的151515个条目均引用一个节点,该节点的nodeId在前n个数字中共享当前节点的nodeId,但其n + 1个数字具有除n +以外的2 b - 1可能值之一当前节点ID中的第1位数字。nnnn+1n+1n + 12b−12b−12^b - 1n+1n+1n + 1 我很了解 此外,NNN是群集中服务器的数量。我也知道 …

4
测量单向网络延迟
这是关于衡量我创建的网络延迟的一个难题。我相信解决方案是不可能的,但是朋友们不同意。无论哪种方式,我都在寻找令人信服的解释。(尽管我认为它很困惑,但我认为它适合本网站,因为它适用于通信协议(例如在线游戏)的设计和体验,更不用说NTP了。) 假设两个机器人位于两个房间中,并通过具有不同单向延迟的网络连接,如下图所示。当机器人A向机器人B发送消息时,它需要3秒钟才能到达,但是当机器人B向机器人A发送消息时,它需要1秒钟才能到达。延迟永远不会改变。 尽管它们可以测量时间的流逝(例如,它们具有秒表),但是它们是相同的,并且没有共享的时钟。他们不知道其中哪个是机械手A(消息延迟3s),哪个是机械手B(消息延迟1s)。 发现往返时间的协议是: whenReceive(TICK).then(send TOCK) // Wait for other other robot to wake up send READY await READY send READY // Measure RTT t0 = startStopWatch() send TICK await TOCK t1 = stopStopWatch() rtt = t1 - t0 //ends up equalling 4 seconds 是否有确定单程行程延迟的协议?机器人可以发现其中哪个机器人的消息发送延迟更长?

1
分布式alpha beta修剪
我正在寻找一种有效的算法,该算法可让我在分布式体系结构上使用alpha-beta修剪来处理国际象棋的minimax搜索树。我发现的算法(PVS,YBWC,DTS见下文)都已经很老了(1990年是最新的)。我认为自那时以来已经有了许多实质性的进步。目前该领域的标准是什么? 另外,请指出白痴对DTS的解释,因为我从阅读的研究论文中无法理解它。 上面提到的算法: PVS:原则变化分裂 YBWC:青年兄弟等待概念 DTS:动态树拆分 全部都在这里讨论。

1
谁是Paxos的立法者?
在开创性的分布式系统论文《兼职议会》(Paxos协议)中,Leslie Lamport列举了参与Paxon议会协议的虚构立法者。 根据本文,他指出: 我给希腊立法者提供了在该领域工作的计算机科学家的名字,并在Guibas的帮助下将其译为伪造的希腊方言。 有人知道立法者的名字是关于科学家的吗?论文中的立法者名单和相应的计算机科学家将是理想的选择。 我认为论文中提到的第一位立法者“Λινχ∂”以南希·林奇的名字命名,因为它可以发音为“林奇”。此外,参考书目中的“ΛεωνίδαςΓκίμπας”是Leo Guibas。我完全不知道其他人是谁。

1
所有士兵应同时射击
当我还是一名学生时,我在数字系统/逻辑设计教科书中看到一个问题,关于N名士兵连续站立并想同时射击。问题的一个更困难的版本是士兵们站在一个通用的网络中而不是排成一排。我确定这是一个经典问题,但我不记得它的名字了。你能提醒我吗?


1
推断优化类型
在工作中,我的任务是推断一些有关动态语言的类型信息。我将语句序列重写为嵌套let表达式,如下所示: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 由于我从一般类型信息开始,并试图推断出更具体的类型,因此自然的选择是精简类型。例如,条件运算符返回其真假分支类型的并集。在简单的情况下,它效果很好。 但是,在尝试推断以下类型时遇到了障碍: function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

1
端到端原则可以形式化吗?
在1990年代后期,当我还在读研究生时, JH Saltzer;DP芦苇; DD Clark:系统设计中的端到端参数。ACM Trans。计算 Syst。2(4):277-288,1984.DOI = 10.1145 / 357401.357402 在每所大学的每个操作系统课程中,几乎都需要阅读该书,而且它似乎仍然是互联网设计的主要指导原则之一。(例如:参见J Kempf,R Austein编辑)和IAB,“ 中间的兴起和端对端的未来:对Internet体系结构演进的思考 ”,RFC 3724,2004年3月。 ) 端到端原理说明(Saltzer等人,1984): [如果]仅在站在通信系统端点的应用程序的知识和帮助下,才能完全正确地实现所讨论的功能,...,前提是所质疑的功能不是通信系统本身的功能可能。[尽管]有时,通信系统提供的功能的不完整版本可能有助于提高性能。 或更简单地(摘自摘要): 端到端的论点表明,与以较低级别提供功能相比,放置在系统较低级别上的功能可能是多余的或价值很小。 但是以我自己的经验(在计算机体系结构中,而不是在互联网体系结构中)应用端到端原理并没有取得什么成功。由于该原则被说成是“诗”(即,英语散文中有许多数学上没有定义的术语),因此很容易自欺欺人地认为:“所讨论的功能只有通过以下方式才能完全正确地实现:应用程序的知识和帮助。” 但是什么是“所讨论的功能”,更不用说应用程序的“知识和帮助”了? 示例:片上网络(与Internet不同)不允许丢弃数据包,但是缓冲非常有限,因此您需要采取某种措施来避免死锁或从死锁中恢复。另一方面,应用程序也需要使其自身无死锁,对吗?因此,我可能会以为我应该使常见情况(无死锁)变快,并在应用程序上避免死锁。实际上,这就是我们在Alewife和Fugu上尝试过的方法(Mackenzie等人,“ 利用两箱式邮件传递以进行快速保护的消息传递”,《国际Symp高性能复合拱门》(HPCA-4):231-242, 1998年。或约翰·库比亚托维奇(John Kubiatowicz)的论文。“它”有效“(通过在缓冲区已满时使互连中断处理器,并通过软件缓冲使OS扩展),但我在学术界或行业中都没有见过任何人(包括我们中的任何人) HPCA论文)竞相尝试复制该想法。因此,显然,避免网络中的死锁与避免应用程序级死锁是不同的“问题功能”,否则端到端原理是错误的。 可以将端到端原理从“诗”转变为定理吗?或者至少可以用计算机架构师可以理解的术语来表述?

1
并发和/或分布式编程中的形式主义?
我的背景来自命令式语言,主要是C,C ++和Python。几年后,我学习了Scala,Erlang和一些Haskell,从那以后,我对函数式编程及其背后的形式形式变得非常感兴趣。 我对并发和分布式编程也很感兴趣,并且一直在研究其背后的形式主义,特别是那些至少看到了一点点“日光”的形式主义(例如,在现实世界中的使用,或者至少是某个地方的实现)。到目前为止,我知道通信顺序过程,Actor模型,通信过程的代数以及通信系统的微积分。在我当中,我知道Actor模型已经以Erlang,Scala和Haskell等语言实现了。 我想知道在解决这些领域之前是否应该学习和实践一些基础,是否应该首先学习“经典”基础,以及是否可能错过其他流行的基础?

2
外部一致性与线性化
埃里克·布鲁尔(Eric Brewer)在Spanner,TrueTime和CAP定理中写道: 关于扳手一个细微的事情是,它得到串行化自锁,但它得到外部的一致性(类似于线性化从TrueTime [)加着重号。 外部一致性的定义是什么,它与线性化有何不同?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.