」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 是否可以透過單一連線存取多個gRPC服務?

是否可以透過單一連線存取多個gRPC服務?

發佈於2024-11-10
瀏覽:227

Can I Access Multiple gRPC Services over a Single Connection?

透過單一連線存取多個gRPC 服務

在多個gRPC 服務駐留在同一伺服器上偵聽共用位址的情況下(如提供的範例中所示),與每個服務建立單獨的連線似乎是多餘的。本文旨在解決為什麼通常需要不同的連接,並探討如何利用單一連接來存取多個 gRPC 服務。

消除對多個連線的需求

有效存取託管的各種 gRPC 服務在同一伺服器上,您可以利用單一 gRPC 用戶端連線。這種方法涉及初始化 grpc.ClientConn 物件並將其傳遞給各個服務客戶端工廠,使它們能夠共享相同的底層連接。

func main() {
    cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure())
    if err != nil {
        log.Fatal(err)
    }
    c1 := pb.NewSubscriberServiceClient(cc)
    c2 := pb.NewDropperServiceClient(cc)
}

重複使用 Protobuf 產生的程式碼

pb.go 檔案中提供的產生的 gRPC 程式碼包含執行 RPC 所需的所有功能。因此,不需要額外的客戶端實現,除非需要在每次呼叫期間自動執行特定邏輯。

使用方便的介面(可選)

對於服務具有不同功能的情況方法名稱,您可以將它們合併到一個結構中以增加便利性。

type SubscriberDropper struct {
    pb.SubscriberServiceClient
    pb.DropperServiceClient
}

func main() {
    // ... as above ...
    sd := &SubscriberDropper{c1, c2}
}

透過利用此方法,您可以消除冗餘連接建立,從而為 gRPC 應用程式提供更有效率、更優化的用戶端實作。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3