Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
祐司 伊藤
3,294 views
PIAXで作る P2Pネットワーク
CMU #33の発表資料です。
Software
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 18
2
/ 18
3
/ 18
4
/ 18
5
/ 18
6
/ 18
7
/ 18
8
/ 18
9
/ 18
10
/ 18
11
/ 18
12
/ 18
13
/ 18
14
/ 18
15
/ 18
16
/ 18
17
/ 18
18
/ 18
More Related Content
PDF
Webブラウザで使えるいろんな処理系
by
祐司 伊藤
PDF
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
by
祐司 伊藤
PDF
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
by
Kei Nakazawa
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
by
Hisateru Tanaka
PPTX
3分で作るストリーム処理基盤~kafka+flink on docker編~
by
Koichi Tanaka
PDF
asm.jsとWebAssemblyって実際なんなの?
by
Yosuke Onoue
PDF
いまどきのPHP開発現場 -2015年秋-
by
Masashi Shinbara
PDF
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
by
Tomoki Hasegawa
Webブラウザで使えるいろんな処理系
by
祐司 伊藤
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
by
祐司 伊藤
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
by
Kei Nakazawa
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
by
Hisateru Tanaka
3分で作るストリーム処理基盤~kafka+flink on docker編~
by
Koichi Tanaka
asm.jsとWebAssemblyって実際なんなの?
by
Yosuke Onoue
いまどきのPHP開発現場 -2015年秋-
by
Masashi Shinbara
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
by
Tomoki Hasegawa
What's hot
PDF
RespClient - Minimal Redis Client for PowerShell
by
Yoshifumi Kawai
PDF
chat bot framework for Java8
by
masahitojp
PPTX
コマンドラインからplistファイルを扱う
by
Yusuke Kawakami
PPTX
node-gypを使ったネイティブモジュールの作成
by
shigeki_ohtsu
PDF
うわ…私のEmacs力、低すぎ...?
by
Masahiro Sano
PDF
UniRx - Reactive Extensions for Unity
by
Yoshifumi Kawai
PDF
フレームワークを使うべき 3 つの理由
by
Kenichi Mukai
PDF
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
by
Yoshifumi Kawai
PDF
The History of Reactive Extensions
by
Yoshifumi Kawai
PDF
Build 番号の自動更新スクリプトについて #cocoa_kansai
by
Tomohiro Kumagai
PDF
Async DeepDive basics
by
Kouji Matsui
PDF
C#の強み、或いは何故PHPから乗り換えるのか
by
Yoshifumi Kawai
PDF
An Internal of LINQ to Objects
by
Yoshifumi Kawai
PDF
Hashicorpツールズ
by
Uchio Kondo
PDF
PHPデプロイツールの世界
by
Yuuki Takezawa
PDF
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
by
Yuta Matsumura
PDF
Visual studio 14 CTP2 概要
by
Yoshihisa Ozaki
PDF
Pythonで始めるWebアプリケーション開発
by
Takahiro Kubo
PPTX
活動報告9 laravel5入門-
by
vx-pc-club
RespClient - Minimal Redis Client for PowerShell
by
Yoshifumi Kawai
chat bot framework for Java8
by
masahitojp
コマンドラインからplistファイルを扱う
by
Yusuke Kawakami
node-gypを使ったネイティブモジュールの作成
by
shigeki_ohtsu
うわ…私のEmacs力、低すぎ...?
by
Masahiro Sano
UniRx - Reactive Extensions for Unity
by
Yoshifumi Kawai
フレームワークを使うべき 3 つの理由
by
Kenichi Mukai
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
by
Yoshifumi Kawai
The History of Reactive Extensions
by
Yoshifumi Kawai
Build 番号の自動更新スクリプトについて #cocoa_kansai
by
Tomohiro Kumagai
Async DeepDive basics
by
Kouji Matsui
C#の強み、或いは何故PHPから乗り換えるのか
by
Yoshifumi Kawai
An Internal of LINQ to Objects
by
Yoshifumi Kawai
Hashicorpツールズ
by
Uchio Kondo
PHPデプロイツールの世界
by
Yuuki Takezawa
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
by
Yuta Matsumura
Visual studio 14 CTP2 概要
by
Yoshihisa Ozaki
Pythonで始めるWebアプリケーション開発
by
Takahiro Kubo
活動報告9 laravel5入門-
by
vx-pc-club
More from 祐司 伊藤
PDF
Container Storage Interface のすべて
by
祐司 伊藤
PDF
C/C++とWebAssemblyを利用したライブラリ開発
by
祐司 伊藤
PDF
C++からWebRTC (DataChannel)を利用する
by
祐司 伊藤
PDF
詳説WebAssembly
by
祐司 伊藤
PDF
シンプル Processing !
by
祐司 伊藤
PDF
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
by
祐司 伊藤
PDF
PROCESS WARP
by
祐司 伊藤
PDF
PROCESS WARP
by
祐司 伊藤
PDF
新しい分散実行の仕組み PROCESS WARPについて
by
祐司 伊藤
Container Storage Interface のすべて
by
祐司 伊藤
C/C++とWebAssemblyを利用したライブラリ開発
by
祐司 伊藤
C++からWebRTC (DataChannel)を利用する
by
祐司 伊藤
詳説WebAssembly
by
祐司 伊藤
シンプル Processing !
by
祐司 伊藤
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
by
祐司 伊藤
PROCESS WARP
by
祐司 伊藤
PROCESS WARP
by
祐司 伊藤
新しい分散実行の仕組み PROCESS WARPについて
by
祐司 伊藤
PIAXで作る P2Pネットワーク
1.
PIAXで作る P2Pネットワーク 伊藤 祐司 2015/10/17 Creators
MeetUP #33
2.
自己紹介 伊藤 祐司 バックエンドの設計 開発 フレームワークの作成
バイナリ・テキスト変換 クローラー アルゴリズム 仮想マシン 下北沢OSSカフェでPROCESS WARPというシステムを作っています http://www.processwarp.org/ GitHub llamerada-jp facebook ito.yuuji blog http://llamerad-jp.hatenablog.com/
3.
Client/Server型 Peer-to-peer型 通信がサーバ経由で 行われる 特定サーバを持たない ネットワーク Server Client Peer
4.
分散アルゴリズム 繋げるだけでは利用が難しい Socket, WebRTCも繋ぐだけ 探すアルゴリズムが必要 ●●属性を持つPeerを探す 永続化、保存するアルゴリズムが必要 分散ハッシュテーブル(DHT), Key-Valueスト ア
5.
アルゴリズムが違う C/S → 中央集中
P2P → 分散 Server Client Peer
6.
PIAX http://piax.org/ 大阪大学とNICTで作ったP2Pフ レームワーク@Java Peer探索ができる Key-Valueストアが使える エージェント機構(今回は省略) ver2.2.0まではMIT, var3.0か らはAGPL(今回はver2.2.0)
7.
サンプル https://github.com/llamerada-jp/piax- sample コマンドラインから対話形式でPIAXの機能を利 用する実験用アプリケーション スライドは該当機能のコードを切り貼りしてい るので注意!!
8.
接続しよう 既に接続しているPeerに接続要求を出す 処理能力に余裕があり、寿命が長いPeerの一覧を 使ったり、サービスプロバイダが固定IPでseed役 をやったり // org.piax.trans.common.PeerLocator : //
peerのIDを管理する抽象クラス // org.piax.trans.ts.tcp.TcpLocator : // ↑の具象クラス、TCP接続するときに使う PeerLocator local = new TcpLocator(<自分のIP&Port>); PeerLocator seed = new TcpLocator(<seedのIP&Port>); // org.piax.ov.Peer : Peerそのもの // seedはcollectionで複数渡すことも可能 Peer peer = new Peer(local, seed); peer.online();
9.
OverlayMgr mgr =
peer.getOverlayMgr(); RPCWrapper rpc = mgr.getRPCWrapper(); PeerId peerId = new PeerId(<送信先>); Object ret = rpc.remoteCall( peerId, Receiver.SERVICE_NAME, "recv", <送信メッセージ>); 単一PeerへのRPC // 受信側のPeerId System.out.println(peer.getPeerId()); // 受信用クラス public class Receiver implements OldRPCService { static String SERVICE_NAME = <サービス名>; @Override public String getServiceName() { return SERVICE_NAME; } public Object recv(Object message) { // 受信してからの処理 return <応答メッセージ>; } } // 受信用インスタンスを登録 OverlayMgr mgr = peer.getOverlayMgr(); RPCWrapper rpc = mgr.getRPCWrapper(); Receiver receiver = new Receiver(); rpc.register(receiver); sender receiver Key-Valueストアなどに 入れて渡したり
10.
マルチキャスト PIAXのマルチキャストでは●●属性をもつPeer にメッセージを送る 属性の種類によってオーバーレイ(=検索アルゴ リズム)を変える へび / ハリネズミ いぬ
/ ねこ / ウォンバット ねこ / やどかり ぞう / ハリネズミ ねこ属性のPeerに送信
11.
マルチキャスト // 属性の型によって適切なオーバーレイ String ovClassName
= mgr.getOverlayFromKeyType(<属性>); if (ovClassName == null) ovClassName = MSkipGraph.class.getName(); // マルチキャスト // Multi-key Skip Graphの場合、属性は範囲検索可能 ReturnSet<Object> rset = mgr.forwardQuery( ovClassName, new Range(<属性>, <属性>), <送信メッセージ>); // マルチキャスト結果の取得 while (rset.hasNext()) { try { Object ret = rset.getNext( OvConfigValues. returnSetGetNextTimeout)); } catch (Exception e) { // エラー処理 } } public class Callback implements OverlayCallback { @Override public Object execQuery(Object arg0, Object arg1) { // メッセージ受信時の処理 // arg0 : メッセージ受信のトリガとなった属性 // arg1 : 受信メッセージ return <応答メッセージ>; } @Override public ReturnSet<Object> execQuery( Set<Comparable<?>> arg0, Object arg1) { // ↑と同様 return <応答メッセージ>; } // 他にも幾つかあるけど省略 } // 受信用インスタンスを登録 Callback callback = new Callback(); mgr.registerCallback(callback); // 属性を設定 String ovClassName = mgr.getOverlayFromKeyType(<属性>); if (ovClassName == null) ovClassName = MSkipGraph.class.getName(); mgr.addKey(ovClassName, <属性>); sender receiver
12.
アルゴリズムの特徴 LL-Net 地理的探索(緯度経度での探索みたいなこと)が得意 LL-Netの概要 Multi-key Skip Graph 順序付け可能な属性の範囲検索が可能 PIAXでは随所にこのアルゴリズムが使われているようだ 単一ピアに複数キーを保持可能とする
Skip Graph 拡張 の提案
13.
アルゴリズムの特徴 PIAXには実装していないけど有名なもの Chord 円状スキップリスト+ハッシュ、負荷分散が可能 Chord: A Scalable
Peer-to-Peer Lookup Service for Internet Applications ChordアルゴリズムによるDHT入門 Kademlia Bit-torrentなどファイル共有系アプリケーションで利用されている場合が多 い Kademlia: A Peer-to-peer Information System Based on the XOR Metric DHT Kademlia
14.
Key-Valueストア ちゃんと切断した場合、値は他のPeerに保存さ れる 突然の切断や耐障害性は不明 DHT dht =
mgr.getDHT(); dht.put(<Key>, <Value>); DHT dht = mgr.getDHT(); Object value = dht.get(<Key>); put get
15.
あとしまつ peer.offline(); peer.fin();
16.
いろいろ PIAXはアルゴリズムの追加を意識した作りに なっているようで、独自のOverlay、プロトコ ル追加も可能なようだ。 アルゴリズムの論文はあるけどAPIドキュメン トが無いので、コードを結構読む必要あり。
17.
まとめ SocketやWebRTCを生で使ってもP2Pの恩恵は少 ない。 PIAXで探索アルゴリズムを利用できる。 目的にあったルーティングアルゴリズムを使 う。 いざとなったら自分で拡張する。
18.
以上 ありがとうございました
Download