gRPC

Protocol Buffers を IDL に用いる契約駆動のRPCフレームワーク。_moc-web-infra

特徴

  • .proto でサービス・メッセージを定義し、各言語のコードを生成(protoc --go_out/--go-grpc_out 等)。Rust/Java/Go で実装。
  • エラーコードは17個に標準化されている。
  • ドキュメントは公式仕様にないが protoc-gen-doc で生成可能。

ブラウザ対応

ブラウザは HTTP/2 を強制できないため gRPC-Web では HTTP/1.1↔HTTP/2 変換プロキシが必要。protobuf on HTTP/1.1 を選ぶ構成もある。

API設計一般

  • IDL(Interface Definition Language)はインターフェース定義言語の総称。ブラウザAPIには Web IDL がある。
  • 要件記述語は RFC2119(MUST/SHOULD/MAY)。エラー設計は Google API Design Guide が参考。
  • リアルタイム双方向は WebSocket(HTTP 上の双方向プロトコル、Upgrade: websocket で 101 Switching Protocols)。

関連

原典メモ(notes/gRPC より統合)

gRPC

docs

エラーコード

17個ある

grpc-go/codes.go at master · grpc/grpc-go · GitHub

実装

2022-05-26

2023-01-29
Golang のprocobuf生成

#!/bin/sh
 
set -xe
 
# go_out: リクエスト, レスポンス
# gp_grpc_out: サービス部分
 
protoc homvm.proto \
    -I=proto/ \
    --go_out=./proto \
    --go_opt=paths=source_relative \
    --go-grpc_out=./proto \
    --go-grpc_opt=paths=source_relative

参考文献