GAE + Cloud SQL - 如何理解不同的层

Posted

技术标签:

【中文标题】GAE + Cloud SQL - 如何理解不同的层【英文标题】:GAE + Cloud SQL - How to understand different Tiers 【发布时间】:2015-06-02 14:24:38 【问题描述】:

HereGoogle 提供不同层次的 google-cloud-sql

我不明白什么时候有人需要升级非常基本的 d0 层。

我的问题是:

1) 如果您将 GAE 连接到 cloud-sql,sql 并发连接是否会将您的 GAE 应用程序的可扩展性限制为 250 个并发请求?我的意思是,GAE 会在每个请求上创建与 cloud-sql 的新连接吗?

1bis) 一个非常需要的 GAE 应用程序可以只使用一个 sql 连接吗?

2) 您能否给出一些 Dx 可能值得推荐的案例?

【问题讨论】:

【参考方案1】:

我不明白什么时候有人需要升级 基本 d0 层。

当它的性能证明不足以满足您的工作负载(查询的数量和大小)时,会导致对用户查询(或后端任务)的响应过慢。 https://cloud.google.com/sql/docs/instance-info 解释了如何查看有关给定 Cloud SQL 实例的所有信息。

1) 如果您将 GAE 连接到 cloud-sql,sql 会并发吗? 连接将您的 GAE 应用程序的可扩展性限制为 250 个并发 要求 ?我的意思是,GAE 是否会在上创建与 cloud-sql 的新连接 每个请求?

实际上,您的 PHP 代码会做到这一点,例如通过调用

$sql = new mysqli( ... etc, etc

如果以及何时需要 Cloud SQL 连接来处理请求。我不相信有任何方法可以在不同的服务器之间共享单个连接(并且多个并发请求通常由不同的服务器提供服务 - 尽管如果您的代码是线程安全的,那么单个服务器可能会同时响应几个请求,并且我猜你可以尝试在具有锁定功能的线程之间共享单个连接,尽管这可能会影响延迟并且无论如何只会给你少量的连接重用)。

1bis) 一个非常需要的 GAE 应用程序可以只使用一个 sql 连接吗?

“非常需要的 GAE 应用程序”无疑会同时使用多个服务器,并且单独的服务器无法共享 1 个 mySql 连接。

2) 您能否提供一些 Dx 可能值得推荐的案例?

您只需要与您的工作负载的大小/要求成比例的更大实例——更大的数据库和索引、大/繁重的请求(包括处理或返回大量数据的请求)、许多并发请求、繁重的后台“数据挖掘”同时进行,以此类推。

我建议使用https://cloud.google.com/products/calculator/ 上的计算器——如果您特别想探索,请单击 Cloud SQL 图标——以确定实例的预期每月成本。

至于您可以期望的性能回报,这完全取决于您的数据、索引、工作负载等,实际上没有捷径可走:相反,我建议构建一个有意义的最小样本您的 应用程序的需求和压力负载测试,首先在本地 MySQL 安装上对其进行调整,然后以不同的配置实验性地部署到 Cloud SQL 以测量效果。

一旦您遇到了构建和校准此类基准的麻烦,您当然可能还想尝试其他“云中 mysql”服务的竞争供应商,以确切了解您获得的性能为了你的钱 -- 不幸的是,我对市场上的所有产品都不太了解,但我的主要信息是使用你自己的基准,为你的有意义strong> 应用程序,而不是依赖“罐头”基准...

【讨论】:

很好的回答亚历克斯,非常感谢您抽出宝贵的时间。只是为了恢复:可以说,如果 d0 cloud-sql 提供 250 个并发连接,在最好的情况下,您的 gae-app 将能够处理最多这样的数量,对吗? @user2260245,如果您需要连接到 MySQL 来处理 每个 请求,可以。根据您的应用程序,您可能能够将一些数据存储在内存缓存和/或数据存储中,使您能够直接从此类“缓存”数据中提供 一些 请求,无需 MySQL 连接 - - 这可能会充分利用您处理并发请求的能力减少处理某些请求的延迟,这是一个巨大的双赢;但是,这项关键技术的实用性过于依赖于您特定应用程序的详细信息,我无法对此提供任何进一步的帮助!

以上是关于GAE + Cloud SQL - 如何理解不同的层的主要内容,如果未能解决你的问题,请参考以下文章

从GAE连接到两个cloudsql实例

如何解决 ModuleNotFoundError: No module named 'google.cloud' while importing automl in GAE Standard?

如何通过 Exposed 连接到 Google Cloud SQL

如何使用GAE收听Google表格,然后运行一组python代码?

如何在gae中部署django应用程序时包含migrate命令

创建或删除新 GAME 实例时,PubSub 增加/减少 Cloud SQL 内存