KiZUNA: P2Pネットワークを用いた
マイクロブログサービスの実現
大阪市立大学 創造都市研究科
播磨 裕太 安倍 広多
石橋 勇人 松浦 敏雄
研究背景


マイクロブログサービスの普及
◦ Twitter, Weibo, Yammer, etc…



Twitter
◦ 月間アクティブユーザ: 2億4千万人超
◦ 日間ツイート数: 5億ツイート



既存のマイクロブログサー...
研究背景 | 問題点(1)


サーバクライアントモデル
アクセスが
サーバに集中
サーバがダウンすると
サービスが停止する
(単一故障点の存在)
...
バルス!

バルス!

バルス! バルス!

3
研究背景 | 問題点(2)


高い運用コスト
◦ 大量のサーバなどが必要



Twitter Inc.
◦ 2013年第4四半期(10月-12月): 517億円の赤字

4
研究目的


Pure P2Pでマイクロブログサービスを実現
◦ 全ユーザの端末でTwitterのサブセットを実現

◦ サーバ不要
◦ 名称: KiZUNA


メリット
◦ 耐故障性(単一故障点の排除)
◦ 高いスケーラビリティ
◦ 低...
KiZUNAで実現するTwitterの機能
Twitter | ツイート

140文字以内の短文
(ツイート)を投稿できる
7
Twitter | フォロー(購読)
フォローしてい
るユーザらのツ
イート

8
Twitter | ハッシュタグ
”#”から始まる文字列

9
Twitter | ハッシュタグ
「#IPSJ」に
言及している
ツイート

10
Twitter | 全文検索
「ソチ」を
含むツイート

11
Twitter | 検索ストリーム
「ソチ」を
含むツイート

Push型

12
Twitter | ログイン

ユーザの認証

13
Twitter | メッセージアーカイブ機能
ユーザの過去の
メッセージを取得

14
本研究の意義
関連研究


本研究

ツイートをフォロワーに
P2Pベースのマイクロブログサービス
配送する機能に該当 西尾らの 戸部らの
Megap
Cuckoo
hone
手法
手法
KiZUNAだけがサポート!
Hybrid ハッシュタグや Pure...
本研究の意義


高機能なマイクロブログサービスを
Pure P2Pで実現する方法を明らかにする
◦ マイクロブログサービス = Pub/Subパラダイムに
よってモデル化
 購読者にメッセージを配送
→トピックベースPub/Sub
 内...
KiZUNAの設計について
KiZUNA | 構造


後で説明

4つのSkip Graphベースの
構造化P2Pネットワークから構成
メッセージ配送用

検索ストリーム用

全文検索用

DHT用

すべてをSkip Graphベースで
実現することで実装コストを下...
KiZUNA | ユーザの識別(1)

Twitterではスクリーンネーム
(ユーザが任意に設定可能で重複しない)
KiZUNAでも使うが…
重複しないことを保証したいが
サーバがないため難しい 20
KiZUNA | ユーザの識別(2)
重複しないIDが必要

乱数で生成した長いビット列を
IDとする(これをUIDと呼ぶ)
UIDの例: 582cd103-ee87-4b14-b57f-848a248de58c

UIDとスクリーンネームを併...
メッセージ配送の実現法
メッセージ配送 | 概要(1)
バルス!

A

Aのフォロワー

B C

...

X

フォロワー全員に配送しなければならない

一人一人に送るのは効率が悪い
Twitterで最もフォローされている
ユーザのフォロワー数は5000万人超
...
メッセージ配送 | 概要(2)
一人一人に送るのは効率が悪い

まとめて送信する
P2Pネットワーク(Skip Graph)上で
ALM(Application Level Multicast)により配送
24
メッセージ配送 | Skip Graphの構造
Level 3

Level 2

10

20

30

40

50

60

30
20

70
40

10

70

80

20 30

50

80

60
50

70

キー(昇...
メッセージ配送 | Skip GraphのALM
Level 3

10

20

[50, 80]へ
送信

Level 2

Level 1

Level 0

30
30

40

50

60

①

ホップ数: O (log n )
...
メッセージ配送 | 詳細(1)
購読者をある範囲に集めておけば
ALMでメッセージを配送できる

ユーザXがユーザYを購読する場合
XはYのUIDをキーとしてSkip Graphに挿入する

27
メッセージ配送 | 具体例
Aのフォロワー

Bのフォロワー

Cのフォロワー

C

B
A 分自身のキーは
自
UID:初めから挿入
10
UID: 20

UID: 30

フォロー関係を表したSkip Graph(Level 0部分)
...
メッセージ配送 | 具体例
Aのフォロワー

Bのフォロワー

Cのフォロワー

Aを購読

B

A

C

B

UID: 10

UID: 20

UID: 30

BがAのUID(10)を挿入
フォロー関係を表したSkip Graph(...
メッセージ配送 | 具体例
Aのフォロワー

B

A

Bのフォロワー Cを購読
Cのフォロワー

C

B

UID: 10

UID: 20

A

UID: 30

AがCのUID(30)を挿入
フォロー関係を表したSkip Graph...
メッセージ配送 | 具体例
Aのフォロワー

Bのフォロワー

B C

A
UID: 10

A C

B

Cのフォロワー

C

A

UID: 30

UID: 20

フォロー関係を表したSkip Graph(Level 0部分)
A...
メッセージ配送 | 具体例
バルス!

Aのフォロワー

B C

A
UID: 10

Bのフォロワー

A C

B

Cのフォロワー

C

A

UID: 30

UID: 20

Bはこの範囲にALMする

フォロー関係を表したSki...
メッセージ配送 | まとめ


購読
◦ 購読したいユーザのUIDを
キーとしてSkip Graphに挿入



配送
◦ 自身のUIDをキーの範囲としてALM



フォロワーが多くても効率が良い
◦ ホップ数は対数オーダー



配...
メッセージアーカイブの実現法
メッセージアーカイブ | 背景(1)
過去のメッセージをいつでも取得したい

発信者自身が
過去のメッセージ
を保持
これだけでは発信者自身が
オフラインの場合は取得できない
35
メッセージアーカイブ | 背景(2)
発信者自身がオフラインの場合は取得できない

他のノード上に
メッセージの複製を持つ必要がある
DHTに複製を配置する?

コストがかかる
36
メッセージアーカイブ | 提案方式(1)
複製のためにコストをかけたくない

(オンラインの)フォロワーには
メッセージが配送されている
配送されたメッセージを複製
として保持しておけば良い

全員オフラインの場合に問題

37
メッセージアーカイブ | 提案方式(2)
発信者もそのフォロワーもすべて
オフラインだった場合はどうする?

オンラインのフォロワー数を一定以上に保つ

オンラインのフォロワー数が一定以下に
なったら誰かに強制的に購読させる
38
メッセージアーカイブ | 具体例
Aのフォロワー

A

B C

Bのフォロワー

B

Cのフォロワー

A C

C

A

UID: 30
UID: 10 Cのオンラインの
UID: 20
フォロワーが少ないGraph(Level 0部...
メッセージアーカイブ | まとめ


フォロワーがメッセージの複製を保持する
◦ 余計なコストがかからない



常に一定数以上のフォロワー数を保つ
◦ 少なくなると強制的に購読させる

◦ フォロワーの右端のノードが
フォロワー数の判定と...
全文検索と検索ストリームの実現法
全文検索 | 概要


過去のメッセージを検索
KiZUNAではサーバがないためメッセージを
ユーザが分散して保持している
分散しているメッセージを
効率よく探す必要がある

BF Skip Graphを用いる
42
全文検索 | BF Skip Graphの概要


P2Pネットワーク上で全文検索を行うしくみ
◦ 各ノードは保持しているドキュメントを
Bloom Filterに登録
◦ 各ノードのBloom Filterを階層的に集約

IOT研究会なう...
全文検索 | BF Skip Graphの構造
Level 3

Level 2

Level 1

Level 0

10

20

30

40

50

60

30
20

10

70
40

20 30
10
10

70

80
...
全文検索 | BF Skip Graphの構造
Level 3

Level 2

Level 1

Level 0

10

「バルス」を検索 60
20
40
80
30
50
70

30
20

10

70
40

20 30
10
...
全文検索 | KiZUNAでは…


全文検索用の新たなSkip Graphを構成する



発信者自身がオフラインでも検索したい
◦ 複製を保持しているノードも参加
◦ フォロワーが一部だけが参加(で十分)

46
検索ストリーム | 概要


Push型検索
◦ 検索キーワードを登録しておく



検索ストリーム専用のBF Skip Graphを構成
◦ 検索キーワードをBloom Filterに登録する

◦ メッセージ配送時にマッチするかを調べ配...
検索ストリーム | 具体例
Level 3

Level 2

Level 1

Level 0

10

「IOT研究会なう」をツイート
20
40
60
80
30
50
70

30
20

70
40

10
20 30
10
10

...
発信者認証について
発信者認証 | 概要(1)
サーバなしで
ユーザを認証する必要がある

メッセージにデジタル署名を付与する

改ざん・詐称を
チェックできる

ユーザの公開鍵は
DHTに保存
50
発信者認証 | 概要(2)
通常のDHTは誰
でもデータを
書き換え可能

公開鍵が
改ざんされる
DHTにデジタル署名を付与
署名が付いているデータの書き換えは
署名付きのリクエストが必要

51
メッセージ配送のまとめ
メッセージ配送のまとめ
Aのフォロワーへ配送

A

IOT研究会
なう #IPSJ

ハッシュタグを抽出し配送
形態素解析しマッチする
BFを持つユーザへ配送

メッセージ配送用

Aのメッセージを受信した
全文検索用
ユーザがAの公開鍵で検...
実装について
KiZUNA | 実装


P2P基盤ソフトウェアPIAX上に実装中
◦ 実装済み
 Skip Graph
 BF Skip Graph
 メッセージ配送機能
 発信者認証機能

55
まとめ


Pure P2Pでマイクロブログサービスを実現する
方法を示した
◦ メッセージ配送にはSkip Graph上のALMを使用
◦ アーカイブ機能(複製機能)
◦ 全文検索・検索ストリームにはBF Skip Graphを使用


...
Upcoming SlideShare
Loading in …5
×

KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現

841 views
673 views

Published on

現在実装中のP2Pネットワークを用いた分散型マイクロブログサービスKiZUNAの設計について述べる.KiZUNAはサーバを必要としないPure P2P型のシステムとして実現する.メッセージの購読と配送に構造化P2Pネットワークの1つであるSkip Graphを用いたALM(Application Level Multicast)を用いる.また,ハッシュタグ,全文検索,検索ストリーム,複製管理などの方式についても述べる.

This paper describes a design of KiZUNA, a pure P2P-based microblogging service. Subscription and distribution of messages are implemented using ALM (Application Level Multicast) over a skip graph, a structured P2P network. Hashtags, full-text search, search stream, and replica management are also discussed.

論文PDFは http://goo.gl/xoSEPb

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
841
On SlideShare
0
From Embeds
0
Number of Embeds
73
Actions
Shares
0
Downloads
2
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現

  1. 1. KiZUNA: P2Pネットワークを用いた マイクロブログサービスの実現 大阪市立大学 創造都市研究科 播磨 裕太 安倍 広多 石橋 勇人 松浦 敏雄
  2. 2. 研究背景  マイクロブログサービスの普及 ◦ Twitter, Weibo, Yammer, etc…  Twitter ◦ 月間アクティブユーザ: 2億4千万人超 ◦ 日間ツイート数: 5億ツイート  既存のマイクロブログサービスは サーバクライアントモデルで実現 2
  3. 3. 研究背景 | 問題点(1)  サーバクライアントモデル アクセスが サーバに集中 サーバがダウンすると サービスが停止する (単一故障点の存在) ... バルス! バルス! バルス! バルス! 3
  4. 4. 研究背景 | 問題点(2)  高い運用コスト ◦ 大量のサーバなどが必要  Twitter Inc. ◦ 2013年第4四半期(10月-12月): 517億円の赤字 4
  5. 5. 研究目的  Pure P2Pでマイクロブログサービスを実現 ◦ 全ユーザの端末でTwitterのサブセットを実現 ◦ サーバ不要 ◦ 名称: KiZUNA  メリット ◦ 耐故障性(単一故障点の排除) ◦ 高いスケーラビリティ ◦ 低い運用コスト 5
  6. 6. KiZUNAで実現するTwitterの機能
  7. 7. Twitter | ツイート 140文字以内の短文 (ツイート)を投稿できる 7
  8. 8. Twitter | フォロー(購読) フォローしてい るユーザらのツ イート 8
  9. 9. Twitter | ハッシュタグ ”#”から始まる文字列 9
  10. 10. Twitter | ハッシュタグ 「#IPSJ」に 言及している ツイート 10
  11. 11. Twitter | 全文検索 「ソチ」を 含むツイート 11
  12. 12. Twitter | 検索ストリーム 「ソチ」を 含むツイート Push型 12
  13. 13. Twitter | ログイン ユーザの認証 13
  14. 14. Twitter | メッセージアーカイブ機能 ユーザの過去の メッセージを取得 14
  15. 15. 本研究の意義
  16. 16. 関連研究  本研究 ツイートをフォロワーに P2Pベースのマイクロブログサービス 配送する機能に該当 西尾らの 戸部らの Megap Cuckoo hone 手法 手法 KiZUNAだけがサポート! Hybrid ハッシュタグや Pure Pure Hybrid P2Pの種類 購読者に 検索ストリームに該当 ○ ○ ○ ○ 配送する機能 KiZUNA Pure ○ 内容に応じた配送 × × × × ○ 全文検索 × × × × ○ メッセージの アーカイブ管理 ○ ○ 不明 不明 ○ 16
  17. 17. 本研究の意義  高機能なマイクロブログサービスを Pure P2Pで実現する方法を明らかにする ◦ マイクロブログサービス = Pub/Subパラダイムに よってモデル化  購読者にメッセージを配送 →トピックベースPub/Sub  内容に応じたメッセージ配送 →コンテンツベースPub/Sub 同時に実現  アーカイブ機能 →アーカイブ機能付きPub/Sub 17
  18. 18. KiZUNAの設計について
  19. 19. KiZUNA | 構造  後で説明 4つのSkip Graphベースの 構造化P2Pネットワークから構成 メッセージ配送用 検索ストリーム用 全文検索用 DHT用 すべてをSkip Graphベースで 実現することで実装コストを下げる 19
  20. 20. KiZUNA | ユーザの識別(1) Twitterではスクリーンネーム (ユーザが任意に設定可能で重複しない) KiZUNAでも使うが… 重複しないことを保証したいが サーバがないため難しい 20
  21. 21. KiZUNA | ユーザの識別(2) 重複しないIDが必要 乱数で生成した長いビット列を IDとする(これをUIDと呼ぶ) UIDの例: 582cd103-ee87-4b14-b57f-848a248de58c UIDとスクリーンネームを併用 21
  22. 22. メッセージ配送の実現法
  23. 23. メッセージ配送 | 概要(1) バルス! A Aのフォロワー B C ... X フォロワー全員に配送しなければならない 一人一人に送るのは効率が悪い Twitterで最もフォローされている ユーザのフォロワー数は5000万人超 23
  24. 24. メッセージ配送 | 概要(2) 一人一人に送るのは効率が悪い まとめて送信する P2Pネットワーク(Skip Graph)上で ALM(Application Level Multicast)により配送 24
  25. 25. メッセージ配送 | Skip Graphの構造 Level 3 Level 2 10 20 30 40 50 60 30 20 70 40 10 70 80 20 30 50 80 60 50 70 キー(昇順に並ぶ) 同一のコンピュータ(ノード) 10 40 60 80 Level 1 Level 0 10 20 30 40 50 60 70 80 000 100 110 010 101 001 111 011 25
  26. 26. メッセージ配送 | Skip GraphのALM Level 3 10 20 [50, 80]へ 送信 Level 2 Level 1 Level 0 30 30 40 50 60 ① ホップ数: O (log n ) 20 50 40 10 60 70 80 70 80 ② n : ネットワーク内の総ノード数 20 30 10 50 40 ② 70 60 ③ 80 10 20 30 40 50 60 70 80 000 100 110 010 101 001 111 011 26
  27. 27. メッセージ配送 | 詳細(1) 購読者をある範囲に集めておけば ALMでメッセージを配送できる ユーザXがユーザYを購読する場合 XはYのUIDをキーとしてSkip Graphに挿入する 27
  28. 28. メッセージ配送 | 具体例 Aのフォロワー Bのフォロワー Cのフォロワー C B A 分自身のキーは 自 UID:初めから挿入 10 UID: 20 UID: 30 フォロー関係を表したSkip Graph(Level 0部分) キーを挿入しているユーザ 10 20 30 A B C 28
  29. 29. メッセージ配送 | 具体例 Aのフォロワー Bのフォロワー Cのフォロワー Aを購読 B A C B UID: 10 UID: 20 UID: 30 BがAのUID(10)を挿入 フォロー関係を表したSkip Graph(Level 0部分) 10 10 20 30 A B B C 29
  30. 30. メッセージ配送 | 具体例 Aのフォロワー B A Bのフォロワー Cを購読 Cのフォロワー C B UID: 10 UID: 20 A UID: 30 AがCのUID(30)を挿入 フォロー関係を表したSkip Graph(Level 0部分) 10 10 20 30 30 A B B C A 30
  31. 31. メッセージ配送 | 具体例 Aのフォロワー Bのフォロワー B C A UID: 10 A C B Cのフォロワー C A UID: 30 UID: 20 フォロー関係を表したSkip Graph(Level 0部分) Aのフォロワー Bのフォロワー Cのフォロワー 10 10 10 20 20 20 30 30 A B C B C A C A 31
  32. 32. メッセージ配送 | 具体例 バルス! Aのフォロワー B C A UID: 10 Bのフォロワー A C B Cのフォロワー C A UID: 30 UID: 20 Bはこの範囲にALMする フォロー関係を表したSkip Graph(Level 0部分) 10 10 10 20 20 20 30 30 A B C B C A C A 32
  33. 33. メッセージ配送 | まとめ  購読 ◦ 購読したいユーザのUIDを キーとしてSkip Graphに挿入  配送 ◦ 自身のUIDをキーの範囲としてALM  フォロワーが多くても効率が良い ◦ ホップ数は対数オーダー  配送時に購読していないノードを経由しない ※ハッシュタグに関する配送については割愛 33
  34. 34. メッセージアーカイブの実現法
  35. 35. メッセージアーカイブ | 背景(1) 過去のメッセージをいつでも取得したい 発信者自身が 過去のメッセージ を保持 これだけでは発信者自身が オフラインの場合は取得できない 35
  36. 36. メッセージアーカイブ | 背景(2) 発信者自身がオフラインの場合は取得できない 他のノード上に メッセージの複製を持つ必要がある DHTに複製を配置する? コストがかかる 36
  37. 37. メッセージアーカイブ | 提案方式(1) 複製のためにコストをかけたくない (オンラインの)フォロワーには メッセージが配送されている 配送されたメッセージを複製 として保持しておけば良い 全員オフラインの場合に問題 37
  38. 38. メッセージアーカイブ | 提案方式(2) 発信者もそのフォロワーもすべて オフラインだった場合はどうする? オンラインのフォロワー数を一定以上に保つ オンラインのフォロワー数が一定以下に なったら誰かに強制的に購読させる 38
  39. 39. メッセージアーカイブ | 具体例 Aのフォロワー A B C Bのフォロワー B Cのフォロワー A C C A UID: 30 UID: 10 Cのオンラインの UID: 20 フォロワーが少ないGraph(Level 0部分) フォロー関係を表したSkip Cのフォロワー 無作為にオンラインの 10 10 10 20 20 20 ユーザを選ぶ 30 30 30 A B C B C A Cを強制的に購読させる C A X 39
  40. 40. メッセージアーカイブ | まとめ  フォロワーがメッセージの複製を保持する ◦ 余計なコストがかからない  常に一定数以上のフォロワー数を保つ ◦ 少なくなると強制的に購読させる ◦ フォロワーの右端のノードが フォロワー数の判定と強制購読を担当 40
  41. 41. 全文検索と検索ストリームの実現法
  42. 42. 全文検索 | 概要  過去のメッセージを検索 KiZUNAではサーバがないためメッセージを ユーザが分散して保持している 分散しているメッセージを 効率よく探す必要がある BF Skip Graphを用いる 42
  43. 43. 全文検索 | BF Skip Graphの概要  P2Pネットワーク上で全文検索を行うしくみ ◦ 各ノードは保持しているドキュメントを Bloom Filterに登録 ◦ 各ノードのBloom Filterを階層的に集約 IOT研究会なう 形態素解析 IOT 研究 会 なう 登録 Bloom Filter 43
  44. 44. 全文検索 | BF Skip Graphの構造 Level 3 Level 2 Level 1 Level 0 10 20 30 40 50 60 30 20 10 70 40 20 30 10 10 70 80 50 60 50 40 80 70 60 80 20 30 40 50 60 70 80 44
  45. 45. 全文検索 | BF Skip Graphの構造 Level 3 Level 2 Level 1 Level 0 10 「バルス」を検索 60 20 40 80 30 50 70 30 20 10 70 40 20 30 10 10 50 80 60 50 40 70 60 80 20 30 40 50 60 70 80 バルス バルス バルス 45
  46. 46. 全文検索 | KiZUNAでは…  全文検索用の新たなSkip Graphを構成する  発信者自身がオフラインでも検索したい ◦ 複製を保持しているノードも参加 ◦ フォロワーが一部だけが参加(で十分) 46
  47. 47. 検索ストリーム | 概要  Push型検索 ◦ 検索キーワードを登録しておく  検索ストリーム専用のBF Skip Graphを構成 ◦ 検索キーワードをBloom Filterに登録する ◦ メッセージ配送時にマッチするかを調べ配送する 47
  48. 48. 検索ストリーム | 具体例 Level 3 Level 2 Level 1 Level 0 10 「IOT研究会なう」をツイート 20 40 60 80 30 50 70 30 20 70 40 10 20 30 10 10 50 80 60 50 40 70 60 80 20 30 40 50 60 70 80 IOT IA IPSJ なう SITE 研究 加賀 48
  49. 49. 発信者認証について
  50. 50. 発信者認証 | 概要(1) サーバなしで ユーザを認証する必要がある メッセージにデジタル署名を付与する 改ざん・詐称を チェックできる ユーザの公開鍵は DHTに保存 50
  51. 51. 発信者認証 | 概要(2) 通常のDHTは誰 でもデータを 書き換え可能 公開鍵が 改ざんされる DHTにデジタル署名を付与 署名が付いているデータの書き換えは 署名付きのリクエストが必要 51
  52. 52. メッセージ配送のまとめ
  53. 53. メッセージ配送のまとめ Aのフォロワーへ配送 A IOT研究会 なう #IPSJ ハッシュタグを抽出し配送 形態素解析しマッチする BFを持つユーザへ配送 メッセージ配送用 Aのメッセージを受信した 全文検索用 ユーザがAの公開鍵で検証 検索ストリーム用 DHT用 53
  54. 54. 実装について
  55. 55. KiZUNA | 実装  P2P基盤ソフトウェアPIAX上に実装中 ◦ 実装済み  Skip Graph  BF Skip Graph  メッセージ配送機能  発信者認証機能 55
  56. 56. まとめ  Pure P2Pでマイクロブログサービスを実現する 方法を示した ◦ メッセージ配送にはSkip Graph上のALMを使用 ◦ アーカイブ機能(複製機能) ◦ 全文検索・検索ストリームにはBF Skip Graphを使用  これにより… ◦ 耐故障性(単一故障点の排除) ◦ 高いスケーラビリティ 今後評価予定 ◦ 低い運用コスト 56

×