【问题标题】:Google Cloud Platform: App Engine dispatch.yaml limit谷歌云平台:App Engine dispatch.yaml 限制
【发布时间】:2026-01-09 18:20:03
【问题描述】:

早安,

我们公司已开始摆脱虚拟机和服务器,并将我们所有的应用程序转移到 Google Cloud Platform。我们目前使用 1 个生产 GoogleCloud 平台项目,并且我们在 App Engine 上部署了多个应用程序。我们使用 dispatch.yaml 文件将传入请求路由到正确的 App Engine 服务。但是,我们最近遇到了 dispatch.yaml 文件记录过多的问题。

请参阅下面的一些条目示例:

  • 网址:“sabreaknews.com/” 服务:sabn

  • 网址:“c-api.connector.com/*” 服务:c-api

  • 网址:“myride.mobi/” 服务:myride

我们还有更多应用需要迁移到 Google Cloud Platform,但我们需要更好的解决方案来将所有这些域映射到 App Engine 服务。任何建议将不胜感激。

谢谢!

【问题讨论】:

    标签: google-app-engine google-cloud-platform


    【解决方案1】:

    一个简单的解决方案是创建另一个 Google App Engine (GAE) 项目。

    如果所有域之间没有通用代码,您可以为每个域创建一个单独的 GAE 项目。我认为这更清洁。

    如果有些域有公共代码而有些没有,那么您可以将具有公共代码的域放在同一个 GAE 项目中。

    如果所有域都有共同的代码,那么您有几个选择:

    • 使用符号链接来共享公共代码(这在 GAE 标准中更容易)
    • 为通用代码创建一个库并将该库添加到每个 GAE 项目中
    • 使用 GIT 子模块共享通用代码

    我不知道 Google 是否对 GAE 项目有限制,但您应该在提交解决方案之前了解这一点。

    【讨论】:

      【解决方案2】:

      这取决于您是否希望它们托管在一项服务上。分离微服务所需的内容是 IMO 对任何大型项目的要求,以及 GAE 的设计目的。示例是不需要任何大型 cpu 的前端服务,并且仅设计用于为浏览器前端(JS/HTML/CSS 等)提供服务。

      api 绝对应该在另一个服务/服务器上(一开始他们推荐 B 类,我相信?) F 是前端,B 是后端。然后,您可以对 API 进行速率限制或基于 IP 进行限制,并使前端可见并始终开启。

      最后,如果是这样的大范围,我肯定会推荐 Kubernetes。在开发过程中,您还可以使用 minikube 设置 kubectl 以进行本地开发。豆荚将是您的不同服务。

      Skaffold 还可以帮助您快速同步 docker。一旦你进入 Docker/Container 世界,真的没有回头路了!一旦您为每个服务拥有了适当的容器,您就可以使用基于 Google Container OS 的服务启动一个实例组,这些服务链接到您的 gcr.io 容器映像。

      您需要设置负载均衡器,在负载均衡器中映射您的自定义域以映射到您的实例组,然后 viola。届时,您将进行运行状况检查(您可以在创建负载均衡器时创建)来监控您的服务,如果有任何关闭,Balancer 将路由到启动的服务。

      抱歉信息太多了,希望你们一切顺利!

      【讨论】:

        【解决方案3】:

        App Engine 是您尝试构建的简单应用程序/服务的绝佳解决方案。每个 GCP 项目都会为您提供一个 App Engine,最多可以有 20 个服务。另请参阅以供参考(链接适用于 Python,但您可以从每个页面断开链接到您支持的语言):

        如果您的需求超出此描述,那么您可能应该考虑其他产品,例如 Cloud FunctionsCloud Run,它们都是 App Engine 的姊妹产品,属于 Google Cloud serverless 产品套件。

        • Cloud Functions 是为微服务架构量身定制的产品
        • 如果您的代码是您计划或当前正在使用容器的 CI/CD 管道的一部分,则应改用 Cloud Run;有关 Git-push-to-deploy (CD) 的更多信息,请参阅 this 和以 GH Actions (CI/CD) 为特色的 this community tutorial
        • 如果您使用 Cloud Functions 的 Functions Framework 在本地开发您的函数,在部署时,它们会被放入容器中并在 Cloud Run 上执行
        • 每个 GCP 项目最多只能使用 1 个 App Engine 应用和最多 20 个服务,Cloud Functions 和 Cloud Run 可以在每个区域部署最多 1000 个函数/服务
        • Cloud Functions 和 Cloud Run 服务也可以部署到多个区域(除非 App Engine 绑定到单个区域)
        • 这是关于 Cloud Functions 微服务架构的 3-part blog post series
        • 对于有移动需求的用户,有一个 Cloud Functions 衍生产品:Cloud Functions for Firebase,自然适合移动微服务架构
        • 如果您需要访问其他 GCP 工具/服务,Google Cloud Functions 是最佳选择,而 Cloud Functions for Firebase 则适用于那些使用 Google 的移动开发平台 Firebase 构建的移动应用程序的用户。更多关于它们之间的选择here
        • Cloud Functions 和 Cloud Run 还有一个 App Engine 尚不具备的重要功能:后台事件(触发执行);对于 App Engine,它只能是 HTTP。请参阅GCF eventsGCR Eventarc 了解更多信息。

        【讨论】: