Your SlideShare is downloading. ×
0
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月

3,796

Published on

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,796
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. http://www.flickr.com/photos/free-stock/6837290750/
  • 2. 自己紹介 染田貴志 (SOMEDA Takashi) http://d.hatena.ne.jp/tksmd 株式会社ヌーラボ所属 Backlog の開発・インフラ・サポート Cacoo のインフラ FxUG 京都スタッフ JAWS UG 京都支部長 関西 Java エンジニアの会 常連 kanjava vol.8
  • 3. 1年ぶり4度目の登板 http://d.hatena.ne.jp/tksmd/20100929 https://cacoo.com/diagrams/zIPOGa9u3sP8NHHf http://d.hatena.ne.jp/tksmd/20110720 kanjava vol.8
  • 4. MessagePack RPCご存知の方 kanjava vol.8
  • 5. この本読んだ方 http://www.amazon.co.jp/Java並行処理プログラミング-―その「基盤」と「最新API」を究める―-Brian-Goetz/dp/4797337206 kanjava vol.8
  • 6. 今日 ”お話しない” こと 非同期処理について 並行処理について kanjava vol.8
  • 7. Agenda 背景 MessagePack RPC とは 使ってみた / 拡張してみた まとめ http://www.flickr.com/photos/rickerbh/449823989/ kanjava vol.8
  • 8. 背景 http://www.flickr.com/photos/nicmcphee/2558167768/
  • 9. 実現したい事 Git リポジトリ の情報を アプリ側で表示 kanjava vol.8
  • 10. 課題 Git リポジトリとアプリサーバは別にしたい 実行速度はなるべく速くしたい 言語非依存でやり取りしたい kanjava vol.8
  • 11. アーキテクチャ kanjava vol.8
  • 12. MessagePack RPC とは http://www.flickr.com/photos/83633410@N07/7658034524/in/photostream/
  • 13. RPC (Remote Procedure Call) メソッド呼び出し 処理結果 kanjava vol.8
  • 14. ちっちゃくて、速い JSON http://wiki.msgpack.org/display/MSGPACK/Design+of+Serialization http://www.rubyinside.com/messagepack-binary-object-serialization-3150.html kanjava vol.8
  • 15. ドラクエX でも! http://gigazine.net/news/20120824-dragonquest-backstage-cedec2012/ kanjava vol.8
  • 16. 非同期 RPC http://wiki.msgpack.org/display/MSGPACK/Design+of+RPC kanjava vol.8
  • 17. パイプライン http://wiki.msgpack.org/display/MSGPACK/Design+of+RPC kanjava vol.8
  • 18. 実装が沢山 http://msgpack.org/ kanjava vol.8
  • 19. 使ってみる / 拡張してみた http://www.flickr.com/photos/83633410@N07/7658268052/in/photostream/
  • 20. 使ってみる https://github.com/tksmd/kanjava08-sample kanjava vol.8
  • 21. 基本的な役割はこれだけ クライアント 処理の実装 サーバ kanjava vol.8
  • 22. 非同期呼び出しpackage kanjava.msgpack.async;import org.msgpack.rpc.Future;public interface RPCAsyncHandler { // heavy が呼ばれる public Future<String> heavyAsync(); // light が呼ばれる public Future<String> lightAsync();} kanjava vol.8
  • 23. 実装とインターフェースは違ってok @Test public void インターフェースと実装は違っていてもよい() throws Exception{ EventLoop loop = EventLoop.start(); Server server = new Server(loop); server.serve(new TestHandler()); server.listen(8969); Client client = new Client("127.0.0.1", 8969, loop); TestInterface handler = client.proxy(TestInterface.class); String actual = handler.method(); assertThat(actual, is("ok")); } kanjava vol.8
  • 24. ハンドラの public メソッドには注意 @Test public void publicメソッドには注意してね() throws Exception { EventLoop loop = EventLoop.start(); Server server = new Server(loop); try { server.serve(new ExecptionHandler()); } catch (MessageTypeException e) { assertTrue("setDelegate を RPC メソッドとして登録しようとする", true); } finally { server.close(); loop.shutdown(); } } kanjava vol.8
  • 25. 拡張してみた 画像ファイルなど byte[] をそのまま送信すると 色々大変 kanjava vol.8
  • 26. Netty 的な話 kanjava vol.8
  • 27. 泥臭い ここで横取り kanjava vol.8
  • 28. Chunk 書き込み final InputStream is = handler.getStream(); channel.write(CustomMessage.startMessage(msgid, key)); ChannelFuture writeFuture = channel.write(new ChunkedStream(is)); writeFuture.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { future.getChannel().write(CustomMessage.endMessage(msgid,key)); is.close(); } }); kanjava vol.8
  • 29. まとめ http://www.flickr.com/photos/nauright/2662160957/
  • 30. 非同期処理は難しい?! 非同期処理を意識する所はほとんどない 手軽に複数サーバでの 分散処理が記述できる kanjava vol.8
  • 31. 今後の課題など 他言語からのアクセス パフォーマンス的なところ 冗長化的なところ kanjava vol.8
  • 32. 気になる https://twitter.com/frsyuki/status/239951922478596096 kanjava vol.8
  • 33. まもなく! kanjava vol.8
  • 34. Thanks!! ありがとうございました ご質問あればどうぞ! kanjava vol.8

×