Golang は人気のあるプログラミング言語であり、さまざまな種類のアプリケーションの開発にそれを使用する人が増えています。 Golang のスケーラビリティを高めるために、Google は gRPC と呼ばれる高性能 RPC フレームワークを開発しました。 gRPC は、デフォルトのシリアル化ツールとしてプロトコル バッファーを使用するため、他の RPC フレームワークよりも効率が高く、オーバーヘッドが少なくなります。この記事では、gRPCのインストール方法とGolangでの使い方を解説します。
1. gRPC のインストール
Golang では、gRPC をインストールするために 2 つの手順が必要です: 最初にプロトコル バッファーをインストールし、次に gRPC をインストールします。
$ go get -u google.golang.org/grpc
インストールが完了したら、$GOPATH に移動できます。 /src/google .golang.org/grpc ディレクトリで gRPC ソース コードを見つけます。
2. gRPC の使用
gRPC をインストールすると、Golang での RPC 通信にそれを使用できるようになります。 gRPC を使用して基本的なクライアントとサーバーを作成する方法は次のとおりです。
まず、.proto ファイルでサービスを定義する必要があります。簡単な例を次に示します。
syntax = "proto3"; package greeter; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } message HelloRequest { string name = 1; } message HelloReply { string message = 1; }
上記のコードは、SayHello という名前の RPC 呼び出しを含む Greeter という名前のサービスを定義します。この RPC 呼び出しは、パラメータとして HelloRequest オブジェクトを受け取り、戻り値として HelloReply オブジェクトを返します。
.proto ファイルを定義したら、プロトコル バッファー コンパイラーを使用してコードを生成する必要があります。次のコマンドを使用してコードを生成できます。
$ protoc --go_out=plugins=grpc:. *.proto
生成されたコードは、.proto ファイルと同じディレクトリに保存されます。
次に、サーバーを実装するコードを記述する必要があります。以下は簡単な例です。
package main import ( "context" "log" "net" "google.golang.org/grpc" pb "github.com/example/greeter" ) const ( port = ":50051" ) type server struct{} func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { return &pb.HelloReply{Message: "Hello " + in.Name}, 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 %s", port) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } }
上記のコードは、Greeter という名前のサービスを実装し、SayHello の RPC 呼び出しを実装します。この呼び出しは、「Hello」文字列とクライアントが指定した名前を連結して返します。
最後に、サーバーが提供するサービスを使用するためにクライアント コードを作成する必要があります。簡単な例を次に示します。
package main import ( "context" "log" "google.golang.org/grpc" pb "github.com/example/greeter" ) const ( address = "localhost:50051" ) func main() { conn, err := grpc.Dial(address, grpc.WithInsecure()) if err != nil { log.Fatalf("did not connect: %v", err) } defer conn.Close() c := pb.NewGreeterClient(conn) name := "world" r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name}) if err != nil { log.Fatalf("could not greet: %v", err) } log.Printf("Greeting: %s", r.Message) }
上記のコードは、gRPC クライアントを作成し、サーバーの SayHello メソッドを呼び出します。
結論
gRPC を使用すると、Golang アプリケーションのスケーラビリティとパフォーマンスが向上します。 gRPC のインストールと使用は非常に簡単で、必要な手順はわずかです。上記の手順に従うことで、gRPC を使用して Golang で RPC 呼び出しをより簡単に作成し、効率的な方法で他のシステムと通信できるようになります。
以上がgolang で grpc をインストールして使用する方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。