ピュア P2P ベースの 完全な2ちゃんねる実装は、 CAP 定理により相当に困難である (追記あり)
読了まで:約8分
本日の
まあ、
Pure P2P ベースの
2ch 実装って 作れないのかなぁ
なんて
ピュア P2P ベース の
完全な 分散 2 ちゃんねる は、実装 [CAP 定理 に より 相当に 困難である ]
と
1. 完全な 2ch 実装では、最終的な読み書きデータに対し、強い一貫性を求められる
まず
Pure P2P に
限らず 分散システムを 実装する 上で 関連する 法則と いうか 定理に、
って
これは、
[[一貫性]] (Consistency) 全ての
ノードに おいて 同時に 同じ データが 見えなければならない。 [[可用性]] (Availability) ノード障害に
より 生存ノードの 機能性は 損なわれない。 つまり、 ダウンしていない ノードが 常に 応答を 返す。 単一障 害点が 存在しない ことが 必要。 [[分断耐性]] (Partition-tolerance) システムは
任意の 通信障害などに よる メッセージ損失に 対し、 継続して 動作を 行う。 通信可能な サーバーが 複数の グループに 分断される ケース (ネットワーク分断)を 指し、 1 つの ハブに 全ての サーバーが つながっている 場合は、 これは 発生しない。 ただし、 そのような 単一障害点の ある ネットワーク設計は 可用性が 成立しない。
の
で、
一貫性 (Consistency) 全ての
ノードに おいて 同時に 同じ データが 見えなければならない。
と
あと、
- (レスの
) 順序に 対する 強い 一貫性
が、
で、
2. ぶっちゃけ、強い一貫性が求められる分散システムを P2P ノードの参加と離脱が活発な P2P システムで実現するのは、かなりのムリゲー!
はい、ぶっちゃけたー!!1
まあ、
そして、
[結果整合性 = [[弱い整合性]] ]
を
それで、
最終的に
落と してきた Linux の ISO ファイルが きちんと 動作すれば 良い
みたいな
最終的な
出力結果 で、 或る 種の (例えば整合性 ファイルが 壊れてないとか ) が 保たれたら 良い
と
んで、
参加者の
ネットワークへの 参加と である離脱が、 かなり バラバラ
と
それで、
例えば。
ある
時点 (例えば 午前 9 時時点) で、 クラスメンバー全員に、 同じ 情報を 行き渡らせる
と
クラスメンバーの
口頭での 伝言のみで 行え!
みたいなコトを
えっ!?
それ LINE とか 使わないかぎり無理っしょ、 それ。
と
そして、
出席下校時刻がバラバラなクラス → _ ネットワークへの参加と離脱が、かなりバラバラ な P2P ネットワーク_
クラスメンバー全員で同時刻に同じ情報を行き渡らせる → _ ある時点での強い一貫性が求められる_
LINE とか使わないかぎり無理 → _ どこかに全員が参加する単一のネットワークが無いと厳しい_
と
ネットワークへの
参加と 離脱が バラバラな 状態になる P2P ネットワークでは、 強い 一貫性を 持たせる ことが 困難である
と
で、
3. 結論から言えば、2ch っぽいシステムを P2P で実装しようと思うと、どこかで何かを調整しないと多分ムリゲー
と
まあ少なくとも
- _ 2ch の
スレッドと のレス_ 様な _ 強い 一貫性を と求められる システム_ - _ ネットワークへの
参加と な離脱が 頻繁_ _ クライアントサイド P2P_ 、と いう 実装形態は - _ ピュア P2P と
いう では、ネットワーク形態_ 相当に 工夫しないとた ぶん _ ムリゲー_
と
そして、
まあ、
えー、
マジでー。 それー……
って
で、
が
まーだからなんだ。
2ch を
ピュア P2P で 実装するのは、 どう 考えても 相当に ムリゲー
と
と
まぁ、
で、
まあ、
と
追記
えー、
先ほど、
@nyarla この
記事の 「本当に 分散されたのか?」って ところが 問題の 解決策を 提案してくれるかもしれません。 翻訳 GitTorrent を 発表 - 分散型 GitHub http://t.co/mP8oFFsLDJ - @173210
と
を
1. 2ch っぽい掲示板実装の一貫性の実装には、 blockchain 技術が少なくとも使えそう
一個目が
まあ、
で、
- 板全体の
スレ立て 情報を 持つ blockchain と、 スレ全体の レスの 情報を 持つ blockchain を 用意する - その上で、
スレ立て 時には 板 blockchain に スレ立ての リクエストを 送り、 それが Accept されたら、 今度は レス用の blockchain を 作る - そして
板の スレ情報や スレの レス情報は、 板 blockchain や スレ blockchain から 取得し、 レスを 返すときは スレ blockchain に リクエスト投げる
と
ま
2 blockchain 技術を使う際の問題点
- 独自実装しようと
思うと、 blockchain 技術の コアの 部分まで 理解しないと 実装できない - 各種 blockchain を
使う Cryptocurrency に 寄生しようとすると、 その 通貨が 必要と なり、 カネが 掛かる - blockchain の
設定に よっては、 非常に ネットワーク効率が 悪い。 そして 某会長に Dis られる
まあ blockchain 技術を
まあそんな感じ
僕の
まーなんだ、
と
※ ちなみに
追記 2
先ほどの
以上です。