タグ付けされた質問 「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
分散コンピューティングと並列コンピューティング
私はよく人々が並列コンピューティングと分散コンピューティングについて話しているのを聞きますが、2の間に明確な境界はないという印象を受けており、人々はそれをかなり簡単に混同する傾向がありますが、それは非常に異なると信じています: 並列計算は、マルチスレッド、または単一のCPUを最大限に活用する方法により密接に結合されています。 分散コンピューティングとは、分割と征服の概念を指し、異なるマシンでサブタスクを実行し、結果をマージします。 ただし、ビッグデータ時代に踏み込んだため、その違いは確かに失われつつあり、今日のほとんどのシステムは並列コンピューティングと分散コンピューティングの組み合わせを使用しています。 私が日々の仕事で使用している例は、Map / Reduceパラダイムを備えたHadoopです。これは、異なるマシンでタスクを実行するワーカーを備えた明確な分散システムですが、並列コンピューティングで各マシンを最大限に活用します。 今日の世界でどのように区別するのか、そして並列コンピューティングについてまだ話せるのか、それとも明確な区別がないのかを理解するためのアドバイスをもらいたいと思います。私にとっては、分散コンピューティングは過去数年で大きく成長したように見えますが、並列コンピューティングは停滞しているようです。これはおそらく、並列化よりも計算の分散について多くの話を聞く理由を説明できるでしょう。

6
非対称遅延のあるネットワークでのクロック同期
コンピューターに初期化されていない正確なクロックがあると仮定します。つまり、コンピューターの時計の時刻は、リアルタイムに一定のオフセットを加えたものです。コンピューターにはネットワーク接続があり、その接続を使用して定数オフセットを決定します。BBB 簡単な方法は、コンピューターがタイムサーバーにクエリを送信し、現地時間です。タイムサーバは、一度にクエリを受信と含む応答送信時間でそれを受けて、クライアントに戻って。次に、、つまりです。 T T B + C 2 B + C 1 ≤ T ≤ B + C 2 T - C 2 ≤ B ≤ T - C 1B + C1B+C1B + C_1TTTTTTB + C2B+C2B + C_2B + C1≤ T≤ B + C2B+C1≤T≤B+C2B + C_1 \le T \le B …

2
機能的リアクティブプログラミングとアクターモデルはどのように相互に関連していますか?
FRPは、純粋な機能によるイベントと動作のストリーミングに関するものです。少なくともAkkaで実装されているアクターモデルは、アクターと呼ばれる不純なオブジェクトを介した不変メッセージ(離散イベントと見なすことができます)のストリーミングに関するものです。 したがって、表面上はそれらは関連しているように見えます。 それらがどのように関連しているかについて、他に何を言えますか?また、それらのどれが異なるアプリケーションドメインにより適切であるかもしれないかについて何が言えるでしょうか?


1
Pastryのルーティングテーブルの作成方法
この質問は、Computer Science Stack Exchangeで回答できるため、Software Engineering Stack Exchangeから移行されました。 7年前に移行され ました。 Pastry Distributed Hash Tableを実装しようとしていますが、いくつかのことが理解を逃れています。私は誰かが明らかにできることを望んでいた。 免責事項:私はコンピューターサイエンスの学生ではありません。私は人生で正確に2つのコンピューターサイエンスコースを受講しましたが、どちらもリモートで複雑なものを扱っていません。私はソフトウェアで長年働いてきたので、アイデアに頭を包むことができれば、実装タスクに任せていると感じます。だから、明らかな何かを見逃しているだけかもしれません。 著者が発表した論文[1]を読んで、ある程度の進歩を遂げましたが、ルーティングテーブルの動作に関するこの1つの特定のポイントに固執し続けています。 論文は、 ノードのルーティングテーブル、それぞれエントリの 行に編成されます。ルーティングテーブルの行のエントリは、nodeIdが最初のn桁で現在のノードのnodeIdを共有するが、番目の桁が可能な値のいずれかを持つノードを参照します現在のノードのID の番目の数字以外。⌈ ログ2 B N ⌉ 2 B - 1 2 B - 1件の、N 、N + 1 2 B - 1 、N + 1をRRR⌈ ログ2bN⌉⌈log2b⁡N⌉\lceil \log_{2^b} N\rceil2b− 12b−12^b - 12b− 12b−12^b - 1nnnn …

4
一方向ネットワーク遅延の測定
これは、私が作成したネットワーク遅延の測定に関するパズルです。解決策は不可能だと思いますが、友人は同意しません。どちらにしても説得力のある説明を探しています。(これはパズルとして提起されていますが、NTPは言うまでもなく、オンラインゲームなどの通信プロトコルの設計と経験に適用できるため、このWebサイトに収まると思います。) 次の図に示すように、2つのロボットが2つの部屋にあり、一方向の待ち時間が異なるネットワークで接続されているとします。ロボットAがロボットBにメッセージを送信する場合、ロボットBが到着するのに3秒かかりますが、ロボットBがロボットAにメッセージを送信する場合、到着するのに1秒かかります。レイテンシは変化しません。 ロボットは同一であり、クロックの共有はありませんが、時間の経過を測定できます(たとえば、ストップウォッチがあります)。ロボットA(メッセージが3秒遅れる)とロボットB(メッセージが1秒遅れる)がどちらであるかはわかりません。 往復時間を発見するプロトコルは次のとおりです。 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
分散アルファベータプルーニング
私は、分散アーキテクチャでアルファ-ベータプルーニングを使用してチェスのミニマックス検索ツリーを処理できる効率的なアルゴリズムを探しています。私が見つけたアルゴリズム(PVS、YBWC、DTSは下記参照)はすべてかなり古い(1990年が最新)。それ以来、多くの大きな進歩があったと思います。この分野の現在の標準は何ですか? また、私が読んだ研究論文からは理解できないので、DTSについての馬鹿の説明を教えてください。 上記のアルゴリズム: PVS:原理変動の分割 YBWC:ヤングブラザーズウェイトコンセプト DTS:動的なツリー分割 ここですべて議論されます。

1
Paxosの議員は誰ですか?
独創的な分散システムに関する論文The Part Time Parliament(the Paxos protocol)で、レスリーランポートは、Paxon議会プロトコルに関与している架空の議員を指名しています。 この執筆によれば、彼は次のように述べています。 私はギブスの助けを借りて偽のギリシア方言に音訳した、この分野で働いているコンピューター科学者の名前をギリシャの議員に与えました。 立法者の名前が付けられているという科学者に関する情報はありますか?論文の議員と対応するコンピューター科学者のリストが理想的な答えでしょう。 論文で言及された最初の議員「Λινχ∂」は、「リンチ」と発音できるため、ナンシー・リンチにちなんで命名されたと思います。また、参考文献の「ΛεωνίδαςΓκίμπας」はレオ・ギバスです。私は他人が誰であるかについて完全に迷っています。

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 } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 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サルツァー; DPリード; DDクラーク:システム設計におけるエンドツーエンドの議論。ACM Trans。計算。システム。2(4):277-288、1984。DOI= 10.1145 / 357401.357402 すべての大学のすべてのオペレーティングシステムクラスで読む必要があり、インターネットの設計の基礎となる主要な指針の1つであるように思われます。(例:J Kempf、R Austein(eds)、およびIAB、「Rise of the Middle and the Future of End-to-End:Reflections on the Evolution of the Internet Architecture」、RFC 3724、2004年3月。 ) エンドツーエンドの原則は次のように述べています(Saltzer et al。、1984): [if]問題の機能が完全かつ正確に実装できるのは、通信システムのエンドポイントにあるアプリケーションの知識と助けを借りた場合のみです。...問題のある機能を通信システム自体の機能として提供することは、可能。[ただし]通信システムによって提供される機能の不完全なバージョンは、パフォーマンスの向上に役立つ場合があります。 またはもっと簡単に(要約から): エンドツーエンドの議論は、システムの低レベルに配置された機能は、その低レベルで提供するコストと比較した場合、冗長であるか、またはほとんど価値がない可能性があることを示唆しています。 しかし、私は自分の経験(インターネットアーキテクチャではなくコンピュータアーキテクチャ)でエンドツーエンドの原則を適用することにほとんど成功していません。原理は「詩」(つまり、数学的に定義されていない一連の用語を含む英語の散文では)として記述されているので、「問題の機能は、アプリケーションの知識と助け。」しかし、アプリケーションの「知識とヘルプ」はもちろんのこと、「問題の機能」とは何でしょうか。 例:(インターネットとは異なり)オンチップネットワークではパケットをドロップできませんが、バッファリングは非常に制限されているため、デッドロックを回避または回復する方法が必要です。一方で、アプリケーションもデッドロックを解消する必要がありますよね?ですから、私は一般的なケース(デッドロックなし)を高速にして、アプリでデッドロック回避をオフにするべきだと考えるかもしれません。これは、実際、私たちがAlewifeとFuguで試したものです(Mackenzie et al。、Exploiting Two-Case Delivery for Fast Protected Messaging、Int'l Symp High-Perf Comp Arch、(HPCA-4):231-242、 1998.またはJohn Kubiatowiczの論文。)それは「機能しました」(バッファーがいっぱいになったときにインターコネクトにプロセッサーを中断させ、OSにソフトウェアバッファリングを追加させることによって)が、私は学界や業界(その作成者である私たちを含む)で誰も見たことがないHPCAペーパー)アイデアを再現しようと競争している。したがって、ネットワークでのデッドロックの回避は、アプリケーションレベルのデッドロックの回避と同じ「問題の機能」ではないか、エンドツーエンドの原則が間違っています。 …

1
並行プログラミングおよび/または分散プログラミングの形式主義?
私の背景は、主にC、C ++、およびPythonの命令型言語から来ました。私は数年後、Scala、Erlang、およびHaskellの一部を入手し、関数型プログラミングとその背後にある形式に非常に興味を持つようになりました。 私は並行プログラミングと分散プログラミングにも興味があり、その背後にある形式、特に「日中の光」のほんの少しだけを見たもの(例:実世界での使用、または少なくともどこかでの実装)を調べています。これまでのところ、通信順次プロセス、アクターモデル、通信プロセスの代数、および通信システムの計算について知っています。これらの中で、アクターモデルがErlang、Scala、Haskellなどの言語で実現したことを知っています。 これらの分野に取り組む前に、学んだり実践したりすべき基礎があるのか​​、最初に学ぶべき「古典的」な基礎があるのか​​、他に見逃したかもしれない人気のある基礎があるのだろうか。

2
外部整合性と線形化可能性
でスパナ、TrueTime&CAP定理、エリック・ブリュワーは書いています: Spannerの微妙な点の1つは、ロックから直列化可能性を取得しますが、TrueTimeから外部整合性(線形化可能性と同様)を取得することです(強調を追加)。 外部整合性の定義とは何ですか?それは線形化可能性とどう違うのですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.