【问题标题】:Serve gRPC and Restful service in one single Go App在一个 Go App 中提供 gRPC 和 Restful 服务
【发布时间】:2018-06-07 21:19:47
【问题描述】:

我有一个用 Go 制作的 restful 应用程序,现在我必须让这个应用程序也用作 gRPC 服务器(我已经创建了所需的文件)。我在端口 8000 中运行了 restful 端点,现在我有下一个问题:

  1. 我可以在同一个实例中同时提供 grpc 和 restful 应用吗?
  2. 我应该分配一个不同的端口来服务 gRPC 吗?
  3. 在这种情况下推荐的方法是什么?因为 grpc 存根将仅 被我们的一些微服务使用,但其余的将是 被某些应用的前端消耗
  4. 如果我可以同时服务,我应该如何初始化服务器?

【问题讨论】:

    标签: go grpc


    【解决方案1】:
    1. 是的!如果您希望将 gRPC 作为 RESTful 服务提供服务,则有一个gRPC Gateway 项目允许您注释您的 Protos,以便它们可以通过 REST 提供服务。

    2. 是的,但这有点棘手。 Go 中的 gRPC 服务器实现了net/http.Handler,因此您可以将其添加到现有的 HTTP 服务器中。让 URL 路径匹配是您需要尝试的事情,但这当然是可能的。

    3. 我认为没有任何推荐的方法。这主要取决于环境限制(例如是否有代理、如何加密连接等)。

    4. 先初始化gRPC Server,再添加到HTTP Server。

    【讨论】:

    • 非常感谢!我会考虑很多信息
    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 2023-01-24
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多