>  기사  >  백엔드 개발  >  단일 연결을 통해 여러 gRPC 서비스에 액세스하는 방법은 무엇입니까?

단일 연결을 통해 여러 gRPC 서비스에 액세스하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-03 19:28:29814검색

How to Access Multiple gRPC Services Over a Single Connection?

단일 연결을 통해 여러 gRPC 서비스에 액세스

각 gRPC 서비스마다 다른 소켓을 다이얼해야 하는 이유는 무엇입니까?

동일한 연결에서 실행되는 gRPC 서비스에 액세스하는 경우 서버에서는 각 서비스에 대해 별도의 연결을 설정할 필요가 없습니다. 단일 grpc.ClientConn을 활용하여 모든 서비스에 액세스할 수 있습니다.

연결을 공유하는 방법

연결을 공유하려면 원하는 엔드포인트를 사용하여 grpc.ClientConn을 생성하고 이를 pb.New*Client()는 사용하려는 각 서비스에 대한 함수입니다. 이를 통해 동일한 연결을 활용할 수 있습니다.

<code class="go">cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure())
if err != nil {
    log.Fatal(err)
}
c1 := pb.NewSubscriberServiceClient(cc)
c2 := pb.NewDropperServiceClient(cc)</code>

클라이언트 구현을 결합하기 위해 인터페이스를 사용합니까?

여러 서비스에 대해 클라이언트 측 gRPC 기능을 결합하기 위한 인터페이스를 생성할 수 있지만 pb.go에서 생성된 코드는 모든 필수 작업을 처리합니다. 새로운 기능을 구현하는 것은 특정 사용자 정의 로직에만 필요합니다.

고유한 메소드 이름을 가진 서비스의 경우 클라이언트를 번들로 묶는 편리한 구조체를 정의할 수 있습니다.

<code class="go">type SubscriberDropper struct {
    pb.SubscriberServiceClient
    pb.DropperServiceClient
}</code>

단일 연결은 클라이언트 측 구현을 단순화하고 코드 유지 관리성을 향상시킵니다.

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

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