Interactive

Gossipプロトコル可視化

中央の調整役なしに、各ノードがランダムなピアと定期的に状態を交換するだけで、 更新は全体へ広がっていきます。1台から始めて、push・pull・push-pullの 3方式を同じノード数で同時に走らせ、感染(更新の伝播)が広がる様子をラウンドごとに比較できます。 ノード数を16→32→64→128と増やしても収束ラウンド数はわずかしか増えない—— これがGossipの本質的なスケール特性(O(log N)収束)です。

ここが分かる

  • ノード数Nを16→32→64→128と切り替えると、push-pullの収束ラウンド数はおよそ4→5→6→7と、log₂Nに沿ってしか増えない——台数が桁で増えてもラウンド数は対数でしか増えないという、このプロトコルの核心が実際に確認できる。
  • pushは終盤、感染者側が「残り少ない未感染」に運悪く当たらないラウンドが続きやすく収束が伸びる。pullは逆に未感染側が能動的に探しに行くため終盤が速い。push-pullは両方の利点を持ち、ほぼ常に最も少ないラウンド数で全員に届く。
  • 「別の乱数で再生成」を何度か試すと、1回ごとの広がり方(誰が何ラウンド目に感染するか)は毎回変わるが、push-pullが最速という傾向自体は再現し続ける——確率的アルゴリズムは個々の実行にばらつきがあっても、統計的な性質は安定している。