gRPC 服务器 运行 可以在另一个 HTTP/2 Web 服务器之上,例如 jetty/undertow/tomcat 吗?
Can gRPC server run on top of another HTTP/2 web server like jetty/undertow/tomcat?
我正在考虑将 gRPC 用于 b2b API,我不太清楚 gRPC 服务器是否可以 运行 在另一个支持 http2 的 Web 服务器之上?
在官方网站上提供的示例中,gRPC API 始终 运行 在其基于特定端口的内部 netty 服务器上运行。
因此,如果假设我有多个 gRPC 应用程序,那么我似乎必须 运行 它们在不同的端口上。
但我想要一个单一的 API 入口点(一个 web 服务器,如单一端口 443 上的 jetty)来管理 URL 并将它们映射到特定的 gRPC 服务实现。
gRPC 可以吗?
不,grpc-java 不能作为 servlet 响应 RPC。
支持 HTTP/2 的 Servlet 容器非常新,gRPC 还没有对它们进行太多研究。使用异步 servlet API 来实现 gRPC 服务器(作为 Netty 服务器的替代方案)似乎确实可行,但可能用于预告片除外。当服务器为 HTTP/2 时如何发送预告片并不是 100% 清楚,因为 HTTP/1 的常见技术是让 servlet 手动执行分块编码,这在 HTTP/2 中不存在。无论如何,它都没有实现。
编辑:issue 现已开放 GitHub。
我正在考虑将 gRPC 用于 b2b API,我不太清楚 gRPC 服务器是否可以 运行 在另一个支持 http2 的 Web 服务器之上?
在官方网站上提供的示例中,gRPC API 始终 运行 在其基于特定端口的内部 netty 服务器上运行。
因此,如果假设我有多个 gRPC 应用程序,那么我似乎必须 运行 它们在不同的端口上。
但我想要一个单一的 API 入口点(一个 web 服务器,如单一端口 443 上的 jetty)来管理 URL 并将它们映射到特定的 gRPC 服务实现。
gRPC 可以吗?
不,grpc-java 不能作为 servlet 响应 RPC。
支持 HTTP/2 的 Servlet 容器非常新,gRPC 还没有对它们进行太多研究。使用异步 servlet API 来实现 gRPC 服务器(作为 Netty 服务器的替代方案)似乎确实可行,但可能用于预告片除外。当服务器为 HTTP/2 时如何发送预告片并不是 100% 清楚,因为 HTTP/1 的常见技术是让 servlet 手动执行分块编码,这在 HTTP/2 中不存在。无论如何,它都没有实现。
编辑:issue 现已开放 GitHub。