제공된 예와 같이 여러 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에 대해 보다 효율적이고 최적화된 클라이언트 측 구현을 얻을 수 있습니다. 응용 프로그램입니다.
위 내용은 단일 연결을 통해 여러 gRPC 서비스에 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!