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

Post on 22-Jun-2015

422 views 3 download

description

現在実装中の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

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

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

大阪市立大学 創造都市研究科播磨 裕太 安倍 広多石橋 勇人 松浦 敏雄

2

研究背景マイクロブログサービスの普及

◦Twitter, Weibo, Yammer, etc…

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

既存のマイクロブログサービスはサーバクライアントモデルで実現

3

研究背景 | 問題点 (1)

サーバクライアントモデル

...

アクセスがサーバに集中

サーバがダウンするとサービスが停止する(単一故障点の存在)

バルス! バルス! バルス! バルス!

4

研究背景 | 問題点 (2)

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

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

5

研究目的Pure P2P でマイクロブログサービスを実現

◦全ユーザの端末で Twitter のサブセットを実現◦サーバ不要◦名称 : KiZUNA

メリット◦耐故障性(単一故障点の排除)◦高いスケーラビリティ◦低い運用コスト

KiZUNA で実現する Twitter の機能

7

Twitter | ツイート

140文字以内の短文(ツイート)を投稿できる

8

Twitter | フォロー(購読)

フォローしているユーザらのツイート

9

Twitter | ハッシュタグ

”#”から始まる文字列

10

Twitter | ハッシュタグ

「#IPSJ」に言及しているツイート

11

Twitter | 全文検索

「ソチ」を含むツイート

12

Twitter | 検索ストリーム

「ソチ」を含むツイート

Push型

13

Twitter | ログイン

ユーザの認証

14

Twitter | メッセージアーカイブ機能

ユーザの過去のメッセージを取得

本研究の意義

16

関連研究P2P ベースのマイクロブログサービス

Cuckoo

Megaphone

西尾らの手法

戸部らの手法

KiZUNA

P2Pの種類 Hybrid Pure Hybrid Pure Pure

購読者に配送する機能

○ ○ ○ ○ ○

内容に応じた配送 × × × × ○

全文検索 × × × × ○

メッセージのアーカイブ管理

○ ○ 不明 不明 ○

本研究ツイートをフォロワーに配送する機能に該当

ハッシュタグや検索ストリームに該当

KiZUNAだけがサポート!

17

本研究の意義高機能なマイクロブログサービスを

Pure P2P で実現する方法を明らかにする◦マイクロブログサービス = Pub/Sub パラダイム

によってモデル化 購読者にメッセージを配送

→トピックベース Pub/Sub 内容に応じたメッセージ配送

→コンテンツベース Pub/Sub アーカイブ機能

→アーカイブ機能付き Pub/Sub

同時に実現

KiZUNA の設計について

19

KiZUNA | 構造4 つの Skip Graph ベースの

構造化 P2P ネットワークから構成

すべてを Skip Graphベースで実現することで実装コストを下げる

後で説明

DHT用

検索ストリーム用

全文検索用

メッセージ配送用

20

KiZUNA | ユーザの識別 (1)

Twitterではスクリーンネーム(ユーザが任意に設定可能で重複しない)

KiZUNAでも使うが…重複しないことを保証したいがサーバがないため難しい

21

KiZUNA | ユーザの識別 (2)

重複しない IDが必要

乱数で生成した長いビット列をIDとする(これを UIDと呼ぶ)

UIDとスクリーンネームを併用

UIDの例 : 582cd103-ee87-4b14-b57f-848a248de58c

メッセージ配送の実現法

23

メッセージ配送 | 概要 (1)

A B C X

Aのフォロワーバルス!

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

一人一人に送るのは効率が悪い

...

Twitterで最もフォローされているユーザのフォロワー数は 5000万人

24

メッセージ配送 | 概要 (2)

一人一人に送るのは効率が悪い

まとめて送信する

P2Pネットワーク (Skip Graph)上でALM(Application Level Multicast)により

配送

25

メッセージ配送 | Skip Graph の構造

25

10000

20100

30110

40010

50101

60001

70111

80011

10

20

30 4

0

50 6

0

70 8

0

10

20

30

40

50 6

0

70

80

Level 0

Level 2

Level 1

Level 3

10

20 3

0

40 5

0

60 7

0

80

同一のコンピュータ(ノード)キー(昇順に並ぶ)

26

メッセージ配送 | Skip Graph の ALM

10000

20100

30110

40010

50101

60001

70111

80011

10

20

30 4

0

50 6

0

70 8

0

10

20

30

40

50 6

0

70

80

Level 0

Level 2

Level 1

Level 3

10

20 3

0

40 5

0

60 7

0

80[50, 80]

へ送信

② ③

ホップ数 : )(lognO

: ネットワーク内の総ノード数n

27

メッセージ配送 | 詳細 (1)

購読者をある範囲に集めておけばALMでメッセージを配送できる

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

入する

28

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

B

Cのフォロワー

UID: 10

UID: 20

UID: 30

10

20

30

フォロー関係を表した Skip Graph(Level 0部分)

A

B C

C

キーを挿入しているユーザ

A自分自身のキーは初めから挿入

Bのフォロワー

29

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

B

B

Cのフォロワー

UID: 10

UID: 20

UID: 30

10

10

20

30

フォロー関係を表した Skip Graph(Level 0部分)

A B

B C

C

Bが Aの UID(10)を挿入

Aを購読A

Bのフォロワー

30

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

B

B

Cのフォロワー

AUID: 10

UID: 20

UID: 30

10

10

20

30

30

フォロー関係を表した Skip Graph(Level 0部分)

A AB

B C

C

Aが Cの UID(30)を挿入

A

BのフォロワーCを購読

31

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

B C

B

A C

Cのフォロワー

A

C

UID: 10

UID: 20

UID: 30

10

10

10

20

20

20

30

30

フォロー関係を表した Skip Graph(Level 0部分)

A A AB

B C

C C

Aのフォロワー Bのフォロワー Cのフォロワー

A

Bのフォロワー

32

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

B C

Bのフォロワー

B

A C

Cのフォロワー

A

C

UID: 10

UID: 20

UID: 30

10

10

10

20

20

20

30

30

フォロー関係を表した Skip Graph(Level 0部分)

A A AB

B C

C C

A

バルス!

Bはこの範囲に ALMする

33

メッセージ配送 | まとめ購読

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

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

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

配送時に購読していないノードを経由しない

※ ハッシュタグに関する配送については割愛

メッセージアーカイブの実現法

35

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

発信者自身が過去のメッセージ

を保持

これだけでは発信者自身がオフラインの場合は取得できない

36

メッセージアーカイブ | 背景 (2)

発信者自身がオフラインの場合は取得できない

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

DHTに複製を配置する ?

コストがかかる

37

メッセージアーカイブ | 提案方式 (1)

複製のためにコストをかけたくない

(オンラインの)フォロワーにはメッセージが配送されている

配送されたメッセージを複製として保持しておけば良い

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

38

メッセージアーカイブ | 提案方式 (2)

発信者もそのフォロワーもすべてオフラインだった場合はどうする ?

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

オンラインのフォロワー数が一定以下になったら誰かに強制的に購読させる

39

メッセージアーカイブ | 具体例Aのフォロワー

B C

Bのフォロワー

B

A C

Cのフォロワー

A

C

UID: 10

UID: 20

UID: 30

10

10

10

20

20

20

30

30

フォロー関係を表した Skip Graph(Level 0部分)

A A AB

B C

C C

Cのフォロワー

ACのオンラインのフォロワーが少ない

X

30

無作為にオンラインのユーザを選ぶ

Cを強制的に購読させる

40

メッセージアーカイブ | まとめフォロワーがメッセージの複製を保持する

◦余計なコストがかからない

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

フォロワー数の判定と強制購読を担当

全文検索と検索ストリームの実現法

42

全文検索 | 概要過去のメッセージを検索

KiZUNAではサーバがないためメッセージをユーザが分散して保持している

分散しているメッセージを効率よく探す必要がある

BF Skip Graphを用いる

43

全文検索 | BF Skip Graph の概要

P2P ネットワーク上で全文検索を行うしくみ◦各ノードは保持しているドキュメントを

Bloom Filter に登録◦各ノードの Bloom Filter を階層的に集約IOT研究会なう

IOT形態素解析

研究 会 なう登録

Bloom Filter

44

全文検索 | BF Skip Graph の構造

44

10

20

30

40

50

60

70

80

10

20

30 4

0

50 6

0

70 8

0

10

20

30

40

50 6

0

70

80

Level 2

Level 1

Level 3

10

20 3

0

40 5

0

60 7

0

80

Level 0

45

全文検索 | BF Skip Graph の構造

45

10

20

30

40

50

60

70

80

10

20

30 4

0

50 6

0

70 8

0

10

20

30

40

50 6

0

70

80

Level 2

Level 1

Level 3

10

20 3

0

40 5

0

60 7

0

80

Level 0

バルス バルス バルス

「バルス」を検索

46

全文検索 | KiZUNA では…全文検索用の新たな Skip Graph を構成する

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

47

検索ストリーム | 概要Push 型検索

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

検索ストリーム専用の BF Skip Graph を構成◦検索キーワードを Bloom Filter に登録する◦メッセージ配送時にマッチするかを調べ配送す

48

検索ストリーム | 具体例

48

10

20

30

40

50

60

70

80

10

20

30 4

0

50 6

0

70 8

0

10

20

30

40

50 6

0

70

80

Level 2

Level 1

Level 3

10

20 3

0

40 5

0

60 7

0

80

Level 0

IOT なう 研究

「 IOT研究会なう」をツイート

IA SITE 加賀IPSJ

発信者認証について

50

発信者認証 | 概要 (1)

サーバなしでユーザを認証する必要がある

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

ユーザの公開鍵はDHTに保存

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

51

発信者認証 | 概要 (2)

通常の DHTは誰でもデータを書き換え可能

公開鍵が改ざんされる

DHTにデジタル署名を付与署名が付いているデータの書き換えは署名付きのリクエストが必要

メッセージ配送のまとめ

53

メッセージ配送のまとめ

DHT用

検索ストリーム用

全文検索用

メッセージ配送用

A

IOT研究会なう

#IPSJ

Aのフォロワーへ配送

ハッシュタグを抽出し配送

形態素解析しマッチするBFを持つユーザへ配送

Aのメッセージを受信した

ユーザが Aの公開鍵で検証

実装について

55

KiZUNA | 実装P2P 基盤ソフトウェア PIAX 上に実装中

◦実装済み Skip Graph BF Skip Graph メッセージ配送機能 発信者認証機能

56

まとめPure P2P でマイクロブログサービスを実現す

る方法を示した◦メッセージ配送には Skip Graph 上の ALM を使用◦アーカイブ機能(複製機能)◦全文検索・検索ストリームには BF Skip Graph を使

用これにより…

◦耐故障性(単一故障点の排除)◦高いスケーラビリティ◦低い運用コスト

今後評価予定