Your SlideShare is downloading. ×
Perl Ocean
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Perl Ocean

1,392

Published on

Perl Ocean - XMPP based realtime communication framework suite

Perl Ocean - XMPP based realtime communication framework suite

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

  • Be the first to like this

No Downloads
Views
Total Views
1,392
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Perl OceanXMPP based realtime communication framework suite 1
  • 2. 2
  • 3. •@lapis25•Kansai Perl Mongers•mixi inc.•http://id.mixi.jp/lapis25 3
  • 4. About Ocean 4
  • 5. XMPPプロトコルを中⼼心とするリアルタイムコミュニケーション フレームワークスイート 5
  • 6. Agenda•XMPP?•Perl Ocean 6
  • 7. XMPP? 7
  • 8. EXtensible Messaging and Presence Protocol拡張可能なメッセージとプレゼンスのプロトコル 8
  • 9. 歴史• もともとJabberという名前だった • そのためいまでもJabber/XMPPと呼ばれるこ とがある• XMPPと名前を変え,2004/10にRFCとして公表• 2011/3 にアップデート 9
  • 10. 特徴• オープン標準• 永続的コネクション• XMLベース• 中央サーバを持たない• 拡張性 10
  • 11. オープン標準• プロトコルはJabberの頃から公開されていた• 現在はRFCとして公表されている • RFC6120 および  RFC6121• Jabberからだと10年年以上,RFCからでも8年年 11
  • 12. 永続的コネクション• ログインからログアウトまでの間 ひとつのTCPコネクションを維持• コネクション上で メッセージなどのやりとりを双⽅方向に⾏行行う 12
  • 13. XMLベース• 単⼀一の⻑⾧長いXMLとして符号化される• XMLがゆえに冗⻑⾧長• バイナリデータを送る場合は Base64エンコードしてから 送る必要があるので⾮非効率率率 13
  • 14. 中央サーバを持たない• ネットワークの構造は電子メールに似ていて 独自のサーバを立てられる• サーバ間をつなぐ仕様(S2S)が存在する• ローカルのみのネットワークも可能 14
  • 15. 拡張性• Core以外の機能は,RFCではなく XEP (XMPP Extension Protocol)と呼ばれる• グループチャットやボイス・ビデオチャット などの規格もここに含まれる• http://xmpp.org/xmpp-protocols/xmpp- extensions/ 15
  • 16. できること 16
  • 17. Core:RFC6120• tlsによる接続• SASLによる認証(SASL:  RFC4422)• 別XMPPネットワークへの転送(ルーティング) 17
  • 18. IM:RFC6121• プレゼンス(ユーザの現状を表現するデー タ)の送受信• トーク(1対1の会話,メッセージング)• ロスタ(友⼈人情報)のやりとり• サブスクリプション(友⼈人情報の登録や削除) 18
  • 19. 拡張仕様• ユーザプロフィール情報取得 (XEP-0054: vcard-temp)• グループチャット (XEP-0045: Multi-User Chat)• Pub-Sub (XEP-0060: Publish-Subscribe)• Jingle ボイスチャットやビデオチャットのため の拡張  (XEP-0166: Jingle) 19
  • 20. アプリケーション• iChat/iMessage• Google Talk• Facebook Chat• MSN Live• PSN 20
  • 21. 21
  • 22. Perl Ocean 22
  • 23. Lyo Kato⽒氏によって開発されたXMPPプロトコルを中⼼心とするリアルタイムコミュニケーション フレームワークスイート 23
  • 24. 特徴 24
  • 25. Webサービスとのインテグレーションを前提とした設計 現在あるWebサービスに,リアルタイムコミュニケーションを インテグレーションできることを⽬目的とする 25
  • 26. デファクトスタンダードな拡張をひと通り標準サポートしたフルスタックフレームワーク 拡張機能のうちデファクトスタンダードなものや Webサービスとのインテグレーションにおいて必要と思われるものは 最初から組み込む 26
  • 27. ⼤大規模なWebサービスとのインテグレーションに耐えるクラスタサポート 同時接続数の問題の解決,⾮非同期処理理におけるプロセスや サーバーライフサイクルサービスコード更更新頻度度を考慮した クラスタリングをサポート 27
  • 28. WebSocketなどを利利⽤用したHTTP Bindingの独⾃自サポート HTTP  Binding(WebSocket/SSE/XHR)を独⾃自にサポート クラスタサポートと組み合わせて,XMPPと併⽤用することも可能 28
  • 29. 機能• ⼀一対⼀一のメッセンジャ• プレゼンスサービス• グループチャット• イベントのプッシュ通知• オーディオチャット・ビデオチャット 29
  • 30. Oceanの実装状況 30
  • 31. 実装済み機能• 基本的なメッセンジャ機能• グループチャット 31
  • 32. 実装中機能• イベントのプッシュ通知• HTTP Bindingのサポート• オーディオチャット・ビデオチャット 32
  • 33. 組み込まない物• ユーザ情報管理理• フレンド管理理• 購読管理理 33
  • 34. Oceanのクラスタサポート 34
  • 35. スケーリングの課題 35
  • 36. サーバパフォーマンスからくる同時接続数の限界 1サーバあたりの同時接続数の限界 リソースの枯渇,パフォーマンスの低下 36
  • 37. プロセス/スレッドのブロック イベントドリブンなシステムの上で データベースの読み出しなど重い同期処理理が発⽣生すると プロセスやスレッドをブロックしてしまう 37
  • 38. サーバライフサイクルとサービスコード更更新頻度度のミスマッチ 永続的コネクションしているクライアントがある状況では 頻繁的な再起動は避けたい 38
  • 39. 三層構成のアーキテクチャ デリバリサービス メッセージブローカ フロントエンドノード群 39
  • 40. フロントエンドノード群 Ocean Frontend Frontend Frontend Frontend (XMPP) (XMPP) (XMPP) (WebSocket) 40
  • 41. メッセージブローカ Ocean Delivery Server Delivery Server Broker(gearmand) Frontend Frontend 41
  • 42. デリバリサービス WebService Connection Map OceanUserA Home 1 Delivery Server Delivery ServerUserA Work 2UserB Home 1 Broker inbox(gearmand) inbox(gearmand) Frontend Frontend 42
  • 43. WebService Ocean Delivery Delivery Server Server Broker(gearmand)inbox(gearmand) inbox(gearmand) Frontend Frontend 43
  • 44. Oceanで使っている技術•Perl5.8+•Gearman•AnyEvent 44
  • 45. Licence• Artistic Licence• Perlと同じ 45
  • 46. Oceanをためす 46
  • 47. GitHub上で開発 https://github.com/perl-ocean/ocean-core 47
  • 48. ドキュメントも拡充中 http://perl-ocean.github.io/ocean-core 48
  • 49. プロジェクトテンプレートの⽣生成 インテグレーションのための プロジェクトテンプレートを スクリプトで⽣生成できる 49
  • 50. スタンドアロンモード ウェブサービスとのつなぎ込みが必要ない スタンドアロンモードも実装 50
  • 51. Oceanをインストールしてすぐに試せます http://perl-ocean.github.io/ocean-core/ installation.html 51
  • 52. mixiにてトライアル中• iChatでの友人との1対1のメッセージのやりと りのみ• http://mixi.jp/promotion.pl?id=realtime 52
  • 53. Question? 53

×