gRPCをちょこっと調べた話	
Preferred	
  Networks	
  
柏原秀蔵	
  (@suma90h)	
  
2016-­‐02-­‐27
⾃自⼰己紹介
•  柏原秀蔵 (@suma90h)
•  Jubatusの開発から離離れて約1年年
•  最近:Go⾔言語やDockerfileを書いてます
•  活動
– システム系論論⽂文輪輪読会(論論⽂文読み会)
– お菓⼦子作り
2
gRPCご存じですか?	
•  Googleが2015年2月に公開したRPCフレームワー
ク	
  
–  各種言語へのライブラリを提供	
  
–  通信層でHTTP/2を使用している	
  
–  hAp://www.grpc.io	
  
•  現在Jubatusはmsgpack-­‐rpcを使用している	
  
–  msgpack-­‐rpcはもう古い!	
  
–  しかし、安定しているので中々移れないし、モチベー
ションもあまりないのが現実	
  
実際の成果	
•  本当はGolangのTipsを1つ知れた	
  
•  Pure	
  RubyのHTTP2ライブラリを知った	
  
– hAps://github.com/igrigorik/hAp-­‐2	
  
gRPC調査しようとしました	
•  MoOvaOon	
  and	
  Design	
  Principlesを読んだ	
  
– hAp://www.grpc.io/posts/principles	
  
– ストリーミングとかフロー制御とか至れり尽くせり	
  
•  このページを読めばgRPCでだいたいやりた
かったことが分かる	
  
Jubatusで何をやって欲しいか	
•  RPCサーバの処理が埋まっているとき、良い感じ
に優先度付けて処理して欲しい	
  
–  他の処理がいっぱいのときのタイムアウト・キャンセ
ルを良い感じに	
  
–  ステータス情報は優先してとりたい(スケジューリング
の優先度なんてあったっけ?)	
  
•  メッセージの圧縮/TLS(暗号化)も欲しい気がす
る	
  
•  (という個人の妄想です)	
  
grpc-­‐goのコード読み
grpc-­‐goコード読み
Golang	
  Tips:	
  
stringerと呼ばれるツールがある	
•  Enumから文字列(Stringer)を生成してくれる	
  
•  stringer	
  
– hAps://godoc.org/golang.org/x/tools/cmd/
stringer	
  
•  stringer	
  を使う場合は import	
  に注意 -­‐	
  Qiita	
  
– hAp://qiita.com/methane/items/
0c7e62a74e0aeb239a92	
  
おわり

gRPCをちょこっと調べた話