データプッシュ用の gRPC: 実現可能性評価
概要
広く使用されている gRPC高性能 RPC フレームワークであり、データ ストリーミングによく使用されます。しかし、一般的な疑問が生じます。サーバーからクライアントにデータをプッシュするために gRPC を使用するのは適切なのでしょうか?この記事では、実装例とその適合性の分析を使用してこのトピックを検討します。
gRPC データ プッシュ: レビュー
gRPC におけるサーバーからクライアントへのデータ プッシュこれは、オープンなままでクライアントにデータを継続的に送信する応答ストリームを使用することによって実現されます。このアプローチは、データ プッシュをサポートする gRPC によって使用される基礎となるプロトコルである HTTP2 と連携しています。
実装例
サーバーからサーバーへの接続を示す次のコード スニペットを考えてみましょう。 gRPC でのクライアント データのプッシュ:
<code class="go">service Service { rpc RegularChanges (Void) returns (stream Change) {} }</code>
サーバー側の実装
<code class="go">func (self *MyServiceImpl) RegularChanges(in *pb.Void, stream pb.Service_RegularChangesServer) error { for { d, err := time.ParseDuration("1s") if err != nil { log.Fatalf("Cannot parse duration") break; } time.Sleep(d) stream.Send(&pb.Change{Name:"toto", Description:"status changed"}) } return nil }</code>
クライアント側の実装
<code class="go">for { change, err := streamChanges.Recv() if err != nil { log.Fatalf("Error retrieving change") } else { log.Println(change) } }</code>
適合性分析
gRPC は、その固有の設計と持続的な接続のサポートにより、データ プッシュに適しています。ただし、次の側面を考慮することが重要です:
以上がgRPC はサーバーからクライアントへのデータプッシュに正しい選択ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。