>  기사  >  백엔드 개발  >  단일 연결을 통해 여러 gRPC 서비스에 액세스할 수 있나요?

단일 연결을 통해 여러 gRPC 서비스에 액세스할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-04 03:36:02782검색

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에 대해 보다 효율적이고 최적화된 클라이언트 측 구현을 얻을 수 있습니다. 응용 프로그램입니다.

위 내용은 단일 연결을 통해 여러 gRPC 서비스에 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.