【问题标题】:Can gRPC server run on top of another HTTP/2 web server like jetty/undertow/tomcat?gRPC 服务器能否在另一个 HTTP/2 Web 服务器(如 jetty/undertow/tomcat)之上运行?
【发布时间】:2016-03-28 08:06:03
【问题描述】:

我正在考虑将 gRPC 用于 b2b API,但我无法确定 gRPC 服务器是否可以在另一个支持 http2 的 Web 服务器之上运行?

在官方网站提供的示例中,gRPC API 始终在其内部基于 netty 的服务器上的特定端口上运行。

所以,假设我有几个 gRPC 应用程序,看起来我必须在不同的端口上运行它们。

但我希望有一个 API 入口点(一个 Web 服务器,如单个端口 443 上的码头)来管理 URL 并将它们映射到特定的 gRPC 服务实现。

gRPC 可以吗?

【问题讨论】:

    标签: java tomcat jetty wildfly grpc


    【解决方案1】:

    不,grpc-java 无法将 RPC 作为 servlet 响应。

    支持 HTTP/2 的 Servlet 容器非常新,gRPC 还没有对它们进行太多研究。使用异步 servlet API 来实现 gRPC 服务器(作为 Netty 服务器的替代品)似乎是可行的,但可能用于预告片。当服务器是 HTTP/2 时,如何发送预告片并不是 100% 清楚,因为 HTTP/1 的一种常见技术是让 servlet 手动执行 HTTP/2 中不存在的分块编码。无论如何,它没有实现。

    编辑:issue 现已打开 GitHub。

    【讨论】:

    • 我已经评论了这个问题。即使 servlet 规范不允许运行 gRPC 服务器,我们仍然可以提供足够的适配器,以便它可以在 jetty、undertow 和 tomcat 之上运行。这样至少 servlet 和 gRPC 可以共享同一个端口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多