Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Perl Ocean
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
lapis25
October 01, 2012
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Perl Ocean
Perl Ocean - XMPP based realtime communication framework suite
lapis25
October 01, 2012
Other Decks in Technology
See All in Technology
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
380
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
100
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
Optunaの最新リリースv5.0について
pfn
PRO
0
120
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
180
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
770
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
6k
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
330
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
130
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
110
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
490
Featured
See All Featured
For a Future-Friendly Web
brad_frost
184
10k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Accessibility Awareness
sabderemane
1
250
What's in a price? How to price your products and services
michaelherold
247
13k
Being A Developer After 40
akosma
92
590k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
Transcript
Perl Ocean XMPP based realtime communication framework suite
None
•@lapis25 •Kansai Perl Mongers •mixi inc. •http://id.mixi.jp/lapis25
About Ocean
XMPPプロトコルを中⼼心とする リアルタイムコミュニケーション フレームワークスイート
•XMPP? •Perl Ocean Agenda
XMPP?
EXtensible Messaging and Presence Protocol 拡張可能なメッセージとプレゼンスのプロトコル
歴史 • もともとJabberという名前だった • そのためいまでもJabber/XMPPと呼ばれるこ とがある • XMPPと名前を変えɼ2004/10ʹRFCとして公表 • 2011/3
にアップデート
特徴 • オープン標準 • 永続的コネクション • XMLベース • 中央サーバを持たない •
拡張性
オープン標準 • プロトコルはJabberの頃から公開されていた • 現在はRFCとして公表されている • RFC6120 および RFC6121 •
Jabberからだと10年年以上ɼRFCからでも8年年
永続的コネクション • ログインからログアウトまでの間 ひとつのTCPコネクションを維持 • コネクション上で メッセージなどのやりとりを双⽅方向に⾏行行う
XMLベース • 単⼀一の⻑⾧長いXMLとして符号化される • XMLがゆえに冗⻑⾧長 • バイナリデータを送る場合は Base64エンコードしてから 送る必要があるので⾮非効率率率
中央サーバを持たない • ωοτϫʔΫͷߏిࢠϝʔϧʹࣅ͍ͯͯ ಠࣗͷαʔόΛཱͯΒΕΔ • αʔόؒΛͭͳ͙༷(S2S)͕ଘࡏ͢Δ • ϩʔΧϧͷΈͷωοτϫʔΫՄೳ
拡張性 • Core以外の機能は,RFCではなく XEP (XMPP Extension Protocol)ͱݺΕΔ • グループチャットやボイス・ビデオチャット などの規格もここに含まれる
• http://xmpp.org/xmpp-protocols/xmpp- extensions/
できること
Core:RFC6120 • tlsによる接続 • SASLによる認証(SASL: RFC4422) • 別XMPPネットワークへの転送(ルーティング)
IM:RFC6121 • プレゼンス(ユーザの現状を表現するデー タ)の送受信 • トーク(1対1の会話,メッセージング) • ロスタ(友⼈人情報)のやりとり • サブスクリプション(友⼈人情報の登録や削除)
拡張仕様 • ユーザプロフィール情報取得 (XEP-0054: vcard-temp) • グループチャット (XEP-0045: Multi-User Chat)
• Pub-Sub (XEP-0060: Publish-Subscribe) • Jingle ボイスチャットやビデオチャットのため の拡張 (XEP-0166: Jingle)
アプリケーション • iChat/iMessage • Google Talk • Facebook Chat •
MSN Live • PSN
None
Perl Ocean
Lyo Kato⽒氏によって開発された XMPPプロトコルを中⼼心とする リアルタイムコミュニケーション フレームワークスイート
特徴
Webサービスとの インテグレーションを 前提とした設計 現在あるWebサービスに,リアルタイムコミュニケーションを インテグレーションできることを⽬目的とする
デファクトスタンダードな拡張を ひと通り標準サポートした フルスタックフレームワーク 拡張機能のうちデファクトスタンダードなものや Webサービスとのインテグレーションにおいて必要と思われるものは 最初から組み込む
⼤大規模なWebサービスとの インテグレーションに耐える クラスタサポート 同時接続数の問題の解決,⾮非同期処理理におけるプロセスや サーバーライフサイクルサービスコード更更新頻度度を考慮した クラスタリングをサポート
WebSocketなどを利利⽤用した HTTP Bindingの独⾃自サポート HTTP Binding(WebSocket/SSE/XHR)を独⾃自にサポート クラスタサポートと組み合わせて,XMPPと併⽤用することも可能
機能 • ⼀一対⼀一のメッセンジャ • プレゼンスサービス • グループチャット • イベントのプッシュ通知 •
オーディオチャット・ビデオチャット
Oceanの実装状況
実装済み機能 • جຊతͳメッセンジャػೳ • グループチャット
実装中機能 • イベントのプッシュ通知 • HTTP Bindingのサポート • オーディオチャット・ビデオチャット
Έࠐ·ͳ͍ • ユーザ情報管理理 • フレンド管理理 • 購読管理理
Oceanのクラスタサポート
スケーリングの課題
サーバパフォーマンスからくる 同時接続数の限界 1サーバあたりの同時接続数の限界 リソースの枯渇,パフォーマンスの低下
プロセス/スレッドのブロック イベントドリブンなシステムの上で データベースの読み出しなど重い同期処理理が発⽣生すると プロセスやスレッドをブロックしてしまう
サーバライフサイクルと サービスコード更更新頻度度の ミスマッチ 永続的コネクションしているクライアントがある状況では 頻繁的な再起動は避けたい
デリバリサービス メッセージブローカ フロントエンドノード群 三層構成のアーキテクチャ
フロントエンドノード群 Ocean Frontend (XMPP) Frontend (XMPP) Frontend (XMPP) Frontend (WebSocket)
Ocean メッセージブローカ Frontend Frontend Broker(gearmand) Delivery Server Delivery Server
デリバリサービス Ocean Frontend Broker Delivery Server WebService Connection Map Connection
Map Connection Map UserA Home 1 UserA Work 2 UserB Home 1 Delivery Server Frontend inbox(gearmand) inbox(gearmand)
Ocean Delivery Server WebService Delivery Server Broker(gearmand) Frontend inbox(gearmand) Frontend
inbox(gearmand)
OceanͰ͍ͬͯΔٕज़ •Perl5.8+ •Gearman •AnyEvent
Licence • Artistic Licence • Perlと同じ
OceanΛͨΊ͢
GitHub上で開発 https://github.com/lyokato/ocean-core
υΩϡϝϯτ֦ॆத http://lyokato.github.com/ocean-core
プロジェクトテンプレートの⽣生成 インテグレーションのための プロジェクトテンプレートを スクリプトで⽣生成できる
スタンドアロンモード ウェブサービスとのつなぎ込みが必要ない スタンドアロンモードも実装
Oceanをインストールして すぐに試せます http://lyokato.github.com/ocean-core/ installation.html
mixiにてトライアル中 • iChatͰͷ༑ਓͱͷ1ର1ͷϝοηʔδͷΓͱ ΓͷΈ • http://mixi.jp/promotion.pl?id=realtime
Question?