En escenarios en los que varios servicios gRPC residen en el mismo servidor escuchando en una dirección compartida, como en el ejemplo proporcionado, Puede parecer redundante establecer conexiones separadas para cada servicio. Este artículo tiene como objetivo abordar por qué normalmente se requieren distintas conexiones y explora cómo utilizar una única conexión para acceder a múltiples servicios gRPC.
Para acceder de manera efectiva a varios servicios gRPC alojados en el mismo servidor, puede aprovechar una única conexión de cliente gRPC. Este enfoque implica inicializar un objeto grpc.ClientConn y pasarlo a fábricas de clientes de servicios individuales, permitiéndoles compartir las mismas conexiones subyacentes.
func main() { cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure()) if err != nil { log.Fatal(err) } c1 := pb.NewSubscriberServiceClient(cc) c2 := pb.NewDropperServiceClient(cc) }
El código gRPC generado proporcionado en el archivo pb.go abarca toda la funcionalidad necesaria para realizar RPC. Por lo tanto, no hay necesidad de implementaciones adicionales del lado del cliente, a menos que sea necesario ejecutar automáticamente una lógica específica durante cada llamada.
Para casos en los que los servicios tienen características distintas nombres de métodos, puede fusionarlos en una sola estructura para mayor comodidad.
type SubscriberDropper struct { pb.SubscriberServiceClient pb.DropperServiceClient } func main() { // ... as above ... sd := &SubscriberDropper{c1, c2} }
Al utilizar este enfoque, puede eliminar el establecimiento de conexiones redundantes, lo que resulta en una implementación del lado del cliente más eficiente y optimizada para sus aplicaciones gRPC.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3