gRPC高度なトピック

GoaのDSLとコード生成を使用してgRPCサービスを設計および実装する

GoaはDSLとコード生成機能を通じて、gRPCサービスの構築に対する包括的なサポートを提供します。 サービス定義からProtocol Bufferの生成、サーバー/クライアントの実装まで、gRPCサービス開発の 完全なライフサイクルを処理します。

主要な機能

GoaのgRPCサポートには以下が含まれます:

  • 自動Protocol Buffer生成:サービス定義から.protoファイルを自動生成
  • 型安全性:サービス定義から実装までのエンドツーエンドの型安全性
  • コード生成:サーバーとクライアントの両方のコードを生成
  • 組み込みバリデーション:サービス定義に基づくリクエストバリデーション
  • ストリーミングサポート:すべてのgRPCストリーミングパターンの完全サポート
  • エラー処理:ステータスコードマッピングを含む包括的なエラー処理

はじめに

基本的なgRPCサービスを定義します:

var _ = Service("calculator", func() {
    // gRPCトランスポートを有効化
    GRPC(func() {
        // protocオプションを設定
        Meta("protoc:path", "protoc")
        Meta("protoc:version", "v3")
    })

    Method("add", func() {
        Payload(func() {
            Field(1, "a", Int)
            Field(2, "b", Int)
            Required("a", "b")
        })
        Result(func() {
            Field(1, "sum", Int)
        })
    })
})

サービスコードを生成します:

goa gen calc/design

これにより以下が生成されます:

  • Protocol Buffer定義
  • gRPCサーバーとクライアントのコード
  • 型安全なリクエスト/レスポンス構造体
  • サービスインターフェース

追加リソース