近年、golang 言語はますます多くの開発者に支持されており、その軽量かつ同時実行性の高い機能により、一部の大企業のバックグラウンド サービスで広く使用されています。マイクロサービスやクラウドネイティブ技術の普及により、サーバー分野での golang の利用が増えており、golang の rpc フレームワーク grpc も広く使われるようになりました。
この記事では主に grpc のデプロイメントについて紹介します。デプロイメントの前に、golang と grpc の基本概念を理解する必要があります。
1. golang の基本概念
Golang は、Google から生まれた、静的に型付けされ、コンパイルされ、同時実行されるプログラミング言語です。 golang 言語には、理解する必要がある特別な概念がいくつかあります。
2. grpc の基本概念
grpc は、Google によって開発およびオープンソース化された、高性能でオープンソースの一般的な RPC フレームワークです。 grpc は、golang、C、Java などを含む複数の言語をサポートします。 grpc の特徴は次のとおりです。
3. grpc のデプロイメント
基本概念を理解した後、grpc のデプロイメントを紹介しましょう。
単純な grpc サーバー プログラムを作成するとします。コードは次のとおりです。
package main import ( "context" "fmt" "log" "net" "google.golang.org/grpc" pb "path/to/your/proto" ) const ( port = ":50051" ) type server struct{} func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { log.Printf("Received: %v", in.Name) 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{}) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } }
単純な grpc クライアント プログラムを作成するとします。コードは次のとおりです。
package main import ( "context" "log" "os" "time" "google.golang.org/grpc" pb "path/to/your/proto" ) const ( address = "localhost:50051" defaultName = "world" ) func main() { conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock()) 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] } ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) if err != nil { log.Fatalf("could not greet: %v", err) } log.Printf("Greeting: %s", r.Message) }
コンパイル コマンドは次のとおりです:
$ go build -o greeter_server ./server/main.go $ go build -o greeter_client ./client/main.go
$ ./greeter_server
実行後、次の出力が表示されます:
2021/05/07 10:37:30 Listening on :50051
$ ./greeter_client
を実行すると、次の出力が表示されます。
2021/05/07 10:38:28 Greeting: Hello world
このうち、world はデフォルトのパラメータであり、他のパラメータは変更できます。
$ ./greeter_client Tim
実行後、次の出力が表示されます:
2021/05/07 10:39:22 Greeting: Hello Tim
4. 概要
この記事では主に grpc のデプロイメントについて紹介します。これには、grpc サーバー プログラムの作成、grpc クライアント プログラムの作成、バイナリ ファイルのコンパイルと生成が含まれ、grpc サーバー プログラムとクライアント プログラムを実行します。 golang と grpc について詳しく知りたい場合は、公式ドキュメントやその他の関連資料を参照してください。
以上がgolang grpcをデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。