• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Perl Ocean
 

Perl Ocean

on

  • 1,392 views

Perl Ocean - XMPP based realtime communication framework suite

Perl Ocean - XMPP based realtime communication framework suite

Statistics

Views

Total Views
1,392
Views on SlideShare
1,184
Embed Views
208

Actions

Likes
0
Downloads
2
Comments
0

5 Embeds 208

http://yapcasia.org 203
http://favtile.com 2
https://twitter.com 1
http://webcache.googleusercontent.com 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Perl Ocean Perl Ocean Presentation Transcript

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