updated msgpack-rpc dissector

WireShark 2.0 向けに、msgpack-rpc dissectorをアップデートしました。@kobayasさん、お疲れ様。

使い方はいたって簡単で、INSTALLに書いてある通り、 lua-MessagePack/src/MessagePack.lualua の libdir へ、 msgpack_rpc.lua を、wireshark の plugindir に置くだけです。

WireSharkを立ち上げて、Aboutを開いたときに、

f:id:nori-0428:20160413091023p:plain

と、msgpack_rpcがプラグインとして見えていれば利用できます。

設定ですが、以下のように、msgpack-rpc protoを利用するポート番号をWireSharkのPreference→Protocol→MSGPACK-RPCに設定してください。

f:id:nori-0428:20160413091316p:plain

これで、TCPもしくはWebSocket上を流れるmsgpack-rpcのprotoを以下のようにparseし表示できるようになります。

f:id:nori-0428:20160413091508p:plain

f:id:nori-0428:20160413091525p:plain

注: なお、msgpack-rpc requestの正しい仕様は、[ type, msgid, "method", [params] ]ですが、このサンプルではparamsがtupleになっていないので、(dirty)が付いています。

最近のgRPCでベンチマークをとってみた(C++のみ)

gRPCの速度ってどのくらいなんだろ、と思っていたところ、mattnさんの以下の記事を発見しました。早速、githubからcloneさせていただいて試したのですが、やはり1年ほど前の記事であるため、ヘッダファイルやらメソッドなどに変更が入っていてそのままでは通りませんでした。

mattn.kaoriya.net

ということで、とりあえず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ライブラリではもっと速度が出るんじゃないかな、と思います。

 

ではでは、皆様よいお年を。

 

小さな小さなインターネット

ご無沙汰してました。今回は、このソフトウェアの開発経緯を書いてみます。

開発経緯

私は今、主にB2B製品向けのアプリケーション、ミドルウェアからファームウェアまで幅広く関わらせて頂いていますが、メーカーに於けるソフトウェアエンジニアって何してるんだか、詳しく知っている方はあまりいらっしゃらないかと思います。あまり深い話は書けませんが、書ける範囲で少しだけ。 

続きを読む

linear rpcについて

先日、社内で開発・利用しているソフトウェア群をOSSとして公開させていただきました。その背景や経緯については、こちらをご参照ください。

こちらのblogでは主に、利用方法や技術的な点について記述していきます。

このソフトウェアで何が出来るようになるのか?

このソフトウェアで出来ることはたった3つです。

  1. リクエスト-レスポンス
    クライアント、もしくはサーバからメッセージの送信とそれに対する返信が可能となります。
  2. イベント通知
    クライアント、もしくはサーバから何らかのイベントを他方に任意のタイミングで通知することが可能となります。
  3. グループへの配信
    サーバもしくはクライアントを任意のグループとしてまとめ、そのグループに対して同じイベントを通知することが可能となります。
続きを読む