updated msgpack-rpc dissector
WireShark 2.0 向けに、msgpack-rpc dissectorをアップデートしました。@kobayasさん、お疲れ様。
使い方はいたって簡単で、INSTALLに書いてある通り、 lua-MessagePack/src/MessagePack.lua を lua の libdir へ、 msgpack_rpc.lua を、wireshark の plugindir に置くだけです。
WireSharkを立ち上げて、Aboutを開いたときに、
と、msgpack_rpcがプラグインとして見えていれば利用できます。
設定ですが、以下のように、msgpack-rpc protoを利用するポート番号をWireSharkのPreference→Protocol→MSGPACK-RPCに設定してください。
これで、TCPもしくはWebSocket上を流れるmsgpack-rpcのprotoを以下のようにparseし表示できるようになります。
注: なお、msgpack-rpc requestの正しい仕様は、[ type, msgid, "method", [params] ]ですが、このサンプルではparamsがtupleになっていないので、(dirty)が付いています。
最近のgRPCでベンチマークをとってみた(C++のみ)
gRPCの速度ってどのくらいなんだろ、と思っていたところ、mattnさんの以下の記事を発見しました。早速、githubからcloneさせていただいて試したのですが、やはり1年ほど前の記事であるため、ヘッダファイルやらメソッドなどに変更が入っていてそのままでは通りませんでした。
ということで、とりあえずmakeが通るようにして測ってみました。(とりあえず、というのはSSLの有効化が出来ておらず、TCPでの接続になっているからです)
https://github.com/nori0428/grpc-example-cpp
さて、これでベンチマークをとったところ、
MBP: 2.53GHz Core2Duo, Yosemite(v10.10.5) Mem: 4GBの環境で、
$ time seq 1000 | xargs -n 1 ./client mattn
real 0m9.839s
user 0m3.208s
sys 0m3.520s
$ time seq 1000 | xargs -n 1 ./client
real 0m5.806s
user 0m1.914s
sys 0m1.362s
こんな感じでございました。IDLからRPCコードの自動生成が楽でいいですね。
と以上で終わりなんですが、ここは弊社作msgpack-rpc互換ライブラリの性能と比べたくなるじゃないですか。ということで、
https://github.com/nori0428/lrpc-example-cpp
ほぼ同じことするサンプルを作ってみました。なお、めんどくさくてstd::make_sharedとか使ってるので、c++11有効な環境でお試しくださいませ。
結果ですが、
$ time seq 1000 | xargs -n 1 ./client mattn
real 0m7.659s
user 0m2.346s
sys 0m2.522s
$ time seq 100 | xargs -n 1 ./client
real 0m1.754s
user 0m0.778s
sys 0m0.435s
transportはHTTP/2ではなくWebSocketですし、ListPersonの方はstreamの読み方等がちょっと違った感じなのであれですが、速度的に勝てたのはmsgpackさまさま、という気持ちです。このlinear-cppでは他にもいろいろ余計なことしてるので、他のmsgpack-rpcライブラリではもっと速度が出るんじゃないかな、と思います。
ではでは、皆様よいお年を。
linear rpcについて
先日、社内で開発・利用しているソフトウェア群をOSSとして公開させていただきました。その背景や経緯については、こちらをご参照ください。
こちらのblogでは主に、利用方法や技術的な点について記述していきます。
このソフトウェアで何が出来るようになるのか?
このソフトウェアで出来ることはたった3つです。
- リクエスト-レスポンス
クライアント、もしくはサーバからメッセージの送信とそれに対する返信が可能となります。 - イベント通知
クライアント、もしくはサーバから何らかのイベントを他方に任意のタイミングで通知することが可能となります。 - グループへの配信
サーバもしくはクライアントを任意のグループとしてまとめ、そのグループに対して同じイベントを通知することが可能となります。