タグ付けされた質問 「grpc」

2
プロトコルバッファ3で必須およびオプションが削除された理由
最近使っgRPCているproto3、私は気づいたrequiredとoptional新しい構文で削除されました。 必須/オプションがproto3で削除された理由を誰かが親切に説明してくれませんか?この種の制約は、定義を堅牢にするために必要であるように思われます。 構文proto2: message SearchRequest { required string query = 1; optional int32 page_number = 2; optional int32 result_per_page = 3; } 構文proto3: syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; }

3
リクエストまたはレスポンスがnullのgrpc呼び出しを定義できますか?
proto3のrpc構文はnullリクエストまたはレスポンスを許可しますか? 例えば、私は次のものと同等のものを望みます: rpc Logout; rpc Status returns (Status); rpc Log (LogData); それともnull型を作成するだけですか? message Null {}; rpc Logout (Null) returns (Null); rpc Status (Null) returns (Status); rpc Log (LogData) returns (Null);

3
protobuf vs gRPC
私はprotobufとgRPCを理解し、両方をどのように使用できるかを理解しようとしています。次のことを理解するのを手伝っていただけませんか。 OSIモデルを考えると、たとえば、レイヤー4のProtobufはどこにありますか? メッセージ転送を通して考えると、「フロー」はどのようになっていますか、gRPCはprotobufが見逃していることを何をしていますか? 送信者がprotobufを使用する場合、サーバーはgRPCを使用できますか、それともgRPCはgRPCクライアントのみが配信できるものを追加しますか? gRPCが同期および非同期通信を可能にする場合、Protobufはマーシャリング専用であるため、状態とは何の関係もありません-trueまたはfalse? RESTやGraphQLの代わりに通信するフロントエンドアプリケーションでgRPCを使用できますか? 私はすでに知っています-または私がそうすると思います-それ: Protobuf データ交換用のバイナリプロトコル Googleによる設計 クライアントとサーバーで生成された「構造」のような説明を使用して、メッセージをマーシャル解除します gRPC protobuf(v3)を使用します 再びグーグルから RPC呼び出しのフレームワーク HTTP / 2も利用します 同期および非同期通信が可能 すでにこのテクノロジーを使用している人にとっては、簡単な質問だと思います。それでも私を我慢して助けてくれてありがとう。また、ネットワークでテクノロジーを深く掘り下げてくれたことにも本当に感謝しています。

3
GRPCとRESTの違いは何ですか?
私はこのGRPCの説明を読んでおり、この図は興味深いものです。 トランスポート層はどのように機能しますか?ネットワーク経由の場合...なぜRPCと呼ばれるのですか?さらに重要なことに、これはサービス層(http要求を行うメソッドを持つクライアントのクラス)のAPIを実装するRESTとどのように違うのですか?
98 rest  grpc 

2
gRPC(HTTP / 2)はHTTP / 2を使用したRESTよりも高速ですか?
目標は、遅延とネットワークスループットが優れたトランスポートおよびアプリケーション層プロトコルを導入することです。現在、アプリケーションはHTTP / 1.1でRESTを使用しており、待ち時間が長くなります。このレイテンシーの問題を解決する必要があり、gRPC(HTTP / 2)またはREST / HTTP2のいずれかを使用できます。 HTTP / 2: 多重化 単一のTCP接続 テキストではなくバイナリ ヘッダー圧縮 サーバープッシュ 私は上記のすべての利点を認識しています。質問1:HTTP / 2でRESTを使用すると、HTTP / 1.1でRESTと比較するとパフォーマンスが大幅に向上すると確信していますが、これはgRPC(HTTP / 2)とどのように比較されますか? また、gRPCがproto bufferを使用していることも認識しています。これは、ネットワーク上で構造化データを送信するための最良のバイナリシリアル化手法です。Proto Bufferは、言語にとらわれないアプローチの開発にも役立ちます。私はそれに同意し、graphQLを使用してRESTに同じ機能を実装できます。しかし、私の懸念はシリアル化に関するものです。質問2:HTTP / 2がこのバイナリ機能を実装する場合、proto bufferを使用すると、HTTP / 2に加えて追加の利点が得られますか? 質問番号:3の観点では、ストリーミング、双方向ユースケース、どのgRPCは(HTTP / 2)(RESTとHTTP / 2)と比較しますか? 非常に多くありますブログ/動画(RESTとHTTP / 1.1)でgRPC(HTTP / 2)を比較し、インターネットでのアウトは次のように、この。先に述べたように、GRPC(HTTP / 2)と(RESTとHTTP / 2)を比較することの違いと利点を知りたいと思います。

9
エミュレーターを起動すると、なぜこのGRPCエラー「警告:EmulatorService.cpp:448:証明書ファイルが見つかりません」が表示されるのですか?
皆さん、こんばんは、私はJavaとAndroid Studioを数か月しか扱っていません。誰かがこのエラーを解決するのを手伝ってくれませんか?エミュレータが起動するたびに発生します。ありがとうございました エミュレーター:127.0.0.1:8554でGRPCサーバーを開始 エミュレーター:エミュレーター:警告:EmulatorService.cpp:448:証明書ファイルが見つかりません:C:\ Users \ Sawye.android \ emulator-grpc.cerセキュリティが無効になります。
30 grpc 

1
C#クラスから.protoファイルを生成したり、「Code First gRPC」を使用するにはどうすればよいですか?
asp.netコアWebアプリケーションで.NETコア3とgRPCを使用したい。既存のC#クラスとモデルオブジェクトから必要な.protoファイルを生成するにはどうすればよいですか?既存のコードを反映する.protoファイルを書き直したくありません。.protoファイルをクラスおよびモデルオブジェクトから自動生成したいのですが。 このメソッドを呼び出して、サービスクラスを登録します。 builder.MapGrpcService<MyGrpcService>(); public class MyGrpcService { public Task<string> ServiceMethod(ModelObject model, ServerCallContext context) { return Task.FromResult("It Worked"); } } ModelObject[DataContract]あり[DataMember]、注文属性があります。 これは可能ですか?私がオンラインで見る例はすべて.protoファイルから始まります。MyGrpcServiceクラスで必要なサービスメソッドを既に定義しました。しかし、多分これは物事を行う標準的な方法とはちょうど逆です... 古い.NETリモート処理のようなものは、リモートエンドポイントからインターフェイスを要求するだけで理想的であり、それは魔法のように双方向のgRPC通信に使用されますが、ビューが単純すぎる可能性があります。

3
GRPC:Java / Scalaで高スループットクライアントを作成する
非常に高速でメッセージを転送するサービスがあります。 現在、それはakka-tcpによって提供され、1分あたり350万のメッセージを作成します。grpcを試してみることにしました。残念ながら、その結果、スループットははるかに小さくなりました。1分あたり約50万メッセージはさらに少なくなります。 それを最適化する方法をお勧めしていただけませんか? 私のセットアップ ハードウェア:32コア、24 Gbヒープ。 grpcバージョン:1.25.0 メッセージ形式とエンドポイント メッセージは基本的にバイナリBLOBです。クライアントは100K-1M以上のメッセージを同じリクエストに(非同期で)ストリーミングし、サーバーは何も応答せず、クライアントは何もしないオブザーバーを使用します service MyService { rpc send (stream MyMessage) returns (stream DummyResponse); } message MyMessage { int64 someField = 1; bytes payload = 2; //not huge } message DummyResponse { } 問題:akka実装と比較してメッセージレートが低い。CPU使用率が低いので、別の言い方をしても、grpc呼び出しが実際に内部的にブロックされているのではないかと思います。onNext()確かに呼び出しはすぐには戻りませんが、テーブルにGCもあります。 この問題を緩和するために、より多くの送信者を生成しようとしましたが、あまり改善されませんでした。 私の調査結果 Grpcは、メッセージをシリアル化するときに、実際に各メッセージに8KBバイトのバッファーを割り当てます。スタックトレースを見てください: java.lang.Thread.State:BLOCKED(オブジェクトモニター上)com.google.common.io.ByteStreams.createBuffer(ByteStreams.java:58)at com.google.common.io.ByteStreams.copy(ByteStreams.java: 105)io.grpc.internal.MessageFramer.writeUncompressed(MessageFramer.javaでio.grpc.internal.MessageFramer.writeKnownLengthUncompressed(MessageFramer.java:230)でio.grpc.internal.MessageFramer.writeToOutputStream(MessageFramer.java:274)に:168)io.grpc.internal.MessageFramer.writePayload(MessageFramer.java:141)at io.grpc.internal.AbstractStream.writeMessage(AbstractStream.java:53)at io.grpc.internal.ForwardingClientStream.writeMessage(ForwardingClientStream。 java:37)io.grpc.internal.DelayedStream.writeMessage(DelayedStream.java:252)at io.grpc.internal。ClientCallImpl.sendMessageInternal(ClientCallImpl.java:473)at io.grpc.internal.ClientCallImpl.sendMessage(ClientCallImpl.java:457)at …
9 java  scala  grpc 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.