2009年5月22日金曜日

XMPP/AMQP @ BPStudy

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
VoluntasさんのBPStudyの発表を観に行った。
以下メモ。


XMPP xml base
AMQP binary


Erlang
Open Telecom Platform プロセスを監視できるこれが一番大きい。(実際に作るとなると並列、分散はどうでもいい)
まあ、エリクソンが作って使っている集大成だから。

メジャーアプリ。
Facebook Online Chat
AWS imple DB
Apcache CouchDB IBMが力をいれているC++から移行。
分散ハッシュDB Jai /Scalaris gooをpowerしている。Amazaon Key Value Storage実装

higempon 20090509/1241863278
このエントリのせいでErlang

情報処理学会に出ている2009/3のErlangの解説記事


XMPPとは
XMLベースのプロトコル
RFCで
Jabber -> XMPP
Google Talkが採用(完全準拠?)
動きはMail serverと同じ
TCPコネクション張りっぱなし


仕様はがちがち
拡張もいっぱい、まあXMLですから



基本:Client同士がMessageを直接やりとりする。
しかしportがつぶれていると

googleのライブラリはHole panchingしている。
すげー力業 10万行のC++

状態をXMPP Serverが状態を配る。

message サーバは1 domainを担当する。
google じゃなくて自前もできる。

Serverがコネクションをリレーしてくれる。
日本では流行っていないが、海外では1ユーザ月額課金のサービスがある。


接続
XMPP Serverにログイン
XMPP ServerにIDとIPを伝える
XML目っ正ー時
別のXMPPサーバに転送
別サーバはDNS検索

セキュリティ
SSL/TLSによる通信を暗号化
DNSでドメイン名を逆引き確認
SASLによるチャレンジ型検証

SASL RFC2222

XMPPの未来
googleがさいようしたのは大きい
プッシュベースのアプローチは大事
非同期メッセージは必要
ソリューションという形が進みそう
OpenFireという「製品」がある→チャットルームが作れる。ただしクライアント側が対応していないといけない。

同時接続クライアントは?
10KはOKでしょう。
 そもそもにスケールを前提に仕様が作られている
クラスターベースでやる

ejabberd
XMPP
Erlang
Unbutuならapt-get

Ejabberd "cloud Edition alpha"
データベースをS3に配置
将来的にはSQSを使うようだ


AWS import/export
HDDをアマゾンへ送る(!、ハードのスペックが指定されている、重量等
アマゾン側でS3にインポートする

1TByteでupで$100,
日本のクレジットが通ったが、アメリカに郵送。
帯域の問題でFedexの方がやすい。時間を買っている。


AMQP

Advanced Message Queue Protocol
MQの保湯順規格を目指すプロトロコる
メッセージ指向ミドルウェア
アプリケーション菅野通信プロト古老
言語や環境に関係なく相互接続を実現
今年中に1.0が公開されるはず

バイナリプロトコル
PubSub型
ストア・アンド・フォワード
TCPであることを利用した信頼転送
非同期なのにトランザクション、コールバックしない(これがメリット)。
マルチキャスト


Publish
Exchangeがqueueにひたすら突っ込む


Direct Exchange Type
ルーティングキーがきも

funout
ルーティングキーすらなし。
さらのキー。ただひたすら他得られる


パターンを使用したルーティングキー
a.b.c.dといったキーパターン
#や*のワイルドカードが使用可能
AMQP 0.8まで実装済み

Rabbit MQ
130万request/s (1つのサーバで!)・・・他の部分が持たない?
10K line
ただし、Erlangのundocumentedな機能を多用なので、VMのコードを読まないとダメ。

金融機関とかが使うらしい。
ニュースの配信、電話会社等。

XMPP gatewayやSTOMP gateway

作っている会社はL shiftはこれで食っている


Kay App Engine / Python 専用フレームワーク
kayはtmatsuoさんの息子の名前

非同期と純関数は計算としてはうれしいのだが、人間にやさしくない。

とんがったパーツなのだが、クライアントが手書き。
clientの実装作業を受注しているのではないだろうか。

金がかかっている。AMQPは。


GAE上でXMPPを使えるようになるらしい。
googl
e IOで発表されるかも


XMPP
ルームチャットはN:Nになる??
その負荷を面倒を見たくないからgoogleはgroup chatなし(googleはstar型になっている)

SQSがアマゾンにある

rabittmqはqueueのバックエンドはmnesiaを使っている。
2Gの制限はぶった切ることで対応、基本全てメモリ。
基本的に永続化しない。

mnesiaはよく使われているのか?微妙
 ただ分散dbなので設定ファイルを蒔くのに使う
 制限がきついのが痛い→wrapperを書くことになる。
tokyo cabinetを後ろにつないだひとがいるらしい。でもなんかメモリリークしてる。

0 件のコメント: