![Page 1: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/1.jpg)
古橋貞之
!eMessagePackProject高速メッセージングシステム
#msgpack @frsyukihttp://d.hatena.ne.jp/viver/
![Page 2: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/2.jpg)
![Page 3: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/3.jpg)
![Page 4: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/4.jpg)
Application
ServerManager
Gateway
Manager
冗長構成
Server
Server
Server
Server
Server
Application
GatewayApplication
Gateway
レプリケーション
Tokyo Cabinet
![Page 5: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/5.jpg)
![Page 6: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/6.jpg)
![Page 7: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/7.jpg)
MessagePack?
{“msgpack”:“json”, “hello”:“world”}
24%削減
MessagePack26 bytes
JSON34 bytes
“It's like JSON, but very fast and small.”
![Page 8: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/8.jpg)
“It's like JSON, but very fast and small.”MessagePack?
MessagePack for C++
![Page 9: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/9.jpg)
MessagePack for Java (開発中)
![Page 10: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/10.jpg)
MessagePack-RPC?
Rails app
C++ serverJava app
MessagePack-RPC
“Cross-language messaging library”
![Page 11: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/11.jpg)
MessagePack
・高速シリアライズシステム・Externalizable, JSON, Protocol Buffers
MessagePack-RPC・多機能メッセージングシステム・SOAP, XML-RPC, Thrift
![Page 12: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/12.jpg)
MessagePackプロジェクトの成り立ち
MessagePack-RPC> MessagePackとkumofs
MessagePackとは?
> プロトコル> 並列性 - Parallel Pipelining> イベント駆動フレームワーク> Futureとセッション> 多言語対応
MessagePack> 多言語対応
MessagePackの未来
![Page 13: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/13.jpg)
MessagePackプロジェクトの成り立ち
MessagePack-RPC> MessagePackとkumofs
MessagePackとは?
> プロトコル> 並列性 - Parallel Pipelining> イベント駆動フレームワーク> Futureとセッション> 多言語対応
MessagePack> 多言語対応
MessagePackの未来
![Page 14: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/14.jpg)
MessagePackプロジェクト
• 何度もプロトコルを実装するのは大変> V-FIELD, Cagra, Kastor, kumofs, ...> 汎用的で高機能なRPCシステムが欲しい
• 全部C++で書きたくない> 後から拡張するのが大変> 管理ツールはRubyで自動化したい> 多言語で通信できるRPCシステムが欲しい
![Page 15: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/15.jpg)
MessagePackプロジェクト
• kumofsに汎用的なバイナリプロトコルを実装> MessagePack C++版/Ruby版
• kumofsのRPC機能全体を切り出して汎用化> MessagePack-RPC C++版/Ruby版
• オープンソース化
![Page 16: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/16.jpg)
MessagePackプロジェクト
• 分散システムの実装が非常に簡単になる> MessagePack-RPC + Ruby> 54行で分散Key-Value store レプリケーション機能付き> 140行で分散検索エンジン twitterのリアルタイム検索
![Page 17: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/17.jpg)
MessagePackの特徴
• 大きなデータを扱うシステムにも対応できる設計> 実装しやすいフォーマット> 高速なシリアライズ・デシリアライズ> コンパクトなデータサイズ
• 多言語対応> JSONと互換性のある型システム
• 後方互換性(動的型付け)> 互換性を保ったままプロトコルを更新
![Page 18: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/18.jpg)
MessagePack-RPCの特徴
• 複雑な分散システムをシンプルに実装できる設計> 実装しやすいシンプルなプロトコル> マルチスレッド環境を想定した高い並列性> 複数サーバ環境を想定したアーキテクチャ> 多言語対応
• 堅牢な実装> コネクションプーリング> タイムアウト
![Page 19: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/19.jpg)
MessagePackプロジェクトの成り立ち
MessagePack-RPC> MessagePackとkumofs
MessagePackとは?
> プロトコル> 並列性 - Parallel Pipelining> イベント駆動フレームワーク> Futureとセッション> 多言語対応
MessagePack> 多言語対応
MessagePackの未来
![Page 20: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/20.jpg)
プロトコルシンプルなプロトコル
[0, msgid, method, params]
[1, msgid, error, result]
[2, method, params]
Request
Response
Notify
メッセージID→Parallel Pipelining
![Page 21: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/21.jpg)
並列性
クライアント サーバ パイプライン化応答が帰ってくる前に立て続けに複数の要求を発行することで高速化を図る
実装例:・HTTP/1.1 pipelining・Thrift・SOAP
![Page 22: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/22.jpg)
クライアント サーバ
並列性
重いタスク軽いタスク
実装例:・HTTP/1.1 pipelining・Thrift・SOAP
重いタスクが軽いタスクを待たせる > 並列性が低下
順番を揃える(キュー)
![Page 23: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/23.jpg)
クライアント サーバ
並列性
実装例:・MessagePack-RPC
応答の順番を揃える必要が無い早く終わったタスクはすぐに返す > 並列性が向上 > サーバのリソース消費量を削減
時間短縮
重いタスク軽いタスク
![Page 24: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/24.jpg)
並列性ベンチマークテスト
![Page 25: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/25.jpg)
プロトコル
• 実装しやすいシンプルなプロトコル• 並列処理しやすいプロトコル> メッセージにIDを入れる 実際に処理される順番は問わない 任意の順番で非同期処理できる
• サーバの負荷を軽減する> RequestとResponseの対応付けはクライアント側で行う
![Page 26: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/26.jpg)
MessagePackプロジェクトの成り立ち
MessagePack-RPC> MessagePackとkumofs
MessagePackとは?
> プロトコル> 並列性 - Parallel Pipelining> イベント駆動フレームワーク> Futureとセッション> 多言語対応
MessagePack> 多言語対応
MessagePackの未来
![Page 27: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/27.jpg)
イベント駆動I/Oサーバーサイド イベント駆動I/O
Dispatcher
ServerClient
Client
Loop
multi-threaded event-driven I/O(C++, Java)
大量のクライアントと効率的に通信できる
![Page 28: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/28.jpg)
イベント駆動I/OClient
Session Loop Server
Client
ServerSession Loop
クライアントサイド イベント駆動I/O
![Page 29: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/29.jpg)
イベント駆動I/O
sharedevent loop
Client
Client
Server
Server
Loop
Session
Session
クライアントサイド イベント駆動I/O
並列して通信可能
![Page 30: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/30.jpg)
イベント駆動I/O
Session PoolServer
Server
pools these connectionsLoop
Session
Session
connection
クライアントサイド イベント駆動I/O
![Page 31: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/31.jpg)
Dispatcher
イベント駆動I/O
sharedevent loop
Client
Server
Server
Loop
Session
Session
クライアントサイド イベント駆動I/O
Client
サーバとクライアントを同じイベントループ上で動作
![Page 32: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/32.jpg)
sharedevent looptimer, signal handler,
other protocol, etc...
Dispatcher
イベント駆動I/OClient
Server
Loop
Session
クライアントサイド イベント駆動I/O
Client
サーバとクライアントを同じイベントループ上で動作
![Page 33: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/33.jpg)
アーキテクチャ
• イベント駆動型のI/Oアーキテクチャ> スレッドを使わずに並列化できる 多数のクライアントと効率よく通信できる> クライアント側もイベント駆動 多数のサーバと効率よく通信できる> 例:多数のサーバ同士が通信しあう分散システム> 例:クラスタの一括制御ツール
![Page 34: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/34.jpg)
アーキテクチャ
• コネクションをプーリング> 何度もコネクションを張り直す負荷を削減> 高負荷時でもポート番号が足りなくならない
• 1つのイベントループに様々なイベントハンドラを追加のせてプログラムを構築できる> 「並列RPCフレームワーク」> サーバ/クライアント両方の特性を持つシステム 例:プロキシサーバ
![Page 35: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/35.jpg)
MessagePackプロジェクトの成り立ち
MessagePack-RPC> MessagePackとkumofs
MessagePackとは?
> プロトコル> 並列性 - Parallel Pipelining> イベント駆動フレームワーク> Futureとセッション> 多言語対応
MessagePack> 多言語対応
MessagePackの未来
![Page 36: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/36.jpg)
Futureとセッション
• Future> 「未来の結果」を表すオブジェクト 実際に参照されるまで結果の処理を遅延させる> 非同期呼び出しを抽象化> イベント駆動I/Oを隠蔽
• セッション> 「コネクション」の概念を隠蔽> 接続・再接続・接続維持を自動化
![Page 37: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/37.jpg)
Future
Future概念提示使い方を軽く
非同期処理を抽象化
require 'msgpack/rpc'
loop = MessagePack::RPC::Loop.new
c1 = MessagePack::RPC::Client.new(host, port, loop)c2 = MessagePack::RPC::Client.new(host, port, loop)
future1 = c1.call_async(:method1, arg)future2 = c2.call_async(:method2, arg)
future2.getfuture1.get
![Page 38: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/38.jpg)
Futureクライアント サーバ1 サーバ2
call_async(method1)
call_async(method2)
future1
future2
![Page 39: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/39.jpg)
セッションコネクションの隠蔽
sharedevent loop
Server
Server
Loop
Session
Session
connection
![Page 40: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/40.jpg)
セッションコネクションの隠蔽
sharedevent loop
Server
Server
Loop
Session
Session
connection
Future
Future
Future
Future
コネクションを隠蔽非同期処理を抽象化
![Page 41: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/41.jpg)
セッションコネクションの隠蔽
Session
Session
Future
Future
Future
Future
コネクションを隠蔽非同期処理を抽象化
セッション:コネクションを直接制御させない > 接続が切れたら自動的に再接続 > コネクションプーリング
Future:非同期処理を直接記述させない > 記述を簡略化 > バックグラウンドで処理できる 通信は自動的に並列処理
![Page 42: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/42.jpg)
Future
Future概念提示使い方を軽く
非同期処理を抽象化
require 'msgpack/rpc'
loop = MessagePack::RPC::Loop.new
c1 = MessagePack::RPC::Client.new(host, port, loop)c2 = MessagePack::RPC::Client.new(host, port, loop)
future1 = c1.call_async(:method1, arg)future2 = c2.call_async(:method2, arg)
future2.getfuture1.get
![Page 43: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/43.jpg)
![Page 44: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/44.jpg)
MessagePackプロジェクトの成り立ち
MessagePack-RPC> MessagePackとkumofs
MessagePackとは?
> プロトコル> 並列性 - Parallel Pipelining> イベント駆動フレームワーク> Futureとセッション> 多言語対応
MessagePack> 多言語対応
MessagePackの未来
![Page 45: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/45.jpg)
“you're writing so!ware that only has to run on your own servers, you can use any language you want.”
Beating the AveragesPaul Graham
![Page 46: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/46.jpg)
多言語対応
• 現実> 既存のシステムに制約される> オーバーヘッドが大きく実装も大変な連携手段 HTTP, XML, ...
• 理想> 用途に適した言語を選択 Ruby, Java, Scala, Haskell, Erlang, ...> 他のモジュールやプロジェクトとスムーズに連携
![Page 47: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/47.jpg)
多言語対応
• 理想> 用途に適した言語を選択 Ruby, Java, Scala, Haskell, Erlang, ...> 他のモジュールやプロジェクトとスムーズに連携
MessagePack-RPC
![Page 48: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/48.jpg)
制約とロックイン 選択と連携
MessagePack-RPC
![Page 49: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/49.jpg)
Rubyフロントエンド
Java既存資産
![Page 50: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/50.jpg)
Rubyフロントエンド
Python別プロジェクト
Java既存資産
C++計算サーバ
Haskellツール
![Page 51: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/51.jpg)
多言語対応
• C++版 - Sadayuki Furuhashi• Erlang版 - UENISHI Kota• Haskell版 - Hideyuki Tanaka• Java版 - Muga Nishizawa• PHP版 - h0x10• Python版 - INADA Naoki• Ruby版 - Sadayuki Furuhashi
対応言語と開発者の一部
![Page 52: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/52.jpg)
多言語対応の問題
• 言語間の差異を吸収する層が必要> 型システムの違い 文字列とバイト列の区別がない 配列と連想配列の区別がない クラスがない> クラス名や変数名の命名規則が違う
• MessagePack
![Page 53: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/53.jpg)
MessagePackプロジェクトの成り立ち
MessagePack-RPC> MessagePackとkumofs
MessagePackとは?
> プロトコル> 並列性 - Parallel Pipelining> イベント駆動フレームワーク> Futureとセッション> 多言語対応
MessagePack> 多言語対応
MessagePackの未来
![Page 54: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/54.jpg)
シリアライザ
• シリアライザの役割> オブジェクトをバイト列に変換> バイト列からオブジェクトを復元
• シリアライザの用途> オブジェクトをDBやキャッシュに保存> オブジェクトをネットワーク越しに転送
![Page 55: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/55.jpg)
シリアライザ
• シリアライザの特性> バイナリかテキストか 人間が読める <-> 人間には読めない> シリアライズ後のデータに型情報を埋め込むか データサイズが大きくなる <-> 小さく済む データ本体だけでデシリアライズ可能 <-> データとは別に型定義ファイルが必要
> 多言語に対応しているか
![Page 56: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/56.jpg)
MessagePack
• バイナリ形式のシリアライズフォーマット• JSONと互換性のある型システム> 整数, 真偽値, 配列, 連想配列, ...
• 型情報をシリアライズ後のデータに埋め込む> コンパクトに埋め込むエンコーディング手法
• シリアライズ後のデータが非常に小さい• シリアライズ・デシリアライズが高速
![Page 57: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/57.jpg)
多言語対応の問題
• 言語間の差異を吸収する必要がある> 型システムの違い 文字列とバイト列の区別がない 配列と連想配列の区別がない クラスがない> クラス名や変数名の命名規則が違う
![Page 58: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/58.jpg)
多言語対応
• 各言語間で擦り合わせると、組み合わせが爆発• 「MessagePackの型システム」に変換する> JSON互換> 整数, 浮動小数点数, Boolean, Nil, 文字列,配列, 連想配列
![Page 59: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/59.jpg)
MessagePackC++の型 Rubyの型
MessagePackの型
Javaの型
msgpack::object
MessagePackObject
多言語対応
![Page 60: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/60.jpg)
MessagePack
MessagePackの型
多言語対応
JSONの型
![Page 61: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/61.jpg)
多言語対応
• C++> Sadayuki Furuhashi
• Ruby> Sadayuki Furuhashi
• Java> Muga Nishizawa
• Python> INADA Naoki
• Haskell> Hideyuki Tanaka
• Lua> Nobuyuki Kubota
• Perl> tokuhirom, gfx, ...
• Erlang> UENISHI Kota
• Node.JS> Peter Griess
• JavaScript> uupaa
• PHP> advect
• D> repeatedly
対応言語と開発者の例
![Page 62: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/62.jpg)
まとめ
• MessagePack-RPC> RPCシステム シンプルなプロトコル 高い並列性 多機能 多言語対応> 「選択と連携」
• MessagePack> シリアライズシステム 高速 コンパクト 埋め込まれた型情報 多言語対応
> 「柔軟の永続化」
![Page 63: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/63.jpg)
MessagePackプロジェクトの成り立ち
MessagePack-RPC> MessagePackとkumofs
MessagePackとは?
> プロトコル> 並列性 - Parallel Pipelining> イベント駆動フレームワーク> Futureとセッション> 多言語対応
MessagePack> 多言語対応
MessagePackの未来
![Page 64: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/64.jpg)
MessagePackの未来
• 実装と移植• テスト• ドキュメント• 宣伝• 実績と洗練• 事実上の標準…
![Page 65: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/65.jpg)
分散キャッシュ分散データベース
MessagePack Platform
分散メッセージキュー分散メディアストレージ
分散システムミドルウェア
![Page 66: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/66.jpg)
スケーラブルなシステムの安定した量産を可能にする。
様々な分散システムをMessagePackを使って結合し、
スケーラブルな分散型のミドルウェアを実現。
MessagePack Platform
![Page 67: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/67.jpg)
Powered by
Sedue
Amebaなう Sekai Camera頓智ドット
PFI
Cyber Agent
CarrotAsk Solem
Ficiaえとらぼ
ROMA-MessagePack
楽天技術研究所Cassandra-MessagePack
![Page 68: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/68.jpg)
![Page 69: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/69.jpg)
http://sedue.sc/Sedue Cloud Search: 簡単に使える高性能検索エンジン・レコメンドエンジンクラウドサービス
![Page 70: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/70.jpg)
http://sedue.sc/Sedue Cloud Search: 簡単に使える高性能検索エンジン・レコメンドエンジンクラウドサービス
![Page 71: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/71.jpg)
MessagePackと”グローバル”
• 「オープンソースに国境はない」> MessagePack Node.JS版> MessagePack-RPC Node.JS版 Peter Griess> MessagePack PHP版 advect> Carrot: Python AMQP Framework Ask Solem Hoel
![Page 72: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/72.jpg)
MessagePack が「魅力」的であるために
「学生」「余暇の時間に」→ 瞬発力・斬新さ
「システム開発に」「製品に」→ 持続力・堅牢さ
MessagePack が「有用」であるために
オープンソースの原動力
![Page 73: MessagePack Rakuten Technology Conference 2010](https://reader034.vdocument.in/reader034/viewer/2022052410/554dc3c1b4c905c2488b4ef5/html5/thumbnails/73.jpg)
開発者にエールを
http://msgpack.org/ http://github.com/msgpack
Twitter: #msgpack msgpack@googlegroups