제공된 예와 같이 여러 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) }
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