ホームページ  >  記事  >  バックエンド開発  >  Go 言語で gRPC をインストールする方法について話しましょう

Go 言語で gRPC をインストールする方法について話しましょう

PHPz
PHPzオリジナル
2023-04-13 17:36:11735ブラウズ

gRPC は、言語を越えたリモート呼び出しを簡単に実装できる、Google のオープンソースの高性能 RPC フレームワークです。この記事では、Go 言語で gRPC をインストールし、簡単な gRPC サービスを構築する方法を紹介します。

  1. gRPC と protobuf のインストール

まず、gRPC と protobuf をインストールする必要があります。これらは 2 つの別個のパッケージですが、gRPC ではデータをシリアル化するために protobuf が必要です。インストールするには、次のコマンドを使用できます:

$ go get -u google.golang.org/grpc
$ go get -u github.com/golang/protobuf/protoc-gen-go
  1. Install protoc

次に、protobuf コンパイラー protoc をインストールする必要があります。 .proto ファイルを Go 言語で使用できるコードにコンパイルできます。 Linux システムでは、次のコマンドを使用してインストールできます:

$ sudo apt install -y protobuf-compiler

macOS システムでは、brew を使用してインストールできます:

$ brew install protobuf

または、公式 Web サイトにアクセスしてダウンロードしてインストールすることもできます手動で。

  1. .proto ファイルの作成

gRPC サービスの作成を開始する前に、RPC インターフェイスを定義する必要があります。これは、サービス インターフェイスとメッセージ形式を記述する .proto ファイルを通じて実行できます。簡単な例を次に示します。

syntax = "proto3";

package helloworld;

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

上の例では、Greeter というサービスを定義しました。これには、HelloRequest パラメータを受け入れ、HelloReply パラメータを返す SayHello という RPC インターフェイスがあります。各パラメータは protobuf のメッセージを使用して定義されます。

  1. protoc を使用したコードの生成

protobuf コンパイラー protoc を使用して Go コードを生成できるようになりました。次のコマンドを使用します。

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

これにより、.proto ファイルで定義したすべての構造とインターフェイスを含む helloworld.pb.go というファイルが生成されます。

  1. gRPC サービスの作成

今度は、gRPC サービスを作成します。簡単なサービスの例を次に示します。

package main

import (
    "context"
    "log"
    "net"

    "google.golang.org/grpc"

    pb "your_module/helloworld"
)

const (
    port = ":50051"
)

// server is used to implement helloworld.GreeterServer.
type server struct{}

// SayHello implements helloworld.GreeterServer
func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
    log.Printf("Received: %v", in.GetName())
    return &pb.HelloReply{Message: "Hello " + in.GetName()}, 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 %v", port)
    if err := s.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}

上記の例では、.proto ファイルで定義したインターフェイスを実装し、gRPC サーバーに登録しました。

  1. サービスの実行

最後に、gRPC サービスを実行し、クライアントを使用してテストできます。このサービスは、次のコマンドを使用して実行できます。

$ go run server.go

次に、別のターミナル ウィンドウで、次のコマンドを使用してクライアントを実行できます。

$ go run client.go

クライアントの実行後、リクエストが送信されます。 gRPC サーバーに送信され、応答メッセージが出力されます。

これは単純な例であり、より高度な機能を使用して、より強力な gRPC サービスを作成できます。

概要

この記事では、Go 言語で gRPC をインストールする方法を紹介し、簡単な gRPC サービスのサンプルを作成しました。 gRPC は、非常に高いパフォーマンスと効率で言語間でリモート呼び出しを行う簡単な方法を提供します。

以上がGo 言語で gRPC をインストールする方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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