Nov 18, 2005

SOAPの高速化技法メモ

Differential Deserialization for Optimized SOAP Performance
Nayef Abu-Ghazaleh, Michael J. Lewis

SC|05のTechnical Paper。

個人的にSOAPを高速化することに(も)長らく興味を持っている。高速化の手法は概ね3種類に分けられる。

ひとつは専用ハードウェアを設けるというもの。結果は推して知るべしという感じだが、業務でものすごいリクエストをこなす必要がある場合には対費用効果に優れるのかもしれない。分からない。というか、インターナルサービスもどんどんWeb Services化してしまえという風潮を考えると費用的にはスケールしないだろう。

もうひとつはテキストベースのプロトコルを止めてしまって等価なバイナリープロトコルを規定すること。2年くらい前に私自身"Lightweight Web Services"という名前で実装したが、Sun Microsystemsでjwsdp: Fast Web Services and Fast Infosetがほぼ同じバイナリ表現で実現してしまったので今のところお蔵入りウェアとなっている。他にbnuxという独自のバイナリ形式を使う実装(Nux - Overview)も有名。Sunの実装はASN.1という一種の標準規格を用いているので(ASN.1機器が実現するinteroperabilityもメリットとなり得る)、bnuxの著者はbnux形式が定性的・定量的に十分優れていることを示す必要がある。これらの実装は既存のSOAPと比較すると圧倒的に高速であり、プロトコルの互換性はないがもちろんAPIレベルで互換性を維持することは不可能ではない。他にもXSBC (Extensible Schema Binary Compression)とかXBISなども参考になる。

念のため、これらはバイナリデータの交換を目的としたXOP (XML-binary Optimized Packaging)とは目的が異なることを付け加えておく。プロトコルの上位層ではテキストベースプロトコルとの互換性を維持することが重要なのである。

最後のひとつはDifferential Serialization/Deserializationと呼ばれている方法。ここで言うSerialization/Deserializationとは、インコアオブジェクトとXMLストリームを相互に変換することで、もちろんDeserializationの方が重要。プロトコルの互換性を維持するが、同じ種類のメッセージに対しては二回目以降、差分のみのパーズなどの処理を行うことで軽量化を実現する。差分情報の検出方法が問題。国内ではIBM TokyoやNTTデータでやっている。

Optimizing Web Services Performance by Differential Deserialization

A Differential-analysis Approach for Improving SOAP Processing Performance

どちらも受信側でメッセージのスキーマや以前のメッセージインスタンスをパーズした結果をDFAの形で記憶しておき、終端状態に到達できるメッセージは以前作ったオブジェクトを再利用して生成するという方法で似通っていたと思う。既知のメッセージもしくはスキーマから正常な、可能な限り多くのメッセージを検出できるDFAが構成できるかどうかが問題で、例えばクライアントによって改行や空白文字の入り方が違ったりすると、うまく処理できないことになる。うまく処理できなかったら(スペックが微妙に異なる)クライアントごとに別のDFAを構成し、次からは場当たりに適用してもよいのだが、そうすると検査に時間がかかるようになったり、スペース効率が悪くなったりすることになる。

冒頭のbSOAPもDifferential Deserializationを実現するのだが、定期的にParserとDeserializerの状態をチェックポインティングし、同時に処理中のメッセージのchecksumも計算しておく。次にincoming messageが同じchecksumを持っていたら、チェックポイントからリスタートすることで処理を大幅に軽減する。この方法では高速なリスタートが期待できる反面、上記の2件に比べると冗長な情報も記憶することになる。これはgSOAP/bSOAPのフレームワークがC++で実装されていることとも無関係ではないだろう。また、チェックポインティング戦略によってメッセージのゆらぎの問題を軽減できる(可能性がある)というメリットもある。

論文的にはgSOAPとの比較しか行っていないためかなりアレな感じだが、景気の良い性能評価値をついつい載せてしまうマッチポンプセンスは好感が持てる。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com