go は GRPC の使用法を示します

まず、Go プログラミング言語と gRPC ライブラリがインストールされていることを確認する必要があります。gRPC ライブラリは、次のコマンドでインストールできます。

go get -u google.golang.org/grpc

以下は、サーバー側とクライアント側を含む基本的な gRPC の例です。この例では、クライアントが 2 つの数値をサーバーに送信し、サーバーがそれらの合計を返す単純な計算サービスを示します。

まず、gRPC サービスとメッセージ形式を定義する .proto ファイルを定義します。というファイルを作成しcalculator.proto、次の内容を追加します。

syntax = "proto3";

package calculator;

service CalculatorService {
  rpc Add(AddRequest) returns (AddResponse) {}
}

message AddRequest {
  int32 num1 = 1;
  int32 num2 = 2;
}

message AddResponse {
  int32 sum = 1;
}

次に、次のコマンドを使用して gRPC コードを生成します。

protoc calculator.proto --go_out=plugins=grpc:.

これにより、calculator.pb.gogRPC サービスとメッセージの Go 定義を含むファイルが生成されます。

次に、サーバー側のコードを作成します。というファイルを作成しserver.go、次の内容を追加します。

package main

import (
	"context"
	"fmt"
	"log"
	"net"

	"google.golang.org/grpc"
	"calculator"
)

type server struct{
    
    }

func (s *server) Add(ctx context.Context, req *calculator.AddRequest) (*calculator.AddResponse, error) {
    
    
	num1 := req.GetNum1()
	num2 := req.GetNum2()
	sum := num1 + num2

	res := &calculator.AddResponse{
    
    
		Sum: sum,
	}

	return res, nil
}

func main() {
    
    
	lis, err := net.Listen("tcp", ":50051")
	if err != nil {
    
    
		log.Fatalf("Failed to listen: %v", err)
	}

	s := grpc.NewServer()
	calculator.RegisterCalculatorServiceServer(s, &server{
    
    })

	fmt.Println("Server listening on port 50051")
	if err := s.Serve(lis); err != nil {
    
    
		log.Fatalf("Failed to serve: %v", err)
	}
}

次に、クライアントコードを作成します。というファイルを作成しclient.go、次の内容を追加します。

package main

import (
	"context"
	"fmt"
	"log"

	"google.golang.org/grpc"
	"calculator"
)

func main() {
    
    
	conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure())
	if err != nil {
    
    
		log.Fatalf("Failed to connect: %v", err)
	}
	defer conn.Close()

	c := calculator.NewCalculatorServiceClient(conn)

	req := &calculator.AddRequest{
    
    
		Num1: 5,
		Num2: 10,
	}

	res, err := c.Add(context.Background(), req)
	if err != nil {
    
    
		log.Fatalf("Error while calling Add RPC: %v", err)
	}

	fmt.Printf("Sum: %v\n", res.GetSum())
}

これで、次のコマンドを実行してサーバーを起動できるようになります。

go run server.go

次に、クライアントを実行し、以下を実行して gRPC サービスを呼び出します。

go run client.go

おすすめ

転載: blog.csdn.net/ekcchina/article/details/131477778