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

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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