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 - 如何理解不同的层的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 ModuleNotFoundError: No module named 'google.cloud' while importing automl in GAE Standard?
如何通过 Exposed 连接到 Google Cloud SQL
如何使用GAE收听Google表格,然后运行一组python代码?