# ゴシッププロトコル
## 定義
ゴシッププロトコル(gossip protocol)は、分散システムにおいてノード間で情報を伝播させるための通信手法であり、各ノードがランダムに選んだ少数の相手と定期的に状態を交換することで、最終的にクラスタ全体に情報が行き渡る。感染症の伝播モデルに着想を得ており、エピデミックプロトコル(epidemic protocol)とも呼ばれる。中央集権的なコーディネータを必要とせず、ノードの参加・離脱に対して自然に耐性を持つ点が特徴である(Source: [[@2010__SIGOPS_OSR__Cassandra - A Decentralized Structured Storage System]])。
## 横断的知見
- Cassandra は Scuttlebutt と呼ばれるアンチエントロピー型ゴシップを採用し、メンバーシップ管理だけでなくシステム制御状態の伝播にもゴシップを使用している。Dynamo も同様にゴシップベースのメンバーシップを採用しており、すべてのノードが他の全ノードの情報を保持する。両システムとも、ゴシップを通じてリング上のノード配置とデータ所有権を伝播するが、Cassandra はさらに Φ 累積障害検知器をゴシップ到着間隔に基づいて動作させることで、障害検知をゴシップ層と緊密に統合した点が独自である(Source: [[@2010__SIGOPS_OSR__Cassandra - A Decentralized Structured Storage System]]、[[@2007__SOSP__Dynamo - Amazon's Highly Available Key-value Store]])。
## 未解決の問い
- ゴシップの収束時間はクラスタ規模に対して O(log N) と理論的に示されるが、数千〜数万ノード規模での実用上の収束遅延はどの程度か。Cassandra 論文では 100 ノード規模でしか評価されていない。
- Φ 累積障害検知器の指数分布近似は Cassandra のゴシップチャネル特性に合わせたものだが、異なるネットワークトポロジ(データセンタ内対データセンタ間)では分布モデルの切り替えが必要か。
- ゴシップの帯域消費はノード数の二乗に比例する傾向があるが、大規模クラスタでのゴシップトラフィックの実際のオーバーヘッドを定量的に比較した文献はあるか。
## 関連
- ソース: [[@2010__SIGOPS_OSR__Cassandra - A Decentralized Structured Storage System]] / [[@2007__SOSP__Dynamo - Amazon's Highly Available Key-value Store]]
- 概念: [[結果整合性]] / [[一貫性ハッシュ法]]
- エンティティ: [[Apache Cassandra]]
## 出典
- [[@2010__SIGOPS_OSR__Cassandra - A Decentralized Structured Storage System]](§5.3 Membership、§5.3.1 Failure Detection——Scuttlebutt ベースゴシップと Φ 累積障害検知器)
- [[@2007__SOSP__Dynamo - Amazon's Highly Available Key-value Store]](ゴシップベースメンバーシップ)