Em cenários onde vários serviços gRPC residem no mesmo servidor ouvindo em um endereço compartilhado, como no exemplo fornecido, pode parecer redundante estabelecer conexões separadas para cada serviço. Este artigo tem como objetivo abordar por que conexões distintas são normalmente necessárias e explora como utilizar uma única conexão para acessar vários serviços gRPC.
Para acessar efetivamente vários serviços gRPC hospedados no mesmo servidor, você pode aproveitar uma única conexão de cliente gRPC. Essa abordagem envolve inicializar um objeto grpc.ClientConn e passá-lo para fábricas de clientes de serviço individuais, permitindo que eles compartilhem as mesmas conexões subjacentes.
func main() { cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure()) if err != nil { log.Fatal(err) } c1 := pb.NewSubscriberServiceClient(cc) c2 := pb.NewDropperServiceClient(cc) }
O código gRPC gerado fornecido no arquivo pb.go abrange todas as funcionalidades necessárias para executar RPCs. Portanto, não há necessidade de implementações adicionais no lado do cliente, a menos que uma lógica específica precise ser executada automaticamente durante cada chamada.
Para casos em que os serviços têm nomes de métodos, você pode mesclá-los em uma única estrutura para maior conveniência.
type SubscriberDropper struct { pb.SubscriberServiceClient pb.DropperServiceClient } func main() { // ... as above ... sd := &SubscriberDropper{c1, c2} }
Ao utilizar essa abordagem, você pode eliminar estabelecimentos de conexão redundantes, resultando em uma implementação mais eficiente e otimizada do lado do cliente para seus aplicativos gRPC.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3