2016-09-24 4 views
0

두 원격 호스트 간의 모든 호출이 gRPC 외부에 설정된 TCP 연결을 사용하도록 설정할 수 있습니까? 또한 이 TCP 연결이 하나의 gRPC 호출에 대해 다중화 될 수 있는지, 호출이 양방향 일 수 있으며 gRPC 이 소켓을 닫지 않는지 여부를 확인하고 싶습니다.하나의 사전 설정된 TCP 연결을 통한 복수 양방향 gRPC 호출

gRPC의 두 끝이 방화벽에있는 경우 gRPC를 사용할 수 있습니다. 방화벽은 방화벽 내에서 시작된 단일 TCP 연결 만 설정할 수 있습니다.

요구 사항에 대해서만 C++ 및 Java 구현이 양쪽에있을 수 있습니다.

답변

1

아마도. 주요한 문제는 gRPC가 소켓을 닫는 것을 원하지 않는다는 것이다. gRPC가 소켓을 다시 풀어주기를 원하는지는 불분명합니다. 서버 측 또는 클라이언트 측에서이 작업이 필요한지 여부도 분명하지 않습니다.

gRPC는 단일 TCP 연결을 통해 여러 개의 양방향 호출을 자연스럽게 다중 전송할 수있는 HTTP/2를 사용합니다. C++에서는 provide it an existing fd도 사용할 수 있습니다. Java는 fd를 즉시 사용하는 것을 지원하지 않지만 JNI Netty EpollSocketChannel을 사용하여 가능해야합니다. 나는 단지 그 사람들이 오늘날 클라이언트 쪽에서 일하기를 기대할 것이다.

이것은 기능 요청으로 a GitHub issue의 가치가있는 것일 수 있습니다.

+0

가장 바람직한 경우는 API 호출이 호출 될 때 gRPC가 사용자에게 소켓을 해제하는 경우입니다. 그리고 서버 및 클라이언트 측 각각에서이 기능을 사용하는 것이 바람직합니다. Java 측에서는 소켓 일 필요는 없지만 fd를 나타내는 동등한 추상화는 무엇이든합니다. 기능 요청에 대한 Github 문제를 만듭니다. – Cap

+0

Github 요청을 열었습니다. 문제에 대한 통찰력을 제공하는 [응답] (https://github.com/grpc/grpc/issues/8217#issuecomment-249956071)이 있습니다. – Cap

관련 문제