grpc は Go 言語だけをサポートしているわけではありません。 grpc は HTTP/2 に基づく通信プロトコルで、多言語 RPC フレームワークをサポートしています。現在、C、Java、Go 言語バージョン (grpc、grpc-java、grpc-go) が提供されています。C バージョンは C、C、Node.js をサポートしています。 、Python、Ruby、Objective-C、PHP、C# がサポートされています。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
gRPC は HTTP/2 に基づく通信プロトコルで、多言語 RPC フレームワークをサポートし、モバイルおよび HTTP/ 向けに設計されています。 2. gRPC は HTTP/2 標準に基づいて設計されており、単一の TCP 接続上で双方向ストリーミング、フロー制御、ヘッダー圧縮、リクエストの多重化などの機能を提供します。これらの機能により、モバイル デバイスでのパフォーマンスが向上し、電力とスペースが節約されます。
RPC:Remote Procedure Callの略で、リモートプロシージャコール(リモートメソッドコール、リモートコールとも訳せます)と訳され、コンピュータの通信プロトコルです。このプロトコルを使用すると、ネットワーク間、プラットフォーム間、言語間などの問題を心配することなく、ローカル サービスを呼び出すのと同じくらい簡単にリモート サービスを呼び出すことができます。
gRPC メッセージのシリアル化方法では通常、Protobuf が使用されます。Protobuf はバイナリ形式で、サイズが小さく、ネットワーク転送が速く、占有帯域幅とトラフィックが少なく、呼び出しパフォーマンスが高くなります。
gRPC の機能
IDL
gRPC ProtoBuf を使用してサービスを定義する ProtoBuf は、Google によって開発されたデータ シリアル化プロトコル (XML、JSON に似ています)。 ProtoBuf はデータをシリアル化でき、データ ストレージ、通信プロトコルなどで広く使用されています。
多言語サポート
gRPC は複数の言語をサポートしており、言語に基づいてクライアントおよびサーバー関数ライブラリを自動的に生成できます。現在、C版grpc、Java版grpc-java、Go版grpc-goが提供されており、このうちgrpcはC、C、Node.js、Python、Ruby、Objective-C、PHP、C#などの言語に対応しています。 . grpc-java には Android 開発のサポートがあります。
HTTP2
gRPC は HTTP2 標準に基づいて設計されており、双方向ストリーミング、ヘッダー圧縮、リクエストの多重化など、より強力な機能を備えています。これらの機能は、帯域幅の節約、TCP リンク時間の短縮、CPU 使用率の節約、バッテリ寿命の延長などの大きなメリットをもたらします。同時に、gRPC はクラウド サービスや Web アプリケーションのパフォーマンスも向上させることができます。 gRPC はクライアント側とサーバー側の両方に適用できるため、クライアントとサーバー間の通信が透過的に実現され、通信システムの構築が簡素化されます。
grpc を使用する必要がある理由
優れたエコロジー: Google による支援。たとえば、nginx は grpc のサポートも提供します。 : たとえば、protobuf のパフォーマンスは json よりも高く、http2.0 のパフォーマンスは http1.1 よりも高くなります。
強力な型指定: コンパイラが問題の大部分を解決します。
ストリーミング処理 (http2.0 ベース): クライアント ストリーミング、サーバー ストリーミング、および双方向ストリーミングをサポート
概要grpc の利点を実現
2) json よりどれくらい速いですか?
3) protobuf が json より速いのはなぜですか?
1) 多重化
概略図
バイナリ フレーム層では、HTTP 2.0 は送信されるすべての情報をより小さなメッセージとフレームに分割し、それらをバイナリ形式でエンコードします。 HTTP1.x ヘッダー情報はヘッダー フレームにカプセル化され、リクエスト本文はデータ フレームにカプセル化されます。
プログラミング関連の知識の詳細については、プログラミング入門を参照してください。 !
以上がgrpc は go 言語のみをサポートしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。