gRPC 是一種用於建構分散式系統的流行遠端過程呼叫 (RPC) 框架。當存取多個 gRPC 服務時,很容易為每個服務建立套接字連線。然而,這種方法可能會導致資源利用效率低落。
為了解決這個問題,gRPC 允許您透過單一連線重複使用多個服務。這不僅可以提高效率,還可以簡化您的程式碼。
撥打單一套接字
要與多個服務建立連接,請建立一個gRPC.ClientConn 物件並將其傳遞給每個服務的New*Client () 函數。這些函數將共享相同的連接,允許您透過單一套接字存取所有服務。
<code class="go">// ... grpc service server implementation ... func main() { cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure()) if err != nil { log.Fatal(err) } c1 := pb.NewSubscriberServiceClient(cc) c2 := pb.NewDropperServiceClient(cc) // ... }</code>
避免程式碼重複
而不是為每個函數建立單獨的結構體服務,您可以使用單一結構來實現這兩個服務的客戶端接口。此技術減少了程式碼重複並簡化了程式碼。
<code class="go">// ... grpc service server implementation ... type SubscriberDropper struct { pb.SubscriberServiceClient pb.DropperServiceClient } func main() { // ... as above ... sd := &SubscriberDropper{c1, c2} // ... }</code>
利用在單一連線上多工服務的能力,您可以簡化程式碼、提高效率並減少資源開銷。
以上是如何透過單一連線存取多個gRPC服務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!