近年、クラウド コンピューティングとビッグ データの急速な発展に伴い、マイクロサービス アーキテクチャを使用してアプリケーションを構築する企業が増えています。 gRPC は、マイクロサービス間の通信に広く使用されている効率的で最新の RPC フレームワークです。この記事では、この通信フレームワークをより便利に利用できるように、golang に gRPC をインストールする方法を紹介します。
go version
go mod init example.com/hello go get google.golang.org/grpc
$ touch greeter.proto $ protoc --go_out=. --go-grpc_out=. greeter.proto
syntax = "proto3"; package helloworld; // 定义服务接口 service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } // 定义请求和响应结构体 message HelloRequest { string name = 1; } message HelloReply { string message = 1; }
protoc ファイルをコンパイルし、対応するgreeter.pb.go およびgreeter.grpc.go サービス ファイルを生成します。 protoc でコンパイルする場合、対応する pb ファイルと grpc ファイルを生成するために 2 つのパラメーター --go_out と --go-grpc_out を追加したことに注意してください。
gRPC クライアントを作成します。次に、定義したサービスを呼び出すクライアント コードを記述する必要があります。プロジェクトにgreetercli.goファイルを作成し、次のコードを記述します。package main import ( "context" "log" "google.golang.org/grpc" pb "example.com/hello" // 这里是我们定义的服务包名 ) const ( address = "localhost:50051" // 服务端地址 defaultName = "world" ) 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 := defaultName if len(os.Args) > 1 { name = os.Args[1] } 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) }
greetercli.go と同じディレクトリで次のコマンドを実行します。
$ go run greetersrv.go
出力がない場合は、gRPC サービスがローカルで正常に開始されたことを意味します。次に、新しいターミナル ウィンドウでクライアントを実行します。
$ go run greetercli.go Greeting: Hello world
ここでの出力結果は、定義した入力パラメータに従って調整できます。
これまで、この記事の内容は基本的に golang に gRPC をインストールするプロセス全体をカバーしてきたので、読者の役に立つことを願っています。もちろん、gRPC サービスを深く研究するには、さらに詳細と仕様を習得し、知識システムを継続的に改善および拡張する必要があります。
以上がgolang に gRPC をインストールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。