ホームページ  >  記事  >  バックエンド開発  >  golang で grpc をインストールして使用する方法の簡単な分析

golang で grpc をインストールして使用する方法の簡単な分析

PHPz
PHPzオリジナル
2023-04-04 16:15:46723ブラウズ

Golang は人気のあるプログラミング言語であり、さまざまな種類のアプリケーションの開発にそれを使用する人が増えています。 Golang のスケーラビリティを高めるために、Google は gRPC と呼ばれる高性能 RPC フレームワークを開発しました。 gRPC は、デフォルトのシリアル化ツールとしてプロトコル バッファーを使用するため、他の RPC フレームワークよりも効率が高く、オーバーヘッドが少なくなります。この記事では、gRPCのインストール方法とGolangでの使い方を解説します。

1. gRPC のインストール

Golang では、gRPC をインストールするために 2 つの手順が必要です: 最初にプロトコル バッファーをインストールし、次に gRPC をインストールします。

  1. プロトコル バッファーのインストール
    プロトコル バッファーをすでにインストールしている場合は、この手順をスキップできます。それ以外の場合は、オペレーティング システムに適したバージョンを https://github.com/protocolbuffers/protobuf/releases からダウンロードしてインストールできます。
  2. gRPC のインストール
    プロトコル バッファーのインストールが正常に完了したら、次のコマンドを使用して gRPC をインストールできます:
$ go get -u google.golang.org/grpc

インストールが完了したら、$GOPATH に移動できます。 /src/google .golang.org/grpc ディレクトリで gRPC ソース コードを見つけます。

2. gRPC の使用

gRPC をインストールすると、Golang での RPC 通信にそれを使用できるようになります。 gRPC を使用して基本的なクライアントとサーバーを作成する方法は次のとおりです。

  1. サービスの定義

まず、.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 オブジェクトを返します。

  1. コードの生成

.proto ファイルを定義したら、プロトコル バッファー コンパイラーを使用してコードを生成する必要があります。次のコマンドを使用してコードを生成できます。

$ protoc --go_out=plugins=grpc:. *.proto

生成されたコードは、.proto ファイルと同じディレクトリに保存されます。

  1. サーバーの実装

次に、サーバーを実装するコードを記述する必要があります。以下は簡単な例です。

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」文字列とクライアントが指定した名前を連結して返します。

  1. クライアントの実装

最後に、サーバーが提供するサービスを使用するためにクライアント コードを作成する必要があります。簡単な例を次に示します。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。