目次
1. gRPC のインストール
2. ProtoBuf ファイルを作成します
3. コードの生成
4. クライアントとサーバーのコードを作成する
5. 例を実行します
ホームページ バックエンド開発 Golang grpc golangのインストール

grpc golangのインストール

May 16, 2023 pm 12:50 PM

gRPC (Google リモート プロシージャ コール) は、プロトコル バッファ (ProtoBuf) を通じてサービス インターフェイスを定義し、多くのプログラミング言語をサポートする、高性能のクロス言語リモート プロシージャ コール フレームワークです。 gRPC は分散システムの開発で広く使用されており、その効率的なシリアル化および逆シリアル化メカニズム、HTTP/2 ベースのフロー制御、チャンク送信などの機能により、ネットワーク送信において明らかな利点が得られます。

この記事では主に、Golang に gRPC をインストールする方法を紹介し、簡単なクライアントとサーバーのサンプル コードを作成します。

1. gRPC のインストール

gRPC をインストールする前に、Protocol Buffers 3 をインストールする必要があります。プロトコル バッファーは、gRPC がコードを自動生成するために必要なツールであり、データをシリアル化するためのツールでもあります。

まず、Mac OS を例として、Protocol Buffers 3 のインストール パッケージをダウンロードします:

$ curl -OL https://github.com/google/protobuf/releases/download/v3.9.1/protobuf-all-3.9.1.zip
$ unzip protobuf-all-3.9.1.zip
$ cd protobuf-3.9.1
ログイン後にコピー

configure、make、make install を実行して Protocol Buffers をインストールします:

$ ./configure
$ make
$ sudo make install
ログイン後にコピー

インストール プロトコル バッファーの完了後、次のコマンドを使用して Go の gRPC と関連ツールをインストールします:

$ go get -u google.golang.org/grpc
$ go get -u github.com/golang/protobuf/protoc-gen-go
ログイン後にコピー

2. ProtoBuf ファイルを作成します

ProtoBuf ファイルは、サービス インターフェイスとデータ構造を定義するために使用されます。 、gRPC ツールを介して自動的に対応するコード (クライアント コードとサーバー コードを含む) を生成します。

ここでは、加算操作をサポートする電卓サービス インターフェイスを定義する簡単な例を作成します。

syntax = "proto3";

package calculator;

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

message AddRequest {
  int32 left = 1;
  int32 right = 2;
}

message AddResponse {
  int32 sum = 1;
}
ログイン後にコピー

この例では、AddRequest パラメーターを受け取る Add メソッドを含む、Calculator という名前のサービス インターフェイスを定義します。そしてAddResponseパラメータを返します。

AddRequest と AddResponse はどちらもメッセージ構造で、それぞれに 2 つのオペランドと加算の結果を表す int32 型の 2 つのフィールドが含まれています。

3. コードの生成

ProtoBuf ファイルを作成した後、次のコマンドを使用してクライアント コードとサーバー コードを生成します:

$ protoc --go_out=plugins=grpc:. calculator.proto
ログイン後にコピー

このコマンドは、calculator.pb という名前のファイルを生成します。 Go 用の Go ファイル。電卓サービスのクライアント コードとサーバー コードを定義します。

4. クライアントとサーバーのコードを作成する

クライアントとサーバーのコードを生成した後、実際のクライアントとサーバーの作成を開始できます。

最初はサーバー コードです。電卓インターフェイスを実装するために、server.go という名前のファイルを作成します:

package main

import (
    "context"
    "log"
    "net"

    pb "calculator/calculator"

    "google.golang.org/grpc"
)

type server struct{}

func (s *server) Add(ctx context.Context, in *pb.AddRequest) (*pb.AddResponse, error) {
    sum := in.Left + in.Right
    return &pb.AddResponse{Sum: sum}, nil
}

const (
    port = ":50051"
)

func main() {
    lis, err := net.Listen("tcp", port)
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    s := grpc.NewServer()
    pb.RegisterCalculatorServer(s, &server{})
    if err := s.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}
ログイン後にコピー

この例では、server という名前の構造体を定義し、電卓インターフェイス。 Add メソッドは、AddRequest パラメータを受け取り、2 つのオペランドの合計を計算し、AddResponse パラメータを返します。

最後に、gRPC フレームワークが提供する RegisterCalculatorServer メソッドを使用してサービスを gRPC サーバーに登録し、gRPC サーバーを起動します。

次にクライアント コードを記述するために、client.go という名前のファイルを作成し、電卓サービスによる簡単な加算の例を実装します。

package main

import (
    "context"
    "log"
    "os"
    "strconv"

    pb "calculator/calculator"

    "google.golang.org/grpc"
)

const (
    address     = "localhost:50051"
    defaultName = "world"
)

func main() {
    // Set up a connection to the server.
    conn, err := grpc.Dial(address, grpc.WithInsecure())
    if err != nil {
        log.Fatalf("did not connect: %v", err)
    }
    defer conn.Close()
    c := pb.NewCalculatorClient(conn)

    // Contact the server and print out its response.
    left, err := strconv.Atoi(os.Args[1])
    if err != nil {
        log.Fatalf("could not parse left operand: %v", err)
    }
    right, err := strconv.Atoi(os.Args[2])
    if err != nil {
        log.Fatalf("could not parse right operand: %v", err)
    }
    r, err := c.Add(context.Background(), &pb.AddRequest{Left: int32(left), Right: int32(right)})
    if err != nil {
        log.Fatalf("could not add: %v", err)
    }
    log.Printf("Sum: %d", r.Sum)
}
ログイン後にコピー

この例では、という名前のクライアント オブジェクトを作成します。クライアントに接続し、grpc.Dial メソッドを通じてサーバーに接続します。次に、コマンド ライン パラメーターから加算の 2 つのオペランドを解析し、Add メソッドを呼び出してリクエストを送信し、サーバーから返された結果を取得して出力します。

5. 例を実行します

両方のファイルを作成した後、次のコマンドを使用して 2 つのプログラムをコンパイルし、実行します:

$ go build server.go
$ go build client.go
$ ./server
ログイン後にコピー

次に、別の端末で次のコマンドを実行します。クライアントプログラムを実行するコマンド:

$ ./client 1 2
ログイン後にコピー

実行結果は計算結果3を出力します。

上記は Golang での gRPC のインストールと使用方法であり、gRPC を介して効率的な分散システムを作成することが非常に簡単になります。

以上がgrpc golangのインストールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golangの目的:効率的でスケーラブルなシステムの構築 Golangの目的:効率的でスケーラブルなシステムの構築 Apr 09, 2025 pm 05:17 PM

GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golang and C:Concurrency vs. Raw Speed Golang and C:Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

Golangの影響:速度、効率、シンプルさ Golangの影響:速度、効率、シンプルさ Apr 14, 2025 am 12:11 AM

speed、効率、およびシンプル性をspeedsped.1)speed:gocompilesquilesquicklyandrunseffictient、理想的なlargeprojects.2)効率:等系dribribraryreducesexexternaldedenciess、開発効果を高める3)シンプルさ:

Golang vs. Python:重要な違​​いと類似点 Golang vs. Python:重要な違​​いと類似点 Apr 17, 2025 am 12:15 AM

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとC:パフォーマンスのトレードオフ GolangとC:パフォーマンスのトレードオフ Apr 17, 2025 am 12:18 AM

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

Golang vs. C:パフォーマンスと速度の比較 Golang vs. C:パフォーマンスと速度の比較 Apr 21, 2025 am 12:13 AM

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

パフォーマンスレース:ゴラン対c パフォーマンスレース:ゴラン対c Apr 16, 2025 am 12:07 AM

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

See all articles