gRPC は、言語を越えたリモート呼び出しを簡単に実装できる、Google のオープンソースの高性能 RPC フレームワークです。この記事では、Go 言語で gRPC をインストールし、簡単な gRPC サービスを構築する方法を紹介します。
まず、gRPC と protobuf をインストールする必要があります。これらは 2 つの別個のパッケージですが、gRPC ではデータをシリアル化するために protobuf が必要です。インストールするには、次のコマンドを使用できます:
$ go get -u google.golang.org/grpc $ go get -u github.com/golang/protobuf/protoc-gen-go
次に、protobuf コンパイラー protoc をインストールする必要があります。 .proto ファイルを Go 言語で使用できるコードにコンパイルできます。 Linux システムでは、次のコマンドを使用してインストールできます:
$ sudo apt install -y protobuf-compiler
macOS システムでは、brew を使用してインストールできます:
$ brew install protobuf
または、公式 Web サイトにアクセスしてダウンロードしてインストールすることもできます手動で。
gRPC サービスの作成を開始する前に、RPC インターフェイスを定義する必要があります。これは、サービス インターフェイスとメッセージ形式を記述する .proto ファイルを通じて実行できます。簡単な例を次に示します。
syntax = "proto3"; package helloworld; message HelloRequest { string name = 1; } message HelloReply { string message = 1; } service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); }
上の例では、Greeter というサービスを定義しました。これには、HelloRequest パラメータを受け入れ、HelloReply パラメータを返す SayHello という RPC インターフェイスがあります。各パラメータは protobuf のメッセージを使用して定義されます。
protobuf コンパイラー protoc を使用して Go コードを生成できるようになりました。次のコマンドを使用します。
$ protoc --go_out=plugins=grpc:. helloworld.proto
これにより、.proto ファイルで定義したすべての構造とインターフェイスを含む helloworld.pb.go というファイルが生成されます。
今度は、gRPC サービスを作成します。簡単なサービスの例を次に示します。
package main import ( "context" "log" "net" "google.golang.org/grpc" pb "your_module/helloworld" ) const ( port = ":50051" ) // server is used to implement helloworld.GreeterServer. type server struct{} // SayHello implements helloworld.GreeterServer func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { log.Printf("Received: %v", in.GetName()) return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil } func main() { lis, err := net.Listen("tcp", port) if err != nil { log.Fatalf("failed to listen: %v", err) } s := grpc.NewServer() pb.RegisterGreeterServer(s, &server{}) log.Printf("Listening on %v", port) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } }
上記の例では、.proto ファイルで定義したインターフェイスを実装し、gRPC サーバーに登録しました。
最後に、gRPC サービスを実行し、クライアントを使用してテストできます。このサービスは、次のコマンドを使用して実行できます。
$ go run server.go
次に、別のターミナル ウィンドウで、次のコマンドを使用してクライアントを実行できます。
$ go run client.go
クライアントの実行後、リクエストが送信されます。 gRPC サーバーに送信され、応答メッセージが出力されます。
これは単純な例であり、より高度な機能を使用して、より強力な gRPC サービスを作成できます。
概要
この記事では、Go 言語で gRPC をインストールする方法を紹介し、簡単な gRPC サービスのサンプルを作成しました。 gRPC は、非常に高いパフォーマンスと効率で言語間でリモート呼び出しを行う簡単な方法を提供します。
以上がGo 言語で gRPC をインストールする方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。