用於資料推送的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 是伺服器到客戶端資料推送的正確選擇嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!