MessagePackはJSONに類似していますが、より高速で少ない

MessagePackは効率的なバイナリデータシリアライザーです。







このライブラリを使用すると、JSON形式を使用するのと同じ方法で、システムコンポーネント間でメッセージを交換できます。 ライブラリの解釈は44のプログラミング言語に存在します(!)



PHPのいくつかの簡単な視覚的な例:



php -r 'echo strlen(json_encode(array("Hello World!")));' // 16 php -r 'echo strlen(msgpack_pack(array("Hello World!")));' // 14
      
      





 php -r 'echo strlen(msgpack_pack(array("Hello World!", "Hello World!")));' // 27 php -r 'echo strlen(json_encode(array("Hello World!", "Hellow World!")));' // 32
      
      





 php -r 'echo strlen(json_encode(array("Hello World!" => "Hello World!")));' // 31 php -r 'echo strlen(msgpack_pack(array("Hello World!" => "Hello World!")));' // 27
      
      





これらの合成例は、MessagePackがJSONよりも15〜20%効率的にデータをパックすることを示しています。 忙しいプロジェクトでは、システムコンポーネント間のメッセージングは​​1日に10万以上になります。 トラフィックを15〜20%節約すると、同じ期間に1つのノードでより多くのメッセージを配信できます。



ライブラリはJSONと完全に互換性がありますが、まだいくつかの制限を知っている必要があります。



github.com/msgpack/msgpack/blob/master/spec.mdでデータパッケージの仕様について詳しく読むことができます。



ライブラリのインストールと構成は非常に簡単であり、開発者はこの段階で問題が発生しないように注意します。 そのため、PHPを使用する場合、すべて使い慣れたデザインになります。



 pecl install msgpack
      
      



Pythonの例:

 pip install u-msgpack-python // easy_install u-msgpack-python
      
      



Rubyの場合:

 gem install msgpack
      
      





図書館は3年以上前のものです。



現時点でのPHPの拡張機能の最新の現在のバージョンは0.5.5です。

標準関数msgpack_packとmsgpack_unpack(msgpack_serializeとmsgpack_unserializeのエイリアス)に加えて、さらに2つのundocumentクラスMessagePackとMessagePackUnpackerがあることに注意してください。 次のインターフェースがあります。



メッセージパック

 MessagePack::__construct(boolean $opt = null); // $opt -    php.ini msgpack.php_only   MessagePack::setOption(integer $option, boolean $value); //    MSGPACK_CLASS_OPT_PHPONLY MessagePack::pack(mixed $value); //      MessagePack::unpack(string $str, $object = null); //  .     , , ,           . MessagePack::unpacker(); //    MessagePackUnpacker.  ,            .
      
      





MessagePackUnpacker

 MessagePackUnpacker::__construct(boolean $opt = null); // $opt -    php.ini msgpack.php_only   MessagePackUnpacker::__destruct(); MessagePackUnpacker::setOption(integer $option, boolean $value); //    MSGPACK_CLASS_OPT_PHPONLY MessagePackUnpacker::feed(string $str); //      .  true  false. MessagePackUnpacker::execute(string $str = null, integer &$offset = null); //  .  true  false. MessagePackUnpacker::data(mixed $object = null); //  ,        execute  false.  ,          $object -       reset.  ,         $object    MessagePack::unpack    reset. MessagePackUnpacker::reset(); //   ;
      
      





公式msgpack.org開発者サイト

PS:私は図書館の開発者に属していません。 私はそれを4か月間使用しています。



All Articles