我有一个用 Go 编写的 restful 应用程序,现在我必须让这个应用程序也充当 gRPC 服务器(我已经创建了所需的文件)。我在端口 8000 上运行了 restful 端点,现在我有下一个问题:
- 我可以在同一个实例中同时使用 grpc 和 restful 应用程序吗?
- 我应该分配一个不同的端口来为 gRPC 服务吗?
- 在这种情况下推荐的方法是什么?因为 grpc stub 将只是 被我们的一些微服务消耗,但其余的将被 被一些应用程序的前端消耗
- 如果我可以为两者提供服务,我应该如何初始化服务器?
最佳答案
是的!如果您想将 gRPC 作为 RESTful 服务来提供服务,可以使用 gRPC Gateway允许您注释 Protos 的项目,因此它们可以通过 REST 提供。
是的,但这有点棘手。 Go 中的 gRPC 服务器实现了 net/http.Handler ,因此您可以将其添加到现有的 HTTP 服务器。让 URL 路径匹配是您需要尝试的事情,但这当然是可能的。
我认为没有任何推荐的方法。这主要取决于环境限制(例如是否有代理、您如何加密连接等)。
首先初始化gRPC Server,然后将其添加到HTTP server。
关于go - 在一个 Go 应用程序中提供 gRPC 和 Restful 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50750314/