"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 단일 연결을 통해 여러 gRPC 서비스에 액세스할 수 있나요?

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

2024년 11월 10일에 게시됨
검색:138

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 애플리케이션에 대한 클라이언트 측 구현을 보다 효율적이고 최적화할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3